1

重複の可能性:
PDFBox を使用して UTF-8 でエンコードされた文字列を PDF に書き込む

チェコの国別文字を使用して PDF を作成する必要があり、PDFBox ライブラリを使用して作成しようとしています。いくつかのチュートリアルから次のコードをコピーしました。

public void doIt(String file, String message) throws IOException, COSVisitorException
{
    PDDocument doc = null;
    try
    {
        doc = new PDDocument();
        PDSimpleFont font = PDType1Font.TIMES_ROMAN;

        TextToPDF textToPdf = new TextToPDF();

        textToPdf.setFont(font);
        textToPdf.setFontSize(12);
        doc = textToPdf.createPDFFromText(new StringReader(message));
        doc.save(file);
    }
    finally
    {
        if( doc != null )
        {
            doc.close();
        }
    }
}

今、私は関数 doIt を呼び出しています:

app.doIt("test.pdf", "Skákal pes přes oves, přes zelenou louku.");

これは完全に機能しますが、出力 PDF には次のように表示されます。

PDFBoxでUTF-8エンコーディングを設定する方法を見つけようとしましたが、私見ではインターネット上でこれに対する解決策はありません。

出力PDFで正しいテキストを取得する方法はありますか?

ありがとうございました。

4

1 に答える 1

1

PDType1Font.TIMES_ROMANチェコの国民文字をサポートしていないフォントだと思います。.ttfのファイルを取得できた場合はCzech national characters、以下を使用して以下のように取得PDFontし、同じものを使用します。

      PDFont font = PDTrueTypeFont.loadTTF( doc, new File( "CheckRepFont.ttf" ) );

CheckRepFont.ttfとして、フォントファイル名を次に示します。実際のもので更新します。

編集:

  PDStream pdStream  = new PDStream(doc);
  PDSimpleFont font = PDType1Font.TIMES_ROMAN;
  font.setToUnicode(pdStream);
于 2012-11-07T17:21:33.683 に答える