この Web サイトのソース コードを使用して新しい PDF ファイルを作成しましたが、動作します。
問題は、 PDFWriteDemo.java に中国語を書くときです: mPDFWriter.addText(70, 50, 12, "各位好"); 、PDFファイルの文字を正常に表示できません。
代わりに、それは示しています???
。
この Web サイトのソース コードを使用して新しい PDF ファイルを作成しましたが、動作します。
問題は、 PDFWriteDemo.java に中国語を書くときです: mPDFWriter.addText(70, 50, 12, "各位好"); 、PDFファイルの文字を正常に表示できません。
代わりに、それは示しています???
。
この行を変更してみてください:
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 標準フォントと正しいエンコーディングを追加することです。