iTextSharp将预先存在的PDF作为图层添加到另一个PDF

时间:2010-08-09 17:46:21

标签: c# pdf pdf-generation itextsharp

我的报告正在转换为PDF。其中一些报告缺少信息仅仅是因为我们没有跟踪它。我用报告的shell创建了另一个PDF,并在其上放置了输入字段控件。我想知道是否有办法将shell PDF应用于转换的PDF,以便用户可以在这些空白字段中输入信息而无需打印出来并手写它们?我通过Adobe Acrobat Pro 9.3手动完成此操作,将生成的PDF作为图层应用于shell PDF。关于图层,我已经和iTextSharp一起做了很多,但我还是没有找到任何有用的东西。

先谢谢你了!

1 个答案:

答案 0 :(得分:2)

1)图层不适用于字段。 PDF图层是页面内容的一部分。与所有注释一样,表单字段浮动在页面上方。

2)话虽如此,您可以使用Acrobat / Reader JavaScript隐藏和显示表单字段。 “doc”对象通常是字段和页面入口点中的“this”,因此要显示给定字段,它只是:

var fld = this.getField("fieldName");
fld.hidden = false;

有很多不同的地方可以将JS添加到PDF中。各种现场活动,页面事件和文档事件。您还可以将图层的操作设置为某些javaScript。你可以将书签的动作设置为javascript而不是“go over there”动作。

请注意,图层在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”相对应的例子(我没有得到报酬,作者是朋友)。 The aforementioned examples can be found here

这需要重复:字段不能成为OCG(图层)的一部分。然而,它们可以按照自己的行为编写脚本。