15

PDFBox を使用して Unicode 文字を PDF に書き出すのに問題があります。「š」を出力する代わりに文字化けを生成するサンプル コードを次に示します。UTF-8 文字列をサポートするには何を追加すればよいですか?

PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
PDPageContentStream contentStream = new PDPageContentStream(document, page);

PDType1Font font = PDType1Font.HELVETICA;
contentStream.setFont(font, 12);
contentStream.beginText();
contentStream.moveTextPositionByAmount(100, 400);
contentStream.drawString("š");
contentStream.endText();
contentStream.close();
document.save("test.pdf");
document.close();
4

1 に答える 1

8

Adobe Reader に付属している組み込みの「Base 14」フォントの 1 つを使用しています。これらのフォントは Unicode ではありません。これらは事実上、標準のラテン アルファベットですが、いくつかの文字が追加されています。あなたが言及した文字、カロン(š)付きの小文字のsは、PDFラテン語テキストでは利用できないようです...大文字のŠ利用できますが、不思議なことにWindowsでのみ利用できます。詳細については、 http://www.adobe.com/devnet/pdf/pdf_reference.htmlにある PDF 仕様の付録 D を参照してください。

とにかく、要点を言えば... Unicode 文字を使用する場合は、Unicode フォントを埋め込む必要があります。決定したフォントを埋め込むライセンスがあることを確認してください... オープンソースのGentiumまたはDoulosフォントをお勧めします。それらは無料で高品質で、包括的な Unicode サポートを備えているからです。

于 2011-03-25T00:02:34.270 に答える