首页 文章

在Adobe Reader中添加pdf图层(使用iTextsharp创建)的注释

提问于
浏览
0

我是这个话题的新手 .

到目前为止我做了什么,

1)我已阅读现有的pdf文件

2)我使用iTextSharp的pdfStamper创建了现有pdf的副本

3)使用iTextSharp在新的pdf上创建三层 .

现在我想在adobe reader中打开这个pdf,我想分别在这三个层上添加评论作为常规pdf评论选项 .

但问题是,它不是保存在各个层上,而是节省了pdf .

用于评论的pdf层的开/关动作不起作用 .

你能指导我如何继续前进吗?

谢谢你们

1 回答

  • 0

    你的问题无法复制 . 请查看AddOCG以了解我是如何重现问题并失败的 . 这是一件好事,因为这意味着没有问题 .

    我从我的书OptionalContentExample.cs中获取了示例,并对其进行了更改,以便它不会从头开始创建新文档,而是将可选内容添加到现有文档中 .

    这涉及使用 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 .

相关问题