我在使用 PDFBox 将 unicode 字符写入 PDF 时遇到问题。下面是一些生成垃圾字符而不是输出“š”的示例代码。我可以添加什么来获得对 UTF-8 字符串的支持?
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 加上一个抑扬符 (š),在 PDF 拉丁语文本中不可用......尽管是大写的 Šis可用但奇怪的是仅在 Windows 上。请参阅 PDF 规范的附录 D,网址为http://www.adobe.com/devnet/pdf/pdf_reference.html了解详情。
不管怎样,言归正传……如果你想使用 Unicode 字符,你需要嵌入 Unicode 字体。确保您有权嵌入您决定使用的任何字体...我可以推荐开源Gentium or Doulos字体,因为它们是免费的、高质量的并且具有全面的 Unicode 支持。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)