0
我正在嘗試使用iTextSharp閱讀PDF模板,然後自動填寫表單。該模板是使用LiveCycle Developer創建的。我不知道下面的代碼有什麼問題,但它不會更改表單值。如何從模板中讀取表格,然後用iTextSharp填充它們?
有人能告訴我我做錯了什麼嗎?很難爲iText的C#版本找到很好的文檔。
private void button_fill_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
using (MemoryStream ms = new MemoryStream())
{
PdfReader pdfReader = new PdfReader(ofd.FileName);
PdfStamper pdfStamp = new PdfStamper(pdfReader, ms);
AcroFields fields = pdfStamp.AcroFields;
foreach (KeyValuePair<string, AcroFields.Item> f in fields.Fields)
{
// this message is never displayed
MessageBox.Show("key: " + f.Key);
}
//textfields
// this one is working, and showing the value saved in the template
MessageBox.Show("FakeDatabase_Table1_Company: " + fields.GetField("FakeDatabase_Table1_Company"));
// this part returns a false value, and not changing the field
MessageBox.Show("Set: " + fields.SetField("FakeDatabase_Table1_Company", "Testing"));
try
{
fields.SetField("FakeDatabase_Table1_Company", "Coca-Cola");
}
catch (Exception e2) { MessageBox.Show(e2.Message); }
pdfReader.Close();
pdfStamp.FormFlattening = true;
pdfStamp.FreeTextFlattening = true;
pdfStamp.Writer.CloseStream = false;
pdfStamp.Close();
Process.Start(ofd.FileName);
}
}
}
的try/catch語句從不輸出任何東西..也沒有將它設置任何
你應該能夠將其標記爲答案。你介意包括相關的代碼行嗎? – Adam 2012-07-07 20:16:03
沒有相關的代碼行,這是使用LiveCycle保存PDF時的一個選項。自從您提出要求之後,我將修改後的代碼包括在內,但它也會與舊版本一起使用。 – Mike 2012-07-09 14:56:21