1

可能重复:
使用 PDFBox 将 UTF-8 编码的字符串写入 PDF

我需要使用捷克国家字符创建 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 中获得正确的文本?

谢谢你。

4

1 回答 1

1

我认为它的PDType1Font.TIMES_ROMAN字体不支持您的捷克民族字符。如果您可以设法获取 的.ttf文件Czech national characters,则使用以下获取PDFont如下并使用相同的:

      PDFont font = PDTrueTypeFont.loadTTF( doc, new File( "CheckRepFont.ttf" ) );

CheckRepFont.ttf是您的字体文件名作为示例。用实际更新它。

编辑:

  PDStream pdStream  = new PDStream(doc);
  PDSimpleFont font = PDType1Font.TIMES_ROMAN;
  font.setToUnicode(pdStream);
于 2012-11-07T17:21:33.683 回答