私は、ユーザーがレイヤーを使用してPDFにテキストを挿入できるアプリを構築しています。
PDF ページ内のテキストの位置は、 JPanel 内のICEPdfを使用して PDF をレンダリングするアプリを使用して設定できます。レイヤーの位置とサイズを選択すると、アプリはiText (v. 5.3.2) を使用してレイヤーを PDF にレンダリングします。
私が直面している問題は、Swing からのフォント レンダリングが、PDF の最終結果と見た目が異なることです。
同じバウンディング ボックス内で Helvetica プレーン フォントを使用したスクリーン ショットを次に示します。
Swing を使用したテキストのレンダリング:
protected void paintComponent(Graphics g){
//for each line...
g.drawString(text, b0, b1);
//b0 and b1 are computed from the selected bounding box for the text
}
私はこれを持っています:
iText を使用したテキストのレンダリング:
PdfTemplate t; //PdfTemplate is created elsewhere
ColumnText ct = new ColumnText(t);
ct.setRunDirection(PdfWriter.RUN_DIRECTION_NO_BIDI);
ct.setSpaceCharRatio(1);
ct.setSimpleColumn(new Phrase(text, font), b0, b1, b3, b4, font.getSize(), Element.ALIGN_BOTTOM);
//b0, b1, b2 and b3 are the bounding box of the text
ct.go();
私はこれを持っています:
問題は、Swing と iText でフォントをまったく同じようにレンダリングするにはどうすればよいかということです。Swing や iText を微調整できるので、どのコードが変更されても、ユーザーにとって真のWYSIWYGエクスペリエンスが必要です。
他のフォントやタイプで試してみましたが、それでもいくつか違いがあります。私はいくつかの設定が欠けていると思います。
ありがとう。