我有一个包含多层(OCG)的pdf文档。这个文档只有一页。此文档中几乎没有位图图像和许多矢量图形。每个矢量图形都与一个层(OCG)相关。
我需要从文档中提取矢量图形。我尝试使用一些工具作为GSview和Inkscape,并获得了一个巨大的svg文档。不幸的是,我需要为每个层(OCG)提取单独的图形。
我尝试使用库ABCpdf,Aspose和iTextSharp,但没有得到我需要的东西。是的,我可以使用iTextSharp 将矢量图形添加到pdf,但我需要提取它。可能这些库中的一个可以提供合适的解决方案,但我在几个小时的研究中没有找到它。
现在我正在挖掘Acrobat SDK,但我对此非常陌生,而且我对C / C ++的经验非常差。(
答案 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的示例项目。该项目向您展示如何识别和编辑图层中的所有项目。
这里最简单的方法是编辑您不想要的所有图层,然后保存文档。这是因为不可见的图层仍会影响可见图层的放置或样式。
通过编辑不可见的图层,您可以留下可见图层所需的定位和样式,同时从任何不需要的图层中删除内容。