PDFTK не работает для заполнения pdf-формы, созданной в жизненном цикле

Я создал форму в livecycle es 2, и я пытаюсь использовать pdftk для заполнения формы, но она не работает. В нем говорится, что он успешно заполняет его, но когда я пытаюсь открыть pdf, он просто дает мне сообщение об ошибке «Если это сообщение не будет заменено соответствующим содержимым документа, ваш просмотрщик PDF может не отображать этот тип документ."

Ниже приведен код, который я использую для заполнения pdf

<?php error_reporting(E_ALL); ini_set('display_errors', 1); $Clicks = "567"; $Impressions = "43,434"; $Cost = "$45.44"; $fdf = '%FDF-1.2 1 0 obj<</FDF<< /Fields[ <</T(Clicks)/V('.$Clicks.')>> <</T(Impressions)/V('.$Impressions.')>> <</T(Cost)/V('.$Cost.')>> ] >> >> endobj trailer <</Root 1 0 R>> %%EOF'; file_put_contents('fields.fdf', $fdf); $results = shell_exec("pdftk REPORT.pdf fill_form fields.fdf output FINAL_REPORT.pdf flatten"); 

После некоторых исследований выяснилось, что формы PDF, созданные в живых циклах, создаются как формы XFA, а не акроформы. Не уверен, в чем разница, но кто-то сделал что-то подобное и смог заставить его работать.

спасибо

В PDF есть два варианта интерактивных форм:

  • Технология AcroForm: в этом случае форма определяется с использованием синтаксиса PDF. Все поля имеют фиксированные координаты. Они не могут динамически меняться. Если данные не подходят, поля не растут. Если данных меньше, тогда есть пространство, поля не сжимаются. Такие формы обычно создаются с использованием Adobe Acrobat, OpenOffice, …
  • Архитектура XML-форм: в этом случае PDF служит контейнером для XML. Данные форматируются как XML, используя схему по вашему выбору. Форма описывается с использованием XML, который соответствует схеме ваших данных. Когда XML отображается в момент открытия документа, формы могут быть очень динамичными. Они могут адаптироваться к данным (в отличие от AcroForms, где данные должны адаптироваться к форме). Подобные формы создаются с использованием Adobe LiveCycle Designer.

В вашем вопросе я вижу, что вы используете формат данных форм (FDF). FDF – это формат, совместимый с технологией AcroForm. Он несовместим с XFA. Чтобы заполнить форму XFA, вам нужно вставить XML-файл, а не файл FDF.

PdfTk – это инструмент командной строки, основанный на устаревшей версии iText. Эта версия iText датируется до того, как функциональность XFA поддерживалась в iText. Это означает, что вы не сможете заполнить форму, созданную в LiveCycle, используя PdfTk.

Поскольку нет никаких деловых отношений между создателями PdfTk и владельцами iText (я являюсь одним из этих владельцев), очень мало шансов, что PdfTk когда-либо будет поддерживать XFA. iText Software предлагает инструмент под названием XFA Worker, но это закрытое дополнение к надписи, написанное поверх iText. Я не знаю каких-либо инструментов с открытым исходным кодом, поддерживающих «заполнение и сглаживание XFA».

Я нахожусь в одной лодке. Я использую pdftk почти 10 лет, чтобы заполнить форму PDF, а затем свернуть его в файл PDF (без формы).

Я только что понял, как сделать эту работу с последней версией LiveCycle Designer ES4 (v.11).

  1. Файл-> Свойства формы-> Совместимость
  2. Нажмите кнопку « Отменить»
  3. Затем вы должны сохранить свой PDF как статическую PDF-форму ( NOT Dynamic XML Form)

Пара скриншотов. введите описание изображения здесь

введите описание изображения здесь

Запустите команду pdftk, как всегда, и она должна работать.

Я провел большую часть утра по этой теме, потому что мне пришлось перейти с LifeCycle v.8 (на старой XP VM) на LifeCycle v.11.

Я знаю, что это было какое-то время, но на всякий случай кто-то исследует это, вот как я решаю эту проблему:

Во-первых, если вы не возражаете удалять формат XFA из файла, тем самым создавая новый «шаблон» pdf, чтобы заполнить форму, а затем просто удалите дополнительные XML-данные со следующей командной строкой:

"pdftk xfa-pdf-form.pdf выход acro-pdf-form.pdf drop_xfa"

Если это все еще дает вам проблемы, начните с оригинального файла XFA, а в LiveCylce сохраните файл в виде Adobe Static PDF. Или, используя Acrobat X Pro, я думаю, вы тоже можете это сделать. Затем повторите шаг выше, вызвав командную строку drop_xfa.

На данный момент у вас должен быть обычный Acroform.

Отсюда вы сможете сохранить данные файла ouput в виде XFDF или FDF. Тогда это дело как обычно.

Спасибо @enriquein, который указал мне в правильном направлении.