Я отлаживаю странную проблему синтаксического анализа текста PDF с использованием itext: символ "起" не может быть проанализирован правильно.
Наконец, я обнаружил, что символ (с кодом CID 2510) был сопоставлен с Unicode <e44a>. После прочтения документа для шрифта с ключом CID (https://www.adobe.com/content/dam/acom/en/devnet/font/pdfs/5092.CID_Overview.pdf) я совершенно не понимаю, почему один номер CID можно сопоставить двум разным кодировкам UTF16?
2510
<e44a>
Первое вхождение: https://github.com/adobe-type-tools/cmap-resources/blob/master/Adobe-CNS1-7/CMap/UniCNS-UTF16-H#L12636
Второе вхождение: https://github.com/adobe-type-tools/cmap-resources/blob/master/Adobe-CNS1-7/CMap/UniCNS-UTF16-H#L12636
И ... выигрывает второй (неправильный).
... <8d77> 2510 ... <e44a> 2510 ...
==== упомянутый PDF-файл ====
PDF URL: CK Hutchison 2018 Годовой отчет, 13-й символ в строке 3, стр. 128.
Результат выглядит следующим образом:
Этот файл отлично работает с PDFBox.
Конверт: itext7-core: 7.1.10, macOS 10.13.6
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);