4

AWT フォントのレンダリングとメトリックは、実際の印刷アプリケーションには適していないようです。フォントのレンダリングは DPI に依存し、FontMetrics は間違った結果を返します。したがって、境界ボックス内に実際のテキストをレンダリングすることは実際には不可能です。

Java が実際のフォントをレンダリングしたり、テキストを水平方向と垂直方向に整列させたり、境界ボックス内にテキストを正確にレンダリングしたりするための代替手段は何ですか?

小さい DPI と 300 DPI の両方で、JPEG と PNG でテキストをレンダリングしています。また、さまざまなフォントを多数使用しています。

4

2 に答える 2

5

1 つの方法は次のとおりです。

  • テキストとフォーマットに適した言語でドキュメントを作成してから、
  • 希望の DPI で一般的な OS アプリケーションを使用して、そのドキュメントを「印刷」またはラスタライズします。

Java には、一般的なテキストベースの形式や多数のライブラリを持つ形式が多数あります。

LaTex には、画像をラスタライズする複数のプラットフォーム用の簡単にインストールできるバイナリがあります。

$ tex2png --help

tex2png について - (La)TeX を PNG 画像に変換する

使い方 tex2png [オプション]

(La)Tex 文字列は、コマンドライン パラメータとして、または STDIN 経由で渡すことができます。STDIN から手動で入力した場合は、ctrl+d を使用して入力を終了します。

オプション -b dvipng の "--bg" オプションに渡す背景色。これは、TeX color \special 構文で指定する必要があります (例: "rgb 0.2 0.2 0.2")。「透明」「透明」も承ります。詳細については、dvipng ヘルプ メッセージを参照してください。デフォルト: 「透明」

-c (La)TeX 文字列。

-d 出力ディレクトリ。下記参照。

-f 完全な入力ドキュメントを指定します。デフォルトでは、tex2png は独自のヘッダーを提供し、入力をドキュメント タグでラップします。このオプションを使用すると、ユーザーはカスタム ヘッダーを含む完全な (La)TeX ドキュメントを提供できます。

-i インライン モード。これにより、出力に高さと奥行きが含まれます。これは、Web ページの垂直方向の配置に使用できます。

-h このヘルプ メッセージを表示します。

-o イメージ パス。下記参照。

-p レンダリングするページ番号。デフォルトは 1 です。

-s "dvipng" に渡されるフォント サイズの引数。デフォルトは 1400 です。

-t 一時作業ディレクトリ。デフォルトでは、「mktemp」でランダムなディレクトリが作成されます。

-T コンテンツの周りの空白を切り取ります (dvipng -T tight)。

OUTPUT 画像パスが設定されている場合、それは画像へのフル パスです。設定されていない場合、画像名は (La)Tex 入力文字列の sha256 ダイジェストに「.png」拡張子が付いたものになります。出力ディレクトリが設定されている場合、画像はそこに保存されます。それ以外の場合は、現在のディレクトリに保存されます。

PS/PDF ファイルの場合、適切な Adob​​e アプリケーション、OS、または ImageMagick (ビデオはこちら)を使用できます。

$ convert -density 300 file.pdf output.png

于 2012-12-31T10:05:14.100 に答える
1

デスクトップ パブリッシング ソフトウェアは、高性能システムの限界に達することがよくあります。Java で DTP を行うのは悪い考えです。高速原子計算に夢中になるので、c/c++ やその他の低レベルのプログラミング言語で書かれたさまざまなプログラムが必要になります。

それが、外部プログラムがさらに優れているという事実で、アンドリューの答えを受け入れる理由です。

デスクトップ パブリッシングのような Java プロジェクトを探している場合は、例としてhttp://community.jaspersoft.com/project/jasperreports-libraryを使用することに満足するかもしれません。

于 2013-01-04T16:10:41.377 に答える