2

我有一个包含许多层 (OCG) 的 pdf 文档。该文档只有一页。此文档中的位图图像很少,矢量图形很多。每个矢量图形都与一个层(OCG)相关。

我需要从文档中提取矢量图形。我尝试使用一些工具,如 GSview 和 Inkscape,得到了一个巨大的 svg 文档。不幸的是,我需要为每一层(OCG)提取单独的图形。

我尝试使用库 ABCpdf、Aspose 和 iTextSharp,但没有得到我需要的东西。是的,我可以使用 iTextSharp矢量图形添加到 pdf,但我需要提取它。可能这些库之一可以提供合适的解决方案,但我在几个小时的研究中没有找到它。

现在我正在研究 Acrobat SDK,但我对此很陌生,而且我对 C/C++ 的经验很差。(

4

2 回答 2

1

如果您仍在寻找解决方案,XFINIUM.PDF库支持此功能。
下面的代码显示了此功能的工作原理(从一个页面中提取可选内容并将其绘制到另一个页面上):

FileStream input = File.OpenRead("optionalcontent-src.pdf");
PdfFile file = new PdfFile(input);
int pageNumber = 0;
string ocgName = "SampleOCG";
PdfPageOptionalContent ocg = file.ExtractPageOptionalContentGroup(pageNumber, ocgName);
input.Close()

PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();

page.Graphics.DrawFormXObject(ocg, 0, 0, page.Width / 2, page.Height / 2);

document.Save("optionalcontent-dest.pdf")

可选内容按名称提取。
免责声明:我为开发此产品的公司工作。

于 2013-06-26T09:19:49.120 回答
0

您提到的 ABCpdf 包含一个名为 OCGLayers 的示例项目。该项目向您展示了如何识别和编辑图层中的所有项目。

在这里最简单的做法是编辑所有不需要的图层,然后保存文档。这是因为不可见的图层仍然会影响可见图层的放置或样式。

通过编辑不可见图层,您可以留下可见图层所需的定位和样式,同时从任何不需要的图层中删除内容。

于 2015-05-18T14:47:35.153 回答