この 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 標準フォントと正しいエンコーディングを追加することです。