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

时间:2014-05-01 19:48:55

标签: wpf vb.net itextsharp

我花了几个小时研究这个,似乎无法找到答案。 我已经在我的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)

1 个答案:

答案 0 :(得分:0)

我创建了一个关闭特定图层可见性的示例。见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代码。请阅读它,好像它是伪代码,并使其适应您选择的语言。