В спецификации Adobe 32000 для PDF/A указано, что данные XFA могут храниться в специальном месте в PDF/A- 2 подтверждающий PDF. Вот текст этого раздела.Как перенести данные XFA xml в файл соответствия PDF/A-2 с помощью iText/XFA Worker
Включение XFA Datasets в PDF/A-2 файл удовлетворял Для поддержки PDF/A-2, соответствующие файлы, ExtensionLevel 3 добавлена поддержка данных форм XML (РФА наборов данных) через имя дерева XFAResources, который является частью словарного имени каталога документов.
(См. «ТАБЛИЦА 3.28 Записи в словаре имен» на стр. 23.) Хотя формы Acrobat (и данные формы) равны , разрешенным в файле соответствия PDF/A-2, форматы XML не являются. Такие формы XML указываются как потоки XDP , на которые ссылаются словари интерактивной формы. Потоки XDP могут содержать наборы данных XFA.
Для приложений, преобразующих PDF документы в формат PDF/A-2, имя дерева XFAResources поддерживает перемещение данных форм XML из XDP потоков в PDF документе в XFAResources имя дерева.
В XFAResources имени дерево состоит из имени строки и косвенной ссылки на поток. Строка имя создается во время преобразования документа в файл соответствия PDF/A-2. Поток содержит элемент XFA, состоящий из элементов.
В дополнении к значениям данных для формы XML-полей, элементы позволяют хранение и поиск других типов информации, которые могут быть полезны для других рабочих процессов, в том числе данные, которые не связаны с полой формы, и один или более XML-подпись (ы).
Смотрите XML Архитектуру, XML Forms Architecture (РФ) Спецификация, версия 2.6 в библиографии
У нас есть форма РФА, что мы перейдем к XML и теперь нужно преобразовать этот документ в формат PDF/A- 2.
В настоящее время мы тестируем Работника XFA, чтобы убедиться, что это позволит нам сделать это, я не смог найти образец Работника XFA, который сделает это за нас.
Сначала я попытался сгладить работу с XFA Worker, но полностью удалит данные и больше не может быть извлечен.
Как вы получаете данные XFA xml в месте, которое Adobe говорит, чтобы положить его в XFA Worker?
ОБНОВЛЕНИЕ: Спасибо Бруно, мой код не позволяет мне преобразовать форму XFA в формат PDF/A-2. Вот код, который я использовал.
xfa.fillXfaForm(new ByteArrayInputStream(xmlSchemaStream.toByteArray()));
stamper.close();
reader.close();
try (ByteArrayOutputStream outputStreamDest = new ByteArrayOutputStream()) {
PdfReader pdfAReader = new PdfReader(output.toByteArray());
PdfAStamper pdfAStamper = new PdfAStamper(pdfAReader, outputStreamDest, PdfAConformanceLevel.PDF_A_2A);
....
и я получаю com.itextpdf.text.pdf.PdfAConformanceException ошибки: документы только в формате PDF/A может быть открыт в PdfAStamper.
Итак, теперь я предполагаю, что новый PdfAStamper не является конвертером, а просто считывает в массиве байтов XFA PDF.
Er ... Конечно, 'PdfAStamper' не является конвертером. Это класс, который позволяет печатать дополнительный контент (водяные знаки, номера страниц, заполнять формы) в существующий документ PDF/A. Вы не можете «подать» его форму XFA. 'PdfAStamper' ожидает документ PDF/A. –
Вы сказали, что используете XML Worker для преобразования данных XFA в документ PDF/A, но теперь вы изменили свой вопрос, сказав, что используете 'PdfAStamper'. Это очень запутанно. Я предположил, что вы использовали XSLT для внедрения XML в форме XFA для преобразования данных XFA в HTML. Я предположил, что вы конвертируете этот HTML в PDF с помощью XML Worker. Теперь я больше не уверен. –
Извините Бруно, я совершенно не знаком с XFA и PDF/A. Суды диктуют, что мы его используем. Но у меня есть XFA PDF для суда, я беру XML, сгенерированный JAXB в виде байтового массива, и использую XMLWorker для заполнения уже созданного файла Court PDF этим байтовым массивом. Когда это будет сделано, я должен преобразовать их форму XFA в PDF/A в Java-код, без HTML, без XSLT, чистой Java. Затем мне нужно перенести данные XFA, которые у меня были в JAXB XML в каталог. – user1567291