【发布时间】:2012-10-27 19:05:56
【问题描述】:
我需要使用捷克国家字符创建 PDF,并且我正在尝试使用 PDFBox 库来实现。 我从一些教程中复制了以下代码:
public void doIt(String file, String message) throws IOException, COSVisitorException
{
PDDocument doc = null;
try
{
doc = new PDDocument();
PDSimpleFont font = PDType1Font.TIMES_ROMAN;
TextToPDF textToPdf = new TextToPDF();
textToPdf.setFont(font);
textToPdf.setFontSize(12);
doc = textToPdf.createPDFFromText(new StringReader(message));
doc.save(file);
}
finally
{
if( doc != null )
{
doc.close();
}
}
}
现在,我正在调用函数 doIt:
app.doIt("test.pdf", "Skákal pes přes oves, přes zelenou louku.");
这完全有效,但在输出 PDF 中我得到:“þÿSkákal pes pYes oves, pYes zelenou louku。”
我试图找到如何在 PDFBox 中设置 UTF-8 编码,但恕我直言,互联网上没有解决方案。
您有什么想法,如何在输出 PDF 中获得正确的文本?
谢谢。
【问题讨论】:
-
在提问之前,请在 stackoverflow 的其他地方寻找已经回答过的这个问题。 stackoverflow.com/questions/5425251/…
-
我已经看过这个了。它看起来很棒,但字符“š”是我能够通过其转义码以正确编码写入 PDF 的唯一字符。字符“š”在 UTF-8 表中有两个不同的代码,并且只有一个有效。 (更多:doc.infosnel.nl/extreme_utf-8.html)不幸的是,我需要的所有其他字符在 UTF-8 表中只有一个代码,这些代码不起作用。转义码还有更多问题..
-
您是否尝试过有关嵌入 Gentium 或 Doulus 字体的答案?
-
不,我没有。我将使用 iText 来做这件事。虽然我认为这些字体并不能解决任何问题,因为在捷克共和国我们通常使用 Times new roman、Arial 等字体。但感谢您的帮助。
标签: java utf-8 internationalization pdfbox