2015-02-23 4 views
0

Я работаю над проектом, который должен читать pdf-файл/форму, которая содержит значение, заполненное кодом Java.значения поля acroform не работают в icepdf

form.setField("permitnumber", p.getApplicationorno()); 
      form.setField("amountpaid", p.getAmount_app()); 
      form.setField("estimatedfeet", "56"); 
      form.setField("receiptnumber", "123415"); 
      form.setField("validity", "5"); 

Теперь моя проблема, значения, которые были установлены на полях формы в формате PDF прекрасно работает на Adobe PDF Reader, но не на ICEPdf Viewer. Что мне здесь не хватает? Почему ICEPdf не может отображать значения из формы PDF?

+1

Какую библиотеку PDF вы использовали для заполнения значений? Можете ли вы поделиться образцом PDF? – mkl

+0

Я использую iText для заполнения значений в PDF ... –

+0

В зависимости от исходного документа и вашего кода iText создает или не создает видимость полей формы. Каков ваш пробег? – mkl

ответ

0

При установке значения поля с помощью IText, если af вашего AcroFields экземпляра, попробуйте сделать

af.setGenerateAppearances(true); 

перед установкой значения.


Спецификация в формате PDF ISO 32000-1 определяет NeedAppearances флаг, ср Таблица 218 - Записи в интерактивной форме словарь. Если он установлен в true, средство просмотра PDF знает, что оно должно создавать потоки внешнего вида для полей формы.

IText интерпретирует этот флаг и только создает внешний вид потоки при заполнении формы, если флаг не верно (если правда, зритель, как ожидается, вновь создать такие выступления в любом случае).

Ooo по крайней мере используется для создания форм в формате PDF с этим флагом, установленным на true. Adobe Reader уважает флаг и создает видимость, если true. Вероятно, ваш просмотрщик PDF не соблюдает флаг, вероятно, он всегда ожидает, что внешность уже существует в документах.

Используя setGenerateAppearances(true), вы можете обеспечить создание потока внешнего вида. Если это предположение верно, это должно устранить вашу проблему.

Смежные вопросы