Библиотеки и платформы, упомянутые здесь, хороши, но если все, что Вы хотите сделать, заполняют форму и сглаживают его, я рекомендую инструмент командной строки, названный pdftk (Инструментарий PDF).
Видят https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit /
, можно назвать командную строку от php, и команда
pdftk
formfile.pdf fill_form
fieldinfo.fdf output
outputfile.pdf flatten
, необходимо будет найти формат файла FDF для генерации информации для заполнения полей. Вот хорошая ссылка для этого:
http://www.tgreer.com/fdfServe.html
[Редактирование: вышеупомянутая ссылка, кажется, вне комиссии. Вот еще некоторая информация...]
, команда pdftk может генерировать файл FDF из файла формы PDF. Можно тогда использовать сгенерированный файл FDF в качестве образца. Поля формы являются частью файла FDF, который похож
...
<< /T(f1-1) /V(text of field) >>
<< /T(f1-2) /V(text of another field) >>
...
, Вы могли бы также проверить php-pdftk, который является библиотекой, характерной для PHP. Я не использовал его, но комментатор ГЃlvaro (ниже) рекомендует его.
Да, сериализация Java по умолчанию работает для циклических ссылок. Когда вы сериализуете объект C, поле будет содержать обратную ссылку на уже сериализованный объект A вместо его повторной сериализации.
Да, это так.
Я провел этот очень, очень простой тест и по крайней мере завершил сериализацию. Я предполагаю, что это правильно, но вы можете проверить это с помощью некоторых дополнительных строк.
import java.io.*;
class A implements Serializable { B b; }
class B implements Serializable { C c; }
class C implements Serializable { A a; }
class Test {
public static void main( String [] args ) throws IOException {
A a = new A();
a.b = new B();
a.b.c = new C();
a.b.c.a = a;
new ObjectOutputStream( new ByteArrayOutputStream( ) ).writeObject( a );
System.out.println("It works");
}
}
Да, сериализация Java работает для циклических ссылок, прочтите здесь , чтобы получить дополнительную информацию, которая поможет вам понять, что может делать сериализация Java.
Фактически вы можете просмотреть ссылки из первых рук, если вы сериализуйте свой объект в XML. Дочерние объекты сериализуются только один раз. Любая ссылка (где угодно в сериализованной структуре) на дочерний объект, который уже был сериализован, будет просто указывать на этот объект в файле.
Однако сериализация циклических ссылок может стать немного беспорядочной, поэтому вы можете избежать их, если вы можете.