2012-11-21 20 views
5

iTextライブラリを使用して既存のPDFファイルに余分な情報をスタンプしています。 余分な情報は、カスタムTTFフォントで表示されるテキストです。iText埋め込みttfフォントがAdobe Readerで表示されない

問題は、テキストがAdobe Readerでのみ表示されないことです。 UbuntuのデフォルトのeVinceリーダーやGoogleのオンラインPDFリーダーなどの他のPDFビューアでは、カスタム埋め込みフォントのスタンプテキストがうまく描画されます。

私は、CP1251、BaseFont.Identity_H、...

として複数のエンコーディング、魔法が起こるのコードを試してみました:

PdfReader pdfReader = new PdfReader(new FileInputStream(inputPdf)); 
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileOutputStream("stamped.pdf")); 
PdfContentByte canvas = pdfStamper.getOverContent(1); 
String text = "The stamp"; 
BaseFont bf = BaseFont.createFont("assign.ttf", "Cp1251",BaseFont.EMBEDDED); 
canvas.beginText(); 
canvas.setColorFill(BaseColor.BLUE); 
canvas.setFontAndSize(bf, 13); 
canvas.moveText(310, 600); 
canvas.showText(text); 
pdfStamper.close(); 
+0

[ドキュメント]> [プロパティ]に移動して[フォント]タブを開くと、何が表示されますか?あなたはフォントを見ますか? –

+0

問題が表示されます。おそらく、古いバージョンのiTextを使用しています。 –

答えて

5

あなたは構文の問題を抱えています。 PDFのテキストの状態は、BTETとマークされています。これらの演算子は、beginText()およびendText()メソッドを使用して追加されます。 BTがありますが、ETはありません。 Adobe Readerは他の視聴者よりも厳しいです(そのため、私は他のすべての視聴者よりもAdobe Readerを好む理由です:コードを書くときには構文を尊重する必要があります)。

pdfStamper.close();

良い
canvas.endText(); 

の前に次の行を追加します。まだ、私のbookを読んで、あなたがColumnText.showTextAligned()を使用して、コードの複雑さを軽減することができています。

+1

ありがとうございました。最後のマーカーはAdobe Readerの問題を解決しました。 素晴らしいiTextライブラリの賞もあります。 – nkr1pt

+0

答えを受け入れてくれてありがとう:2000+の評判を得ました;-) –

関連する問題