我有正在转换为 PDF 的报告。其中一些报告缺少信息,仅仅是因为我们没有对其进行跟踪。我用报告的外壳创建了另一个 PDF,并在其上放置了输入字段控件。我想知道是否有办法将 shell PDF 应用于转换后的 PDF,以便用户可以在那些空白字段中输入信息,而无需打印出来并手写?我通过 Adobe Acrobat Pro 9.3 将生成的 PDF 作为 Layer 应用于 shell PDF 来手动完成此操作。我已经对 iTextSharp 进行了很多关于 Layers 的探索,但我仍然没有找到任何有用的东西。
先谢谢你!
最佳答案
1) 图层不适用于字段。 PDF 图层是页面内容的一部分。与所有注释一样,表单字段 float 在页面上方。
2) 话虽如此,您可以使用 Acrobat/Reader JavaScript 隐藏和显示表单域。 “doc”对象通常是字段和页面入口点中的“this”,因此要显示给定的字段,它只是:
var fld = this.getField("fieldName");
fld.hidden = false;
有很多不同的地方可以将 JS 添加到 PDF。各种字段事件、页面事件、文档事件。您还可以将图层的操作设置为某些 javaScript。哎呀,您可以将书签的操作设置为 javascript 而不是“去那里”操作。
请注意,图层在 PDF 技术术语中称为“可选内容组”(OCG)。如果您真的想要创建一个层,它看起来应该是这样的:
// layer implements PdfOCG
PdfLayer layer = new PdfLayer("MyLayer", writer);
PdfContentByte cb = getAContentByteFromSomewhere();
cb.beginLayer(layer); // takes PDFOCG object
/* draw stuff to be part of that layer */
cb.endLayer();
iText 站点上有很多示例对应“iText In Action, 2nd edition”(我不收钱,作者是 friend )。 The aforementioned examples can be found here .
值得重复:字段不能是 OCG(图层)的一部分。然而,它们可以编写脚本来表现得像它们一样。
关于c# - iTextSharp 将预先存在的 PDF 作为图层添加到另一个 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3442666/