15

我无法使用 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();
4

1 回答 1

8

您正在使用随 Adob​​e Reader 提供的内置“Base 14”字体之一。这些字体不是 Unicode;它们实际上是标准的拉丁字母,尽管有几个额外的字符。看起来您提到的字符,带有 caron (š) 的小写 s,在 PDF 拉丁文文本中不可用……尽管大写 Š可用,但奇怪的仅在 Windows 上可用。有关详细信息,请参阅http://www.adobe.com/devnet/pdf/pdf_reference.html上的 PDF 规范的附录 D。

无论如何,切入正题……如果您想使用 Unicode 字符,则需要嵌入 Unicode 字体。确保您获得了嵌入任何您决定使用的字体的许可……我可以推荐开源的GentiumDoulos字体,因为它们是免费的、高质量的并且具有全面的 Unicode 支持。

于 2011-03-25T00:02:34.270 回答