2016-08-16 3 views
0

Я создаю PDF-файлы с полями формы программным образом с помощью Apache PDFBox (Java). Однако при загрузке PDF с помощью PDF.JS/Firefox содержимое этих полей не отображается. При открытии файлов с помощью автономного средства просмотра или Chrome содержимое этих полей отображается правильно.Форма PDF Содержание поля не отображается

Я знаю, что PDF.JS не поддерживает редактирование AcroForms, но я читал, что просто отображение не должно быть проблемой.

Вот сгенерированный PDF, который не отображается правильно с pdf.js/Firefox:

https://drive.google.com/file/d/0B197M5cYPdP4U2hhV1U2UURpSE0/view?usp=sharing

+1

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

+0

PDF был сгенерирован LibreOffice 4.2.8.2 (Файл -> Экспорт в формате PDF). Затем поля были заданы с помощью PDFBox. Но я также пытался заполнить форму LibreOffice, и контент тоже не показан ... Поэтому я предполагаю, что проблема связана с генерацией PDF с помощью LibreOffice. В настоящее время я пытаюсь создать PDF-файл с другим приложением (Acrobat DC Pro). – enigma969

+1

OpenOffice/LibreOffice имеет тенденцию экспортировать PDF-файлы с флагом ** NeedAppearances **, установленным в true; это требует, чтобы программа просмотра PDF создавала видимость. Процессоры PDF, заполняющие такие PDF-файлы, часто реагируют на этот флаг, не создавая самих явлений; В конце концов, программа просмотра PDF попросит генерировать появления. К сожалению, многие неполные читатели в формате PDF не знают, как создавать выступления. Таким образом, они игнорируют флаг и показывают, что они находят: никаких явлений. – mkl

ответ

0

Решение было установить флаг «NeedAppearances» в ложь, как и MKL Маруан Sahyoun упоминается в Комментарии. Благодарю.

PDDocumentCatalog docCatalog = _pdfDocument.getDocumentCatalog(); 
PDAcroForm acroForm = docCatalog.getAcroForm(); 
acroForm.setNeedAppearances(false);