2016-07-08 1 views
1

키릴 문자로 된 HTML 페이지가 있으며 HTML에서 PDF로 변환하기 위해 iText 라이브러리를 사용합니다. 나는이 iText에 직접 사용하여 변환 작업을 수행하는 XMLWorkerHelper을 사용하지 마십시오iText를 통해 PDF를 만드는 동안 표시되는 키릴 문자

OutputStream file = new FileOutputStream(outputFile); 
Document document = new Document(); 
PdfWriter writer = PdfWriter.getInstance(document, file); 
document.open(); 
InputStream is = new ByteArrayInputStream(htmlContentString.getBytes()); 
XMLWorkerHelper.getInstance().parseXHtml(writer, document, is); 
document.close(); 
writer.close(); 
file.close(); 

불행히도, 난 전혀 출력 PDF 파일에서 키릴 문자를 볼 수 없습니다.

PDF 출력을 제대로 얻으려면 소스 HTML 파일 (일부 글꼴 태그, CSS 속성 등)을 어떻게 준비 할 수 있습니까?

+0

@AndyTurner 여기에 어떻게 지정해야합니까? –

+0

가능한 한 [html에서 pdf로 변환, 키릴 문자가 제대로 표시되지 않음] (http://stackoverflow.com/questions/30889217/html-to-pdf-convert-cyrillic-characters-not-displayed-properly) –

+0

'XMLWorkerFontProvider' 인스턴스를 지정하십시오 –

답변

2

iText은 내부적으로 PDF 렌더링에 키릴 문자없이 글꼴을 사용합니다.

그래서 솔루션은 PDF 요소에 대한 키릴 문자 (예를 들어, 기본 Windows 굴림 글꼴)로 글꼴 을 정의한다. 이 매개 변수로 parseXHtml 호출에 CSS 파일을 지정을 통해 할 수있다 :

... XMLWorkerHelper.getInstance().parseXHtml(writer, document, is, getStylesStream()); ... private InputStream getStylesStream() { return PdfReport.class.getResourceAsStream("/reports/styles.css"); } 

styles.css

그러나

* { 
    /* Enforces to use font with Cyrillic letters */ 
    font-family: Arial; 
} 

해야한다,이 방법은 어떤 기본이 iText 스타일을 푼다. 그래서 나는 내 styles.css의 모든 내용을 default.cssxmlworker.jar의 파일에서 복사했습니다.

불행히도 XMLWorkerHelper.getInstance(). getDefaultCSS()를 통해 메모리에로드 된 후에 default.css의 내용을 변경하는 기능은 금지됩니다.