pdf - 为什么一个 CID 号映射到一个 CMap 文件中的两个 UTF16 编码?
问题描述
我正在调试使用itext解析PDF文本的一个奇怪问题:无法正确解析字符“起”。
最后我发现那个字符(带有 CID 代码2510
)被映射到 Unicode <e44a>
。在阅读了 CID-Keyed Font 的文档(https://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5092.CID_Overview.pdf)后,我很困惑为什么一个 CID 号码可以映射到两种不同的 UTF16 编码?
而且...第二个(错误的)获胜。
...
<8d77> 2510
...
<e44a> 2510
...
==== 提到的PDF文件====
PDF 网址:长和 2018 年年报。第 3 行中的第 13 个字符,第 128 页。
结果如下所示:
此文件适用于 PDFBox。
环境:itext7-core: 7.1.10
,macOS 10.13.6
代码:
InputStream inputStream = getClass().getResourceAsStream("/hk-annual-report/00001.pdf");
PdfDocument pdfDocument = new PdfDocument(new PdfReader(inputStream));
PdfPage page = pdfDocument.getPage(128);
String s = PdfTextExtractor.getTextFromPage(page);
System.out.println(s);
解决方案
推荐阅读
- javascript - localStorage.getItem(...).key 不是函数
- oracle-apex-5.1 - Oracle APEX 图标列表
- rabbitmq - 如何在不使用事务的情况下使用 RabbitMQ 和 Spring AMQP 实现至少一次交付保证?
- ios - Swift 4 Dictionary [String : AnyObject] 按字母顺序按键排序
- ios - L2CAP 通道数据传输
- ruby-on-rails - Rails 2 从嵌套控制器渲染视图
- c# - 如何在 .NET Framework 控制台应用程序中使用 Razor 使 VS 解析 .cshtml 文件?
- kotlin - 如何在顶级函数中使用 koin 注入依赖项
- electron - Electron Chrome 版本非常过时
- java - Eclipse new Project 仅用于文件系统,不要导入工作区