0

文字 M の行を含む PDF を生成しました。すべての M の幅は一貫していましたが、それぞれの間の距離は変化していました。最初のカップルは 2 ピクセル、5 番目は 3 ピクセル、次の 4 つは 2 ピクセル、10 番目は 3 ピクセルなどでした。

私のコードでは、M やその間のスペースに絶対的な違いはないため、結論としては、一部の幅の値が座標系で適切にスケーリングできず、余分なピクセルが頻繁に生成されるということだけです。

これは、グリフが描画されたときに PDF が水平方向にどれだけ移動するかを計算する方法です。

ここに画像の説明を入力

標準の 96DPI ディスプレイの計算では、各ピクセルは 0.75 単位で表されます (徹底的にチェックおよびテストされています)。

それを念頭に置いて、Tx 値が 0.75 で割り切れることを確認する必要があります。

これは私が知っていることです:

  1. w0 は widths 配列 (widths[]) からの整数です。
  2. Tfsは0.75で割り切れる数です(私が設定しました)
  3. Th は 100 (デフォルト)
  4. Tc と Tw は両方とも 0 (デフォルト)

したがって、Tj/1000 は整数である必要があります。つまり、Tj は 1000 で割り切れる必要があります。

1 つの方法は、Tj 値を取得して調整することです。これに対する別のアプローチは、Tx 値が計算されたらアクセスし、0.75 で割り切れる最も近い値に変更することです。

iTextでこれを行うにはどうすればよいですか?

それとも私の仮定全体が間違っていますか?

出典:リンク(252ページ)

4

1 に答える 1

1

SOでこの質問が以前に尋ねられたのを見たことがありますが、あなたが何を達成しようとしているのか本当にわかりません。M の文字を等間隔で描画すると等間隔で表示されます。発生しているのは、ディスプレイ テクノロジの制限であり、ピクセル フィッティングが原因です。
96 dpi でピクセル パーフェクトに表示される PDF ファイルを作成することは、PDF 形式が設計された目的ではありません。あるビューアで期待どおりに表示される PDF ファイルを作成しても、別のビューアで同じように表示されるという保証はありません。

于 2013-09-17T22:15:44.527 に答える