使用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。 是否有其他产品已经开箱即用?
- Region.IsVisible(PointF)对于大浮点值的性能非常慢
- 使用JSON.NetvalidationJsonConvert.DeserializeObject的结果(想想“尝试解析”)
- 什么时候System.Double不是双倍的?
- 安装Visual Studio 11 beta后,不再通过Visual Studio 2010执行测试
- 我成功地从C#调用了advapi32的LsaEnumerateAccountRights()。 现在我如何解组它返回的LSA_UNICODE_STRING数组呢?
- 如何一次异步读取标准输出流和标准错误流
- 如何在一个解决方案中的项目之间使用共享资源文件?
- C#中的工程符号?
- 如何从SQL Server 2008错误代码中识别主键重复?