Я использую PDFBox 1.8.4 для преобразования PDF в строку. Например, мой pdf содержит: Pólya, G. and G. Szegő, выход: Po'lya, G. and G. Szego˝
Есть ли способ решить эту проблему? (Да, я знаю, что могу изменить с помощью replaceAll ("o", "-"))
PDDocument doc = PDDocument.load(path);
PDFTextStripper strp = new PDFTextStripper("UTF-8");
System.out.println(strp.getText(doc));
Все предложения приветствуются!
Редактировать 1: PDF_Example
Документ, представленный ОП, содержит, например, эту строку
который, скорее всего, является образцом проблемы, которую он идентифицировал.
Однако, глядя на поток содержимого страницы,
[(A)32(ttila)-384(G\023)575(obi,)-383
(Zal)8(\023)567(an)-383(Sz)-32(})607(ugyi)-384(and)-383
(T)96(am)8(\023)567(as)-384(Kozsik)]TJ
видно, что, например, в (G\023)575(obi,)
- создается путем первого рисования ' (\ 023), затем возвращается ширина этого глифа (575), а затем рисуется о.
Таким образом, у вас есть эти два глифы "и о напечатанных в том же месте, ни один Ó глифов.
PDFBox PDFTextStripper
настоящее время не объединяет символы, напечатанные в одном и том же месте, кроме того, что выпадает идентичный глиф, сделанный дважды примерно в одном месте.
Таким образом, помимо replaceAll ("o", "-"), как упоминается OP, можно также расширить PDFTextStripper
чтобы объединить определенные глифы, либо в начале его метода processTextPosition
либо позже в writeString(String text, List<TextPosition> textPositions)
.
Возможно, проблема связана с кодировкой PDF файла (т.е. кодировка не UTF-8
).
В качестве подсказки рассмотрите этот вопрос в FAQ по PDFBox documentemntaion.