问题的背景:我可能会在纸/ word document.pdf文档模板中获得不同类型的模板,其中包含控件(文本框,复选框)。
现在我必须在提供的模板中分配值,并且必须将其保存为pdf文档。
所以我发现了一些对于名为Openoffice的模板有用的东西,从那里我可以添加控件并能够保存为pdf模板文档。
现在该模板需要分配值,为此找到一个名为iTextSharp的dll。
基于我试图添加的样本,pdf模板中字段的计数显示为0.是否有人可以帮我分配PDF模板的值? 以下是我为此案例使用的代码。
private void ListFieldNames()
{
string pdfTemplate = @"D:\17.pdf";
loadPDF(pdfTemplate);
// title the form
//this.Text += " - " + pdfTemplate;
// create a new PDF reader based on the PDF template document
PdfReader pdfReader = new PdfReader(pdfTemplate);
// create and populate a string builder with each of the
// field names available in the subject PDF
StringBuilder sb = new StringBuilder();
foreach (DictionaryEntry de in pdfReader.AcroFields.Fields)
{
sb.Append(de.Key.ToString() + Environment.NewLine);
}
// Write the string builder's content to the form's textbox
// userName.Text = sb.ToString();
}
答案 0 :(得分:3)
使用OpenOffice创建交互式PDF表单并使用iText(或iTextSharp)填写它是一个明智的选择。请阅读我的书的Chapter 6,更具体地说,请参阅第6.3.5节“填写PDF表单”。本节的第一部分标题为“使用OpenOffice创建表单。”
创建真实字段并为这些字段指定名称非常重要。然后,您必须确保将文档导出为PDF格式:
如您所见,您需要选中“创建PDF”旁边的复选框。
我有理由相信你没有这样做,因为你说:
基于我尝试添加的样本,pdf模板中的字段数显示为0.
如果您希望我们检查该PDF模板中的字段数是0还是您做错了,您应该共享PDF。
如果你正确地做事(即:如我的书中所述),你可以填写如下表格:
PdfReader reader = new PdfReader(template);
PdfStamper stamper = new PdfStamper(reader,
new FileStream(newFile, FileMode.Create));
AcroFields form = stamper.AcroFields;
form.SetField(key1, value1);
form.SetField(key2, value2);
form.SetField(key3, value3);
...
stamper.Close();
在此代码段key1
中,key2
,key3
,...是您在OpenOffice和value1
中创建表单时为字段定义的值, value2
,value3
,...是您要添加到字段中的值。