2012-09-26 3 views
0

저는 IText에서 인코딩과 관련이 있다고 생각합니다.IText 특수 문자 인코딩

xsl에서 보고서를 개발했으며 사용자 지정 .otf 파일에서 일부 특수 문자를 인쇄하려고합니다. 끝내고 .xsl 코드 끝내고 .xsl 코드는 HTML로 변환되고, 그 후

<span class="symbol card-logo">&#xf000;</span> 

첫째. HTML 코드는 브라우저에서 원하는 모든 문자로 작동합니다. 하지만 그 후 HTML String을 ITextRenderer에 전달합니다. 렌더러에 글꼴을 추가하는 동안 내가는 BaseFont.IDENTITY_H을 추가 할 때

ITextRenderer renderer = new ITextRenderer(); 
renderer.getFontResolver().addFont(otfFile.getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 
byte[] bytes = htmlDocumentString.toString().getBytes("UTF-8"); 

ByteArrayInputStream bais = new ByteArrayInputStream(bytes); 
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 

InputSource is = new InputSource(bais); 
Document doc = builder.parse(is); 

renderer.setDocument(doc, null); 

renderer.layout(); 
renderer.createPDF(outputStream); 
outputStream.flush(); 
outputStream.close(); 

는 거의 문제를 해결,하지만 다른 문자는 보고서에서 사라합니다 (&#8482; - 상표 로고)

이상한 부분 : 이 코드와 같이 &#xf000; 문자가 보고서의 아무 곳이나 인쇄되는 경우에만 실제로 상표 로고가 인쇄됩니다. 그렇지 않으면 "공간"만 인쇄됩니다. 또한 BaseFont.IDENTITY_H을 추가하지 않으면 상표 로고가 제대로 작동하지만 &#xf000;에는 문제가 없습니다.

너무 혼란스럽지 않기를 바랍니다.

&#xf000; 문자가 인쇄되면 "문자 창"이 늘어나서 상표 로고가 잘 인쇄 된 것처럼 보입니다. 그러나 나는 이것에 관해 확실하지 않다.

&#xf000 - icon; 
&#8482 - company logo 

답변

0

공백을 제거하고 공백을 제거하는 방법은 어떻습니까?

그래서 해결할 수 있습니다.