使用iText 8(C#)提取PDF协议信息时,自定义提取策略无法捕获目标内容的问题求助
iText 8(C#)提取PDF协议信息时,自定义提取策略无法捕获目标内容的问题求助
大家好,我现在用iText 8开发PDF处理程序,遇到个棘手的问题想请教各位大佬。
我的系统会借助电子协议服务,在每个PDF文档的顶部插入协议信息。一般情况下,这些协议数据都存放在页面的某个特定流里,识别和提取都很顺利。但最近处理一批来自特定渠道的PDF时,彻底卡壳了:
- 用普通PDF阅读器打开,能正常看到顶部的协议信息;
- 调用
PdfTextExtractor.GetTextFromPage()方法,也能完整取出协议内容,没任何问题; - 但一旦用自定义的文本提取策略,通过
PdfCanvasProcessor.ProcessPageContent()处理页面内容时,完全捕获不到协议信息; - 我翻遍了页面的所有流,也没找到协议数据的踪迹。
后来我用RUPs工具深入查看页面内容,发现这个页面有四个流:
- 第一个流仅2字节,内容是
q; - 第二个流包含了页面的所有正文内容(唯独缺少协议信息);
- 第三个流也是2字节,内容是大写的
Q; - 第四个流共299字节,是一串字母数字混合的内容,我怀疑这里存的就是我要找的协议信息,但它的编码方式我完全摸不着头脑😅
这个第四个流的完整内容如下:
q q 0 0 0 rg q BT /FNT0 9 Tf 100.1711 818.7475 Td <010203040506070809070a0902090b070c0b0505090d09010b070e070f1011121314070e0715060a101615020d070e0712121217181419070e07091a1b1c111d1d1e070e071f1f201219201f121f19070e071814211713> Tj ET Q Q q 1 w 1 0 0 RG [] 0 d 0 J 0 j 10 M 10 811.895 575 20 re S Q Q
有没有大佬遇到过类似的情况?为什么PdfTextExtractor.GetTextFromPage()能正常获取的内容,用自定义策略搭配PdfCanvasProcessor就抓不到?另外,我还能从哪些方向入手,把这个协议信息提取出来?
内容来源于stack exchange




