2013-12-11 3 views
3

Я использую LibreOffice 4.1.3.2 для получения заполняемых PDF:значение AcroForm пропавшего после выпрямления

  1. создал документ Writer
  2. установить некоторые текстовые и тестовые поля
  3. вывезенных в PDF

Открытие pdf-файла с помощью Acrobar Reader показывает правильный заполняемый pdf-файл.
Далее я использую iTextSharp 5.4.5 заполнить поля и сохранить сплющенный документ:

var pdf = new PdfReader(srcFilename); 
using (var fw = new FileStream(dstFilename, FileMode.Create)) 
{ 
    var stamper = new PdfStamper(pdf, fw); 
    var f = stamper.AcroFields; 

    f.SetField("field1", "John Doe"); 
    f.SetField("field2", "12/04/2013"); 
    stamper.FormFlattening = true; 
    stamper.Close(); 
} 
pdf.Close(); 

Проблема в том, что заполненные поля значения полностью исчезают в новом документе!
Я думал, что поля не были найдены или заполнены, но обнаружили, что комментарии stamper.FormFlattening = true значения полей находятся в сохраненном pdf!
Естественно, мне нужен сплющенный pdf ...

Есть ли решение для этого?

ответ

11

При создании формы с использованием Open Office Open Office устанавливает флаг, указывающий, что iText не создает видимость. Если вы посмотрите на FillDataSheet Например, вы увидите, что мы переопределить с помощью следующей строки:

fields.setGenerateAppearances(true); 

В вашей конкретной C# сниппета, который был бы:

f.GenerateAppearances = true; 

Важно, чтобы установить это значение перед установкой полей или появлений не будет создано.

+0

Спасибо, он отлично работал. Просто нужно сказать, что 'f.GenerateAppearances = true;' должно быть установлено перед заполнением полей, или это бесполезно ... – Marco

+0

ОК, я обновил ответ. –

+0

f.GenerateAppearances throwing nullreference Exception. Пожалуйста, помогите –

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