如何在java

时间:2017-09-27 09:45:23

标签: java pdf unicode

有没有办法检查从pdf文档中提取的字符串是否包含上标或下标

例如:

enter image description here

2 个答案:

答案 0 :(得分:0)

是的。

一种方法是获取所需的所有Unicode字符列表,然后以编程方式搜索String

例如,km²包含上标,Unicode值为u00B2

请按以下方式检查String

if(yourString.contains("\u00B2")){
            System.out.println("yay");
        }

答案 1 :(得分:0)

1纯Un​​icode

以下内容将用空字符串替换不在脚本上标/下标中的所有Unicode字符,只留下超级/下标。

问题是存在未归类的上标和下标,如²³。查看维基百科。必须列出这些。

    System.out.println(s.replaceAll("(?U)[^²³\\p{InSuperscripts_and_Subscripts}]", ""));

boolean isSuperOrSubscript(int codePoint) {
    return Character.getName(codePoint).contains("SUPERSCRIPT")
        || Character.getName(codePoint).contains("SUBSCRIPT")
        || new String(new int[] {codePoint}, 0, 1)
                .matches("(?U)\\p{InSuperscripts_and_Subscripts}");
}

但是上面的内容不会找到

2 PDF样式文字

PDF是&#34;类型设置&#34;原始风格的文字。因为这样的上标可能是较小的文字移动了一点点。原来的<sup>...</sup>(比方说)不再可用。也许人类可以通过其字体资源识别PDF中的较小字体。

在这种情况下,您可以遍历文本元素并查看定位。例如,使用 itext 库。没有乐趣。