는 코멘트를 위해 너무 오래이기 때문에 (나는 그것이 단순히 주어진 시료의 분석에도 불구하고, 대답으로이 게시 PDF)
실제로 PDFBox에서 샘플 PDF를 렌더링하려고 할 때 최소한 두 가지 문제가 있습니다.
모든 라틴 문자와 모든 숫자의 경우 원래 글꼴이 기본 글꼴로 대체됩니다. Cf. 이런 로그 출력 :
23.05.2013 09:15:48 org.apache.pdfbox.pdmodel.font.PDSimpleFont drawString
WARNUNG: Changing font on <H> from <Arial> to the default font
이것은 내장 폰트에 사용할 수있는 매우 제한된 정보와 함께 텍스트를 렌더링 PDFBox '방식에 기인한다.
PDFBox는 먼저 텍스트 정보를 유니 코드로 변환 한 다음 이러한 유니 코드 문자를 렌더링해야하는 방식으로 JRE의 텍스트 렌더링 기능을 사용합니다. 그러나 삽입 된 글꼴에는 인코딩 또는 매핑 정보가 포함되어 있지 않습니다.
PDFBox에서 일부 기본 인코딩을 사용하는 대체 방식을 사용하기 때문에 실수로 유니 코드로 변환하는 데 성공합니다. JRE 코드에는 유니 코드 문자에 사용할 글리프 (glyph) 정보가 없으므로 렌더링에 실패합니다. 모든 아랍어 텍스트를 들어
- 가 포함 된 글꼴은 읽을 수 없습니다, 따라서, 굴림 대신 사용됩니다
23.05.2013 09:15:48 org.apache.pdfbox.pdmodel.font.PDCIDFontType2Font getawtFont
INFO: Can't read the embedded font HYMDAA+ArialMT-Identity-H
23.05.2013 09:15:58 org.apache.pdfbox.pdmodel.font.PDType0Font getawtFont
INFO: Using font Arial instead of HYMDAA+ArialMT-Identity-H
여기에 이미 포함 된 글꼴을 구문 분석 실패합니다. 나는 JRE 코드가 포함 된 글꼴 정말 다소 지나치게 민감 여기 여부를인지 모르는 따라서, 글꼴 내부와 직결 된 매우 지식이 아니에요 및
java.awt.FontFormatException: Font name not found
at sun.font.TrueTypeFont.init(TrueTypeFont.java:527)
at sun.font.TrueTypeFont.<init>(TrueTypeFont.java:162)
at sun.font.FontManager.createFont2D(FontManager.java:2474)
at java.awt.Font.<init>(Font.java:570)
at java.awt.Font.createFont(Font.java:896)
at org.apache.pdfbox.pdmodel.font.PDCIDFontType2Font.getawtFont(PDCIDFontType2Font.java:81)
...
: 내부적으로 Exception
는 JRE 코드에 의해 발생합니다 부서진. 그래도 비린내가 나는 것 같습니다. PDFBox의 단점 같은
1 호 외모 (유니 코드 문자 모양에서 왕복을 할 수 있기를 기대하고 돌아 손실이 PDF의 세계에서 아주 순진한없이 문자 모양). 따라서 덜 순진한 방법을 사용하는 다른 렌더러는이 문제의 영향을받는 텍스트를 제대로 표시하는 데 성공할 가능성이 큽니다.
문제 2는 많은 렌더러에서 장애가 될 수 있습니다.
더 완벽한 글꼴 정보를 포함하도록 PDF 작성 프로세스를 조정할 것을 제안합니다.
출처
2013-05-23 08:30:33
mkl
사용하시는 샘플 PDF 파일을 제공해주십시오. 이미지로 변환되기 전 사전 처리 단계에서 수정해야하는 PDF에 대한 특이성이있을 수 있습니다. – mkl
내가 사용하고있는 PDF 파일에 가입했습니다. – Genjuro
imagemagick 's : convert result.pdf result.png - 리눅스에서 작동합니다 (Windows 버전 convert.exe가 있습니다. 윈도우의 convert.exe와 혼동하지 마십시오). –