使用PDFBox从字符串中删除非法字符

时间:2017-02-14 14:21:08

标签: java pdfbox

当我尝试将非法字符写入PDF时,我显然会遇到异常。例如。

contentStream.showText("some illegal characters");    
...
java.lang.IllegalArgumentException: U+000A ('controlLF') is not available in this font Helvetica (generic: ArialMT) encoding: WinAnsiEncoding...

如何找出不支持的字符并将其从字符串中删除?

1 个答案:

答案 0 :(得分:5)

这是我的解决方案......至少它适用于我需要的东西。我使用了PDFBox的WinAnsiEncoding类并调用了contains方法来检查字符是否受支持。

import org.apache.pdfbox.pdmodel.font.encoding.WinAnsiEncoding;

public class Test extends WinAnsiEncoding {

    public static String remove(String test) {
        StringBuilder b = new StringBuilder();
        for (int i = 0; i < test.length(); i++) {
            if (WinAnsiEncoding.INSTANCE.contains(test.charAt(i))) {
                b.append(test.charAt(i));
            }
        }
        return b.toString();
    }

    public static void main(String[] args) {
        System.out.println(remove("abc\rcde"));
        // prints abccde
    }

}