2015-03-06 2 views
0

Использование itextsharp v5.5.5.0 в VS2010 Настройка шаблона FormFlattening = true никакие зарегистрированные данные не записываются на выход pdf. Если установить ложные данные все присутствующие & правильно, но по-прежнему доступны для редактирования (которые я не хочу)itextsharp установка шаблона FormFlatttening = истинные результаты без вывода

PdfReader pdfTemplate = new PdfReader("..\\..\\pdf\\BFC-Template.pdf"); 
FileStream fileOutputStream = new FileStream("..\\..\\pdf\\BFC.pdf", FileMode.Create); 
PdfStamper stamper = new PdfStamper(pdfTemplate, fileOutputStream); 

stamper.AcroFields.SetField("FitID", "1234"); 
stamper.AcroFields.SetField("FitBy", "Fred Flintstone"); 
stamper.AcroFields.SetField("FitDate", "03/11/2015"); 
stamper.AcroFields.SetField("FitLocation", "Bedrock"); 

stamper.FormFlattening = true; 
stamper.Close(); 
pdfTemplate.Close(); 
fileOutputStream.Close(); 

ответ

1

Попробуйте добавить:

stamper.AcroFields.GenerateAppearances = true; 

EDIT:

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

stamper.AcroFields.SetField("FitID", "1234"); 

к:

stamper.AcroFields.Xfa.DatasetsSom.Name2Node["FitID"].InnerText = "1234" 
+0

Но это не обязательно. Я только что проверил ваш код с itextsharp v5.5.5.0 в VS2013, и он отлично работает. Тем не менее, я заметил, что itextsharp не всегда ведет себя одинаково в зависимости от файла PDF, который вы пытаетесь заполнить. Попробуйте заполнить этот [файл] (http://help.adobe.com/en_US/Acrobat/9.0/Samples/interactiveform_enabled.pdf) с кодом, чтобы узнать, не имеет ли он значения. – bog500

+0

Свойство GenerateAppearances сделало трюк, спасибо! – JayC

0

Это не имеет значения, но вы можете попробовать инстанцировании объект AcroFields из поля PdfStamper.

PdfStamper stamper = new PdfStamper(pdfTemplate, fileOutputStream); 
AcroFields pdfFields = pdfStamper.AcroFields; 

Тогда вы можете просто установить каждое поле с помощью pdfFields:

pdfFields.SetField("FitID", "1234"); 
pdfFields.SetField("FitBy", "Fred Flintstone"); 
pdfFields.SetField("FitDate", "03/11/2015"); 
pdfFields.SetField("FitLocation", "Bedrock"); 
stamper.FormFlattening = true; 
stamper.Close(); 

У меня есть эта точная настройка и это работает для меня.