2014-05-14 2 views
0

PDFBox를 사용하여 PDTextbox를 가져온 다음 'setValue'를 호출하여 필드를 채 웁니다. 또한 수동으로 WordUtils.wrap (Apache Commons)을 사용하여 텍스트를 래핑합니다. 특히 괄호와 관련된 특정 문자 조합이 PDF 텍스트 필드에 이상한 문자가 출력되는 것을 발견했습니다. 예 :PDFBox/WordUtils : 채워진 PDF 양식의 이상한 문자 Text Box

Pt. "나는 돌고 있었고 무릎은 내 밑에서 뒤틀리고 떨어졌고 뭔가 무언가 움직이는 것을 느꼈다.

편 같이 텍스트 필드에 표시된다. 상태 "나는 전환되었고, 내 무릎이 나를 아래 트위스트 나는 떨어졌다 나는 TJ 0 -13 T (내에서) 뭔가 움직임을 느꼈다"문자열 반면

: 테스트 (문자) 인코딩 (문제) (무릎) 내 무릎

아무 것도 표시되지 않습니다. 첫 번째 문자열 (re : 무릎)은 텍스트를 클릭 한 다음 올바르게 표시 할 때까지 올바르게 줄 바꿈되지 않습니다. 텍스트 상자를 클릭하면 스스로 해결할 수있는 다른 텍스트 필드 문제를 보았습니다.

public static void setTextboxValue(PDAcroForm form, String fieldName, String value) throws Exception { 
    String newValue = ""; 
    if (value != null) 
     newValue = value; 

    // Clean up CR/LF characters, replace with newlines. 
    newValue = newValue.replace("\r", ""); 

    PDTextbox box = getTextbox(form, fieldName); 
    if (box != null) 
     box.setValue(newValue); 
} 

public static void setTextboxValue(PDAcroForm form, String fieldName, String value, int wrapLength) throws Exception { 
    String newValue = ""; 
    if (value != null) 
     newValue = value; 

    setTextboxValue(form, fieldName, WordUtils.wrap(newValue, wrapLength, "\n", true)); 
} 

나는이 문제가 어떻게/I는 제외 WordUtils.wrap()를 호출하고있어 경우에 의해 발생 된 것으로 setTextboxValue(form, "FIELDNAME", object.getDescription(), 100);를 호출하고있어이 경우 : 여기

내가 사용하고 코드입니다 어쨌든 테스트 문자열을 감싸면 안됩니다. 무릎 문자열에서 괄호를 제거하면 잘 표시되고 랩됩니다.

어떤 생각?!

답변

0

PDFBOX-276PDFBOX-716에 따르면 pdfbox에는 올바른 괄호 기호가 잘못 처리 된 기록이 있습니다. ) 문자는 \으로 렌더링됩니다. \이 이스케이프 문자이기 때문에 \이 제어 문자로 사용 된 후에 모든 종류의 미친 내용이 단일 문자 또는 문자에 발생하지만 물론 인쇄되지 않습니다. 아마도 PDFBox의 다른 버전에서

  1. 봐이 완전히 몇 가지 제안은 그래서 여기 상황

    을 설명 할 것인가? 내가 언급 한 오류는 2010 년에 나온 것이므로 지금 쯤이면이 문제가 해결 될 수 있기를 바랍니다. 그 당시 PDFBOX-276은 코드에 패치를 추가했습니다. PDFBOX-716은 PDFBOX-276 패치를 제거하는 패치였습니다.

  2. PDF 형식으로 출력 중이므로 모든 오른쪽 괄호를 이스케이프 처리하여 도움이되는지 확인하십시오.

너무 짧아서 PDFBox의 버그이며 잘하면 지금까지 해결했습니다.