0

我使用这个网站的源代码来创建一个新的 PDF 文件,它可以工作。

问题是我在PDFWriteDemo.java中写中文的时候: mPDFWriter.addText(70, 50, 12, "各位好"); ,无法正常显示PDF文件中的字符。

相反,它显示???.

4

1 回答 1

0

尝试更改此行:

   outputToFile("helloworld.pdf",pdfcontent,"ISO-8859-1");

至:

   outputToFile("helloworld.pdf",pdfcontent,"UTF-8");

更新

考虑到可能是编码问题,您需要按照以下顺序更改字体和编码:

首先我们发现在 中PDFWriterDemo.java,这一行定义了 Font 和 encoding:

mPDFWriter.setFont(StandardFonts.SUBTYPE, StandardFonts.COURIER, StandardFonts.WIN_ANSI_ENCODING);

其中mPDFWriter是在 中定义的类PDFWriter.java

如您所见,PDFWriter.java有一种方法:

  public void setFont(String subType, String baseFont, String encoding) {
                    mCurrentPage.setFont(subType, baseFont, encoding);
            }

类在哪里mCurrentPage定义Page.java

在此处Page.java

    public void setFont(String subType, String baseFont, String encoding) {
            IndirectObject lFont = mDocument.newIndirectObject();
            mDocument.includeIndirectObject(lFont);
            lFont.setDictionaryContent("  /Type /Font\n  /Subtype /" + subType + "\n  /BaseFont /" + baseFont + "\n  /Encoding /" + encoding + "\n");
            mPageFonts.add(lFont);
    }

然后你会发现实际上他们并没有将字体嵌入到包中,他们只是提供了一个字体的名称,并且使用正确的编码,PDF阅读器会自动加载它们。

因此我认为的解决方案是编辑StandardFonts.java添加PDF标准字体以呈现中文字符和正确的编码。

于 2013-03-27T16:35:47.280 回答