使用PDFBox将UTF-8编码的string写入PDF
我无法使用PDFBox将unicode字符写入PDF。 这是一些示例代码,生成垃圾字符,而不是输出“š”。 我可以添加什么来获得对UTF-8string的支持?
PDDocument document = new PDDocument(); PDPage page = new PDPage(); document.addPage(page); PDPageContentStream contentStream = new PDPageContentStream(document, page); PDType1Font font = PDType1Font.HELVETICA; contentStream.setFont(font, 12); contentStream.beginText(); contentStream.moveTextPositionByAmount(100, 400); contentStream.drawString("š"); contentStream.endText(); contentStream.close(); document.save("test.pdf"); document.close();
您正在使用随Adobe Reader提供的内置“Base 14”字体之一。 这些字体不是Unicode; 他们实际上是一个标准的拉丁字母,虽然有一些额外的字符。 它看起来像你提到的字符,一个小写字母s和一个caron(š),在PDF拉丁文本中不可用…虽然大写字母Š可用,但只在Windows上好奇。 有关详细信息,请参阅http://www.adobe.com/devnet/pdf/pdf_reference.html上; PDF规范的附录D.
无论如何,要做到这一点……如果你想使用Unicode字符,你需要embedded一个Unicode字体。 确保你被授权embedded你决定的任何字体…我可以推荐开源的Gentium或Doulos字体,因为它们是免费的,高质量的并且有全面的Unicode支持。