我正在使用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
答案 0 :(得分:2)
OP提交的文件包含例如:这一行
很可能是他已经确定的问题的样本。
查看页面内容流,
[(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
以组合某些字形。 processTextPosition
或writeString(String text, List<TextPosition> textPositions)
后期。{/ p>
答案 1 :(得分:1)
问题可能在于PDF文件编码(即编码不是UTF-8
)。