0

この Web サイトのソース コードを使用して新しい 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では、この行でフォントとエンコーディングが定義されていることがわかりました。

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 に答える