使用 PDFBox 将 UTF-8 编码字符串写入 PDF

发布于 2024-10-26 05:00:38 字数 566 浏览 4 评论 0 原文

我在使用 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();

I am having trouble writing unicode characters out to a PDF using PDFBox. Here is some sample code that generates garbage characters instead of outputting "š". What can I add to get support for UTF-8 strings?

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();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

魄砕の薆 2024-11-02 05:00:40

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

不管怎样,言归正传……如果你想使用 Unicode 字符,你需要嵌入 Unicode 字体。确保您有权嵌入您决定使用的任何字体...我可以推荐开源 GentiumDoulos< /a> 字体,因为它们是免费的、高质量的并且具有全面的 Unicode 支持。

You are using one of the inbuilt 'Base 14' fonts that are supplied with Adobe Reader. These fonts are not Unicode; they are effectively a standard Latin alphabet, though with a couple of extra characters. It looks like the character you mention, a lowercase s with a caron (š), is not available in PDF Latin text... though an uppercase Š is available but curiously on Windows only. See Appendix D of the PDF specification at http://www.adobe.com/devnet/pdf/pdf_reference.html for details.

Anyway, getting to the point... you need to embed a Unicode font if you want to use Unicode characters. Make sure you are licensed to embed whatever font you decide on... I can recommend the open-source Gentium or Doulos fonts because they're free, high quality and have comprehensive Unicode support.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文