【问题标题】:Using itextsharp to set ocg state of existing pdf使用 itextsharp 设置现有 pdf 的 ocg 状态
【发布时间】:2014-05-01 19:48:54
【问题描述】:

我花了几个小时研究这个问题,但似乎找不到答案。 我已经在我的 wpf .net 应用程序中下载并引用了 itextsharp。 (VB)

我正在做的是需要关闭在 Autocad 中创建的现有 .pdf 中默认打开的特定图层(ocg 对象)。

我已成功打开并显示 .pdf,但我似乎无法正确使用 setOCGstate 控件 pdf名称是“random.pdf”

我打开 .pdf 后可以看到的图层名称是“选项 1”

我卡住的地方是我知道图层名称存储在 .pdf 内的数组中。我知道我要关闭的层的名称,那么我如何引用该层并使用 setocgstate 将其关闭。

示例代码

dim doc1 as New PdfReader("random.pdf")

PdfAction.SetOCGstate ("confused", False)

【问题讨论】:

  • doc1 对象与您尝试设置OCGState 的行之间没有任何关系。请告诉我们您真正尝试了什么。

标签: wpf vb.net itextsharp


【解决方案1】:

我创建了一个关闭特定图层可见性的示例。见ChangeOCG

这个概念非常简单。您已经有一个 PdfReader 对象,并且您想将更改应用到文件。如文档所述,您创建了一个 PdfStamper 对象。当您要更改 OCG 图层时,您可以使用 getPdfLayers() 方法并按名称选择要更改的图层。 (在我的示例中,我要关闭的图层名为“嵌套图层 1”)。你使用setOn() 方法来改变它的状态,你就完成了:

PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
Map<String, PdfLayer> layers = stamper.getPdfLayers();
PdfLayer layer = layers.get("Nested layer 1");
layer.setOn(false);
stamper.close();
reader.close();

这是 Java 代码。请像伪代码一样阅读它,并根据您选择的语言对其进行调整。

【讨论】:

  • Bruno 非常感谢,我是 VB 编程的新手,但我认为我可以通过您非常有用的示例来工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多