我是这个话题的新手 .
到目前为止我做了什么,
1)我已阅读现有的pdf文件
2)我使用iTextSharp的pdfStamper创建了现有pdf的副本
3)使用iTextSharp在新的pdf上创建三层 .
现在我想在adobe reader中打开这个pdf,我想分别在这三个层上添加评论作为常规pdf评论选项 .
但问题是,它不是保存在各个层上,而是节省了pdf .
用于评论的pdf层的开/关动作不起作用 .
你能指导我如何继续前进吗?
谢谢你们
你的问题无法复制 . 请查看AddOCG以了解我是如何重现问题并失败的 . 这是一件好事,因为这意味着没有问题 .
我从我的书OptionalContentExample.cs中获取了示例,并对其进行了更改,以便它不会从头开始创建新文档,而是将可选内容添加到现有文档中 .
这涉及使用 PdfStamper 并使用 getPdfLayers() 方法:
PdfStamper
getPdfLayers()
PdfReader reader = new PdfReader(src); PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); Map<String, PdfLayer> layers = stamper.getPdfLayers(); PdfWriter writer = stamper.getWriter(); PdfContentByte cb = stamper.getOverContent(1); PdfLayer group = PdfLayer.createTitle("Grouped layers", writer); PdfLayer layer1 = new PdfLayer("Group: layer 1", writer); PdfLayer layer2 = new PdfLayer("Group: layer 2", writer); group.addChild(layer1); group.addChild(layer2); cb.beginLayer(layer1); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase( "layer 1 in the group"), 50, 700, 0); cb.endLayer(); cb.beginLayer(layer2); ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, new Phrase( "layer 2 in the group"), 50, 675, 0); cb.endLayer(); stamper.close(); reader.close();
生成的PDF hello_ OCG.pdf具有所需的所有图层,并且所有图层的工作方式与图书示例中图层的工作方式相同 . 即:在支持此功能的PDF查看器中查看时,图层可以正常工作 . 一些PDF查看器完全忽略了OCG .
1 回答
你的问题无法复制 . 请查看AddOCG以了解我是如何重现问题并失败的 . 这是一件好事,因为这意味着没有问题 .
我从我的书OptionalContentExample.cs中获取了示例,并对其进行了更改,以便它不会从头开始创建新文档,而是将可选内容添加到现有文档中 .
这涉及使用
PdfStamper
并使用getPdfLayers()
方法:生成的PDF hello_ OCG.pdf具有所需的所有图层,并且所有图层的工作方式与图书示例中图层的工作方式相同 . 即:在支持此功能的PDF查看器中查看时,图层可以正常工作 . 一些PDF查看器完全忽略了OCG .