2017-02-14 114 views
4

當我嘗試將非法字符寫入PDF時,我顯然會遇到異常。例如。使用PDFBox從字符串中刪除非法字符

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

如何找出哪些字符不被支持,並將它們從字符串中刪除?

+0

通常情況下,您可以指望字體不包含控制字符範圍 mkl

回答

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 
    } 

} 
+0

如何在將要寫在PDF上的字符串之間添加一個新行? \ n和System.getProperty(「line.separator」)不起作用...請幫助 –

+1

您必須將字符串拆分爲新行字符並手動逐行寫入。沒有其他解決方案。 – user489872

+1

https://stackoverflow.com/questions/19635275/how-to-generate-multiple-lines-in-pdf-using-apache-pdfbox – user489872