PDF文件字符在pdf到字符串转换中的坏字符

时间:2014-03-19 14:34:57

标签: java pdfbox

我正在使用PDFBox 1.8.4将PDF转换为字符串。 例如我的pdf包含:Pólya,G。和G.Szegő, 输出为:Po'lya,G。和G.Szego˝

有没有办法解决这个问题? (是的,我知道我可以用replaceAll(“o”,“ó”)改变)

   PDDocument doc = PDDocument.load(path);
   PDFTextStripper strp = new PDFTextStripper("UTF-8");
   System.out.println(strp.getText(doc));

欢迎所有建议!

编辑1: PDF_Example

2 个答案:

答案 0 :(得分:2)

OP提交的文件包含例如:这一行

Attila Gobi, Zalan Sz}ugyi and Tamas Kozsik

很可能是他已经确定的问题的样本。

查看页面内容流,

[(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) ),然后绘制 o

因此,您确实在同一位置打印了这两个字形' o ,而不是单个字形ó

PDFBox PDFTextStripper目前不会合并在同一位置打印的字符,只能删除在同一位置绘制两次的相同字形。

因此,除了OP提到的 replaceAll(“o”,“ó”)之外,还可以在其方法的早期扩展PDFTextStripper以组合某些字形。 processTextPositionwriteString(String text, List<TextPosition> textPositions)后期。{/ p>

答案 1 :(得分:1)

问题可能在于PDF文件编码(即编码不是UTF-8)。

提示this question上的PDFBox docuemntaion FAQ