使用iTextSharp提取路径和形状

iTextSharp支持使用PdfContentByte类创建形状和路径,在那里你可以设置颜色和绘制曲线和基本元素……是否有一种机制可以做另一种方式? 我可以通过调用PdfReader.GetPageContent(...)来获取内容,但我没有找到“解析器”来读取这些操作,将它们应用于图形上下文,例如在面板上绘制它。

例:

 1 1 1 RG 1 1 1 rg 0.12 0 0 0.12 16 31 cm q 480 421 m 4318 421 l 4318 5459 l 480 5459 l 480 421 l W n 0.074509806931 0.074509806931 0.074509806931 RG 0.074509806931 0.074509806931 0.074509806931 rg /OC /oc1 BDC .... 

谢谢你的答复!

以下是提取页面的不同命令的起点:

  var file = "test.pdf"; var reader = new PdfReader(file); var streamBytes = reader.GetPageContent(2); var tokenizer = new PRTokeniser(new RandomAccessFileOrArray(streamBytes)); var ps = new PdfContentParser(tokenizer); List operands = new List(); while (ps.Parse(operands).Count > 0) { PdfLiteral oper = (PdfLiteral)operands[operands.Count - 1]; var cmd = oper.ToString(); switch (cmd) { case "q": Console.WriteLine("SaveGraphicsState(); //q"); break; case "Q": Console.WriteLine("RestoreGraphicsState(); //Q"); break; // good luck with the rest! } } 

这在iTextSharp中不受支持。 原因是:解析文本返回TextRenderInfo对象,解析图像会返回ImageRenderInfo对象,但是我们应该以哪种forms返回GraphicsRenderInfo ? 很难找到通用的东西,而绘制到图形上下文太具体了。

我的想法是你编写自己的解析器,就像我为删除OCG层所做的那样: OCGParser 。 这部分iText还没有移植到iTextSharp,但也许你可以用它来获取灵感。

请注意,您实际上是在构建PDF到图像function。 是否有其他产品已经开箱即用?