Создание AcroForms - Создание заполняемых PDF в PHP
Добавление поля формы в PDF-документ
Класс Document предоставляет коллекцию с именем Form, которая помогает управлять полями формы в PDF-документе.
Чтобы добавить поле формы:
- Создайте поле формы, которое вы хотите добавить.
- Вызовите метод add коллекции Form.
Этот пример показывает, как добавить TextBoxField. Вы можете добавить любое поле формы, используя тот же подход:
- Сначала создайте объект поля и установите его свойства.
- Затем добавьте поле в коллекцию Form.
Добавление TextBoxField
Текстовое поле - это элемент формы, который позволяет получателю вводить текст в вашу форму. Это будет использоваться в любое время, когда вы хотите предоставить пользователю свободу вводить то, что он хочет.
Следующие фрагменты кода показывают, как добавить TextBoxField в PDF документ.
// Открыть документ
$colors = new Color();
$document = new Document($inputFile);
$page = $document->getPages()->get_Item(1);
// Создать поле
$textBoxField = new TextBoxField($page, new Rectangle(110, 300, 310, 320));
$textBoxField->setPartialName("textbox1");
$textBoxField->setValue("Некоторое значение в текстовом поле");
$border = new Border($textBoxField);
$border->setWidth(5);
$border->setDash(new Dash(1, 1));
$textBoxField->setBorder($border);
$textBoxField->setColor($colors->getGreen());
// Добавить поле в документ
$document->getForm()->add($textBoxField, 1);
// Сохранить измененный PDF
$document->save($outputFile);
$document->close();
Добавление RadioButtonField
Радиокнопка чаще всего используется для вопросов с несколькими вариантами ответов, в ситуации, когда может быть выбран только один ответ. Следующие фрагменты кода показывают, как добавить RadioButtonField в PDF документ.
// Открыть документ
$document = new Document($inputFile);
// добавить страницу в PDF файл
$page = $document->getPages()->get_Item(1);
// создать объект RadioButtonField с номером страницы в качестве аргумента
$radio = new RadioButtonField($page);
// добавить первую опцию радио-кнопки и указать ее местоположение
// с использованием объекта Rectangle
$radio->addOption("Test1", new Rectangle(20, 720, 40, 740));
// добавить вторую опцию радио-кнопки
$radio->addOption("Test2", new Rectangle(120, 720, 140, 740));
// добавить радио-кнопку в объект формы объекта Document
$document->getForm()->add($radio);
// сохранить PDF файл
$document->save($outputFile);
$document->close();
Следующий фрагмент кода показывает шаги по добавлению RadioButtonField с тремя опциями и размещению их внутри ячеек таблицы.
$colors = new Color();
$document = new Document();
$page = $document->getPages()->add();
$table = new Table();
$table->setColumnWidths("120 120 120");
$page->getParagraphs()->add($table);
$r1 = $table->getRows()->add();
$c1 = $r1->getCells()->add();
$c2 = $r1->getCells()->add();
$c3 = $r1->getCells()->add();
$rf = new RadioButtonField($page);
$rf->setPartialName("radio1");
$document->getForm()->add($rf, 1);
$opt1 = new RadioButtonOptionField();
$opt2 = new RadioButtonOptionField();
$opt3 = new RadioButtonOptionField();
$opt1->setOptionName("Item1");
$opt2->setOptionName("Item2");
$opt3->setOptionName("Item3");
$opt1->setWidth(15.0);
$opt1->setHeight(15.0);
$opt2->setWidth(15.0);
$opt2->setHeight(15.0);
$opt3->setWidth(15.0);
$opt3->setHeight(15.0);
$rf->add($opt1);
$rf->add($opt2);
$rf->add($opt3);
$border1 = new Border($opt1);
$opt1->setBorder($border1);
$opt1->getBorder()->setWidth(1.0);
$opt1->getBorder()->setStyle(BorderStyle::$Solid);
$opt1->getCharacteristics()->setBorder($colors->getBlack());
$opt1->getDefaultAppearance()->setTextColor($colors->getRed()->toRgb());
$opt1->setCaption(new TextFragment("Элемент1"));
$border2 = new Border($opt2);
$opt3->setBorder($border2);
$opt3->getBorder()->setWidth(1.0);
$opt3->getBorder()->setStyle(BorderStyle::$Solid);
$opt2->getCharacteristics()->setBorder($colors->getBlack());
$opt2->getDefaultAppearance()->setTextColor($colors->getRed()->toRgb());
$opt2->setCaption(new TextFragment("Элемент2"));
$border3 = new Border($opt3);
$opt3->setBorder($border3);
$opt3->getBorder()->setWidth(1.0);
$opt3->getBorder()->setStyle(BorderStyle::$Solid);
$opt3->getCharacteristics()->setBorder($colors->getBlack());
$opt3->getDefaultAppearance()->setTextColor($colors->getRed()->toRgb());
$opt3->setCaption(new TextFragment("Элемент3"));
$c1->getParagraphs()->add($opt1);
$c2->getParagraphs()->add($opt2);
$c3->getParagraphs()->add($opt3);
$document->save($outputFile);
$document->close();
Добавление поля ComboBox
Combo Box — это поле формы, которое добавит выпадающее меню в ваш документ.
Следующие фрагменты кода показывают, как добавить поле ComboBox в PDF-документ.
$document = new Document($inputFile);
// создать объект поля ComboBox
$page = $document->getPages()->get_Item(1);
$combo = new ComboBoxField($page, new Rectangle(100, 600, 150, 616));
// добавить опцию в ComboBox
$combo->addOption("Red");
$combo->addOption("Yellow");
$combo->addOption("Green");
$combo->addOption("Blue");
// добавить объект combo box в коллекцию полей формы объекта документа
$document->getForm()->add($combo);
// сохранить PDF-документ
$document->save($outputFile);
$document->close();
Добавление подсказки к форме
Класс Document предоставляет коллекцию с именем Form, которая управляет полями формы в PDF-документе. Чтобы добавить всплывающую подсказку к полю формы, используйте класс Field AlternateName. Adobe Acrobat использует ‘альтернативное имя’ как всплывающую подсказку для поля.
Приведенные ниже фрагменты кода показывают, как добавить всплывающую подсказку к полю формы с помощью PHP.
$document = new Document($inputFile);
$textBoxField = $document->getForm()->get("textbox1");
// Установить всплывающую подсказку для текстового поля
$textBoxField->setAlternateName("Подсказка для текстового поля");
// сохранить PDF документ
$document->save($outputFile);
$document->close();