使用Android PDF Writer但不支持中文

时间:2013-03-27 16:23:01

标签: android pdf

我使用this website中的源代码创建一个新的PDF文件,它可以正常工作。

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

相反,它会显示???

1 个答案:

答案 0 :(得分:0)

尝试更改此行:

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

为:

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

更新

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

首先我们发现在PDFWriterDemo.java中,此行定义了字体和编码:

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

其中mCurrentPagePage.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标准字体以呈现中文字符和正确的编码。