wpf - 使用 itextsharp 设置现有 pdf 的 ocg 状态

标签 wpf vb.net itextsharp

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

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

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

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

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

示例代码

将 doc1 调暗为新的 PdfReader("random.pdf")

PdfAction.SetOCGstate(“困惑”,假)

最佳答案

我创建了一个关闭特定图层可见性的示例。参见 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 代码。请像阅读伪代码一样阅读它,并根据您选择的语言进行调整。

关于wpf - 使用 itextsharp 设置现有 pdf 的 ocg 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23415419/

相关文章:

c# - 如何使用 iTextSharp 填充单选按钮

c# - iTextSharp ShowTextAligned anchor

mysql - 文本框上的数据字段

c# - JIT 编译器是否优化(内联)不必要的变量声明?

asp.net - 如何将数组传递给 rdlc 报告?

wpf - 刷新 OxyPlot 图表

c# - C#中html内容的显示

c# - 为什么用空委托(delegate)调用 ThreadStart?

c# - 使用 try catch 语句仅允许用户在 Button Click 事件上将整数输入到文本框中

wpf - 是否可以阻止垂直滚动条将 DataGrid 列/标题向左推?