Come posso appiattire un modulo PDF XFA utilizzando iTextSharp?

Presumo che ho bisogno di appiattire un modulo XFA per visualizzare correttamente sull’interfaccia utente di un’applicazione che utilizza CSDK di Nuance. Quando lo elaboro ora ricevo un messaggio generico “Please Wait …. Se questo messaggio non viene infine sostituito ..”.

Alla ricerca di alcuni esempi di codice iTextSharp per farlo.

Non hai inserito un esempio di codice per mostrare come stai attualmente appiattendo il modulo XFA. Presumo che il tuo codice assomiglia a questo:

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(); 

Questo codice funzionerà quando si cerca di appiattire moduli basati sulla tecnologia AcroForm, ma non può essere utilizzato per moduli basati su XML Forms Architecture (XFA)!

Un modulo XFA dinamico di solito consiste in un PDF a pagina singola (quello con il messaggio “Please wait …”) che viene visualizzato nel visualizzatore che non capisce XFA. Il contenuto effettivo del documento è memorizzato come un file XML.

Il processo di appiattimento di un modulo XFA in un PDF ordinario richiede l’analisi dell’XML e la conversione della syntax XML in syntax PDF. Questo può essere fatto usando l’XFA Worker di iText: http://itextpdf.com/product/xfa_worker

Supponiamo che tu abbia un file in memoria ( ms ) che consiste in un modulo XFA che è compilato, quindi puoi usare il seguente codice per appiattire quel modulo:

 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(); 

È ansible scaricare un file zip contenente le DLL per XFA Worker e un esempio qui: http://itextsupport.com/download/xfa-net.zip

Tuttavia: poiché troppi sviluppatori stanno utilizzando la versione AGPL di iTextSharp in un contesto commerciale senza acquistare una licenza commerciale, abbiamo deciso di non aprire XFA Worker di origine. È ansible ottenere una chiave di licenza per un periodo di prova, ma si tratta di un prodotto commerciale basato sulla versione commerciale di iTextSharp. XFA Worker può essere utilizzato in produzione solo se si acquista una licenza dal software iText. Questo vale anche per iTextSharp, ma con iTextSharp non esiste una chiave di licenza che impedisca l’uso se non si acquista una licenza commerciale. Per iTextSharp, contiamo sull’onestà. Per XFA Worker, abbiamo preso alcune precauzioni 😉