我试图使用iTextSharp来操作可填写的pdf表单模板 . IRS的可填写W4就是一个很好的源代码示例(不过,我将在真正的解决方案中创作自己的表单):http://www.irs.gov/pub/irs-pdf/fw4.pdf
我需要:
-
填写一些表格输入,但不是全部
-
向pdf添加一些自定义元数据
-
将条形码图像添加到pdf中
-
生成的表单仍可在Acrobat Reader中填写
我已经克服了PdfStamper必须创建的附加到pdf的常见问题 - 这在填写表单输入和添加元数据时工作正常 . 但是,如果我向PDF添加图像,则会导致非常令人失望的消息
此文档在Adobe Reader中启用了扩展功能 . 该文档自创建以来已更改,并且不再使用扩展功能 . 等等...
因此,无法再在Acrobat Reader中编辑表单 .
以下是代码的高级示例:
PdfReader reader = new PdfReader(templateFile);
using (PdfStamper stamper = new PdfStamper(reader, new FileStream(outputFile, FileMode.Create), '\0', true))
{
// fill in some fields
AcroFields form = stamper.AcroFields;
form.SetField("Field1", "My Value");
form.SetField("Field2", "Another Value");
// add some metadata
Dictionary<String, String> info = reader.Info;
info.Add("SourceID", "1234567890");
stamper.MoreInfo = info;
// add a barcode image
PdfContentByte cb = stamper.GetOverContent(1);
Barcode39 code39ext = new Barcode39();
code39ext.Code = "1234567890";
code39ext.StartStopText = false;
code39ext.Extended = true;
iTextSharp.text.Image barcode = code39ext.CreateImageWithBarcode(cb, null, null);
barcode.ScalePercent(100);
barcode.SetAbsolutePosition(50, 500);
cb.AddImage(barcode)
stamper.Close();
}
主要问题:如上所述,字段完成和元数据部分工作正常 . 但是,添加条形码图像会破坏pdf的“扩展功能” . 有没有办法可以添加不会破坏“扩展功能”的条形码图像?
1 回答
为了给别人提供答案,@ mkl是正确的 . 通过修改pdf的“内容”,签名被破坏 . 但是,只要未启用“扩展阅读器功能”,就可以填写表单,添加元数据并将条形码添加到可填写的PDF中 . 由于我们正在编写自己的表单,因此这对我们来说是一个有效的解决方案 .