背景
目标是通过 iTextSharp 读取 PDF 模板,填充内容后以生成新 PDF 文件。
利用 福昕PDF编辑器个人版 可以获取到 RadioButtonList 的组名,但是获取不到每一个 RadioButton 的 Value,因而无法进一步对单选框控件赋值。
解决
使用 Adobe LiveCycle Designer 可以读取到 PDF 表单设计元素,找到对应的 RadioBUttonList 元素,即可找到对应的 Value。
范例
var templateFile = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + @"\template.pdf";
using (var reader = new PdfReader(templateFile))
{
var tempPdf = Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath) + string.Format(@"\output\{0}.pdf", Guid.NewGuid());
using (var stamper = new PdfStamper(reader, new FileStream(tempPdf, FileMode.Create)))
{
stamper.SetEncryption(null, null, PdfWriter.AllowCopy | PdfWriter.AllowPrinting, true);
stamper.Writer.CloseStream = false;
var form = stamper.AcroFields;
form.SetField("form1[0].#subform[0].name[0]", "UserName");
form.SetField("form1[0].#subform[0].gender[0]", "Male");
stamper.FormFlattening = true;
stamper.Close();
}
}
ALD