2017-02-14 5 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