1

我使用 iText 5.3.3

我尝试从 pdf 文件中提取文本。

我使用类似的东西:

    File f (....)

    FileInputStream fis = new FileInputStream(f);

    r = new PdfReader(fis);

    String s=PdfTextExtractor.getTextFromPage(r, 1);
    System.out.print(s);

我明白了:

“(...)新加坡航空公司面临历史上第一起致命坠机事故引发的危机(...)”

对于文本:

“(...)新加坡航空公司面临历史上第一次致命坠机事故引发的危机(...)”

或:“(...)国家运营商和最终结论表明需要(...)”

对于文本:“(...)国家运营商和最终结论表明需要(...)”

如您所见,我得到“?” 插入“fi”。

4

2 回答 2

0

"fi" 可以是一个 unicode 字符,称为 LATIN SMALL LIGATURE FI

可以在此处找到有关该角色的更多信息。

http://www.eki.ee/letter/chardata.cgi?ucode=FB01

这通常是由于编码问题或显示此文本的网页上使用的字体未解码源中呈现“fi”的字体。

尝试使用 UTF8 编码规范化您的 pdf 阅读器字符串,如果浏览器字体不知道如何呈现它,您可能需要检查 unicode 字符并解析出不需要的字符,例如“fi”。

一种方法是编写一个可以解析出任何不需要的 unicode 字符的正则表达式。下面是一个例子

 //Used this to get the unicode range below : http://www.utf8-chartable.de/unicode-utf8-table.pl
                s = s.Replace(/[^\u0000-\u036F\u2000-\u2023\u2153-\u217E\u20A0-\u20B5]/g, "");

希望这可以帮助。

谢谢

于 2012-11-01T15:54:05.577 回答
0

问题解决了。

我更改了 .txt 文件的默认编码。

在 Eclipse 中:窗口>>常规>>内容类型>>文本默认编码:UTF-8

于 2012-11-02T13:17:34.460 回答