2014-11-21 5 views
2

Я предполагаю, что мне нужно сгладить форму XFA, чтобы правильно отображать пользовательский интерфейс приложения, использующего CSDK от Nuance. Когда я обрабатываю его сейчас, я получаю общее сообщение «Пожалуйста, подождите ... Если это сообщение не будет заменено в конце».Как сгладить PDF-форму XFA с помощью iTextSharp?

Ищете какой-то образец кода iTextSharp для этого.

ответ

5

Вы не ввели образец кода, чтобы показать, как вы в настоящее время сглаживаете форму XFA. Я предполагаю, что ваш код выглядит следующим образом:

var reader = new PdfReader(existingFileStream); 
var stamper = new PdfStamper(reader, newFileStream); 
var form = stamper.AcroFields; 
var fieldKeys = form.Fields.Keys; 
foreach (string fieldKey in fieldKeys) { 
    form.SetField(fieldKey, "X"); 
} 
stamper.FormFlattening = true; 
stamper.Close(); 
reader.Close(); 

Этот код будет работать при попытке сгладить формы, основанные на технологию AcroForm, , но она не может быть использована для форм на основе XML Forms Architecture (РФ)!

Динамическая форма XFA обычно состоит из одностраничного PDF-файла (одного с сообщением «Please wait ...»), которое отображается в программе просмотра, которое не понимает XFA. Фактическое содержимое документа хранится как XML-файл.

Процесс сглаживания формы XFA в обычный PDF-файл требует, чтобы вы проанализировали XML и преобразовали синтаксис XML в синтаксис PDF. Это может быть сделано с помощью IText в РФА работник: http://itextpdf.com/product/xfa_worker

Предположим, что у вас есть файл в памяти (ms), который состоит из формы РФА, который заполнен, то вы можете использовать следующий код, чтобы сгладить эту форму:

Document document = new Document(); 
PdfWriter writer = 
    PdfWriter.GetInstance(document, new FileStream(dest, FileMode.Create)); 
XFAFlattener xfaf = new XFAFlattener(document, writer); 
ms.Position = 0; 
xfaf.Flatten(new PdfReader(ms)); 
document.Close(); 

Вы можете скачать почтовый файл, содержащий библиотеки DLL для РФА работника, а также пример здесь: http://itextsupport.com/download/xfa-net.zip

Однако: слишком многие разработчики используют версию AGPL из iTextSharp в коммерческом контексте, не покупая рекламу лицензии, мы решили не открывать источник XFA Рабочий. Вы можете получить лицензионный ключ для пробного периода, но это коммерческий продукт, созданный поверх коммерческой версии iTextSharp. XFA Worker может использоваться только на производстве, если вы приобретаете лицензию от iText Software. Это также верно для iTextSharp, но с iTextSharp отсутствует лицензионный ключ, который запрещает использование, если вы не покупаете коммерческую лицензию. Для iTextSharp мы рассчитываем на честность. Для XFA Worker мы приняли некоторые меры предосторожности ;-)

+0

спасибо за ответ, я не предоставлял никакого кода, потому что у меня его не было и не знал с чего начать. Итак, вы говорите, что с версиями AGPL нет возможности сгладить XFA PDF? – Chuck

+4

Помимо Adobe LiveCycle (сотни тысяч долларов) и XFA Worker от iText вы, вероятно, не найдете другого программного обеспечения, которое может сгладить динамический XFA. Причина проста: спецификация XFA слишком сложна для «любителей». Вы не найдете никого, желающего бесплатно работать над развитием XFA flattener. –

+0

ОК, получилось, ответ № – Chuck

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