我在iText/iTextSharp(iTextSharp 5.3.3通過NuGet)中遇到了一個非常奇怪的問題。我正在嘗試填寫一個靜態的XFA樣式表單,但是我的更改沒有完成。如何在iTextSharp的靜態XFA表單中設置XFA數據並保存?
我有兩個版本的iText in Action,並且一直在參考本書的第二版以及iTextSharp代碼示例轉換。
背景:我有一個XFA表格,可以在我的電腦上用Adobe Acrobat手動填寫。使用iTextSharp我可以讀取Xfa XML數據,並查看數據的結構。我基本上試圖用iText來模仿。
的數據是什麼樣子時,我添加數據和保存在Acrobat(注意:這僅僅是數據集的特定部分)
這裏是我試圖讀取XML文件替換現有的數據(注:這是該文件的整個上下文):
然而,當我經過的路徑,在更換XML文件,並嘗試設置數據,創建新文件(替換數據的原始副本),不會引發任何錯誤,但數據不會更新。我可以看到新文件已創建,我可以打開它,但文件中沒有數據。
這裏是被利用來替換數據或填充在第一時間,這是任何幫助將是非常讚賞的http://sourceforge.net/p/itextsharp/code/HEAD/tree/trunk/book/iTextExamplesWeb/iTextExamplesWeb/iTextInAction2Ed/Chapter08/XfaMovie.cs
public void Generate(string sourceFilePath, string destinationtFilePath, string replacementXmlFilePath)
{
PdfReader pdfReader = new PdfReader(sourceFilePath);
using (MemoryStream ms = new MemoryStream())
{
using (PdfStamper stamper = new PdfStamper(pdfReader, ms))
{
XfaForm xfaForm = new XfaForm(pdfReader);
XmlDocument doc = new XmlDocument();
doc.Load(replacementXmlFilePath);
xfaForm.DomDocument = doc;
xfaForm.Changed = true;
XfaForm.SetXfa(xfaForm, stamper.Reader, stamper.Writer);
}
var bytes = ms.ToArray();
File.WriteAllBytes(destinationtFilePath, bytes);
}
}
的變化的代碼。
您是否嘗試過在線演示?請參閱http://demo.itextsupport.com/xfademo如果該演示正常運行,則代碼有問題;如果沒有,iText有問題。在後一種情況下,請在運行演示後填寫反饋表。 – 2013-05-12 09:39:14
感謝布魯諾。我沒有嘗試過這個演示,但現在我已經有了。當我嘗試在線演示並且不要將XFA文件弄平時(需要什麼),這些字段會在演示中更新。 – jon333 2013-05-12 13:39:56