2013-05-30 2 views
5

iText를 사용하여 중국어 문자로 PDF를 만듭니다. 내가 지정한 글꼴, 한자를 사용하여 PDF를 생성하는 iText

FontFactory.registerDirectory("c:/windows/Fonts/"); 

new Phrase("Asian 汉字/漢字 characters", FontFactory.getFont("MS Mincho", 16, Font.NORMAL)); 

아래 코드는 적절하게 (즉, 널되지 않음) MS 명조 글꼴을 검색, 내가 코드를 사용하여로드었던 그러나

FontFactory.getFont("MS Mincho", 16, Font.NORMAL) 

, 생성 된 PDF MS 명조 만 ASCII 텍스트 "아시아 문자"를 표시합니다. 즉, 중국어 문자는 PDF에 표시되지 않습니다.

생성 된 PDF에서 중국어 문자가 누락 된 이유는 무엇입니까? 문제가, 코멘트를 여기에 해상도 해결 한 바와 같이

+1

당신은 당신이) 적절한 [인코딩]와 글꼴을 사용하고 있는지 확인해야 사용 (http://itextpdf.com/themes/keyword.php?id=394) ('BaseFont.IDENTITY_H')와 b) [embed] (http://itextpdf.com/themes/keyword.php?id=71) 그것 ('BaseFont.EMBEDDED')을 포함하고 있습니다. [iText in Action - 2nd Edition] (http://itextpdf.com/book/chapter.php?id=11)의 샘플 [chaptrer 11] (http://itextpdf.com/book/)에서 영감을 얻어보십시오. . – mkl

+1

감사합니다. 이제 생성 된 PDF에 한자가 제대로 표시됩니다. FontFactory.registerDirectory()를 호출 할 필요가 없습니다. BaseFont.createFont ("c : /windows/Fonts/MSMINCHO.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED)를 사용하고 Font (BaseFont, size)를 인스턴스화하기 만하면됩니다. FontFactory.getFont ("MS Mincho")는 한자와 호환되지 않습니다. –

+1

사실'FontFactory'는 적절하게 매개 변수화 된 글꼴 객체를 만드는 데에도 마찬가지로 사용할 수 있습니다. 그러나 사실, 당신은 그것을 필요로하지 않습니다. – mkl

답변

2

:

당신은 당신이) 적절한 encoding (BaseFont.IDENTITY_H와 글꼴을 사용하는 것이 확인해야을)와 b) embed을 (BaseFont.EMBEDDED). samples from chapter 11 (iText in Action — 2nd Edition)에 영감을받습니다.

BaseFont bf = BaseFont.createFont("c:/windows/Fonts/MSMINCHO.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
Font f = Font(bf, size); 

지금이 Font f.

관련 문제