如何从每层pdf中提取单独的矢量图形

时间:2013-05-21 15:35:58

标签: .net pdf extract vector-graphics

我有一个包含多层(OCG)的pdf文档。这个文档只有一页。此文档中几乎没有位图图像和许多矢量图形。每个矢量图形都与一个层(OCG)相关。

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

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

现在我正在挖掘Acrobat SDK,但我对此非常陌生,而且我对C / C ++的经验非常差。(

2 个答案:

答案 0 :(得分: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")

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

答案 1 :(得分:0)

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

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

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