javaで帳票印刷 アンチエイリアス

指定の仕方

こんな指定をします。

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);

定数としては長いので ststic import が便利です

import static java.awt.RenderingHints.*;

と書いておいて

g2.setRenderingHint(KEY_ANTIALIASING, VALUE_ANTIALIAS_ON);

というところまでは短くできます

今回の指定

java.awt.RenderingHints にそれぞれのkey,valueの説明があります。これは"hint"なので、そのまま指定通りにするわけではなく画面なのかプリンタなのか、カラーなのかモノクロームなのかなどの要素を勘案して決めるようです。システム内に「内部値」があって、hintとは1対1で対応させず、組み合わせによって決定しているので不満な場合はかなり広範囲な試行錯誤が必要です。逆にある程度指示を出してあとはうまくやってよということが可能であると信じたくなります。

今回の目的でのおすすめは次の2つ。

g2.setRenderingHint(KEY_ANTIALIASING,VALUE_ANTIALIAS_ON);
g2.setRenderingHint(KEY_TEXT_ANTIALIASING,VALUE_TEXT_ANTIALIAS_ON);

文を書く場所により印刷のみにもプレビューだけにも両方にもできます。残念ながらプレビューの印象と印刷後の印象はかなり異なると思います。

選択肢

APIのjava.awt.RenderingHints に書かれているキーと値の一覧です。KEY_, VALUE_ は省いています。

NoKEY_...VALUE_...
1ALPHA_INTERPOLATIONALPHA_INTERPOLATION_SPEEDALPHA_INTERPOLATION_QUALITYALPHA_INTERPOLATION_DEFAULT
2ANTIALIASINGANTIALIAS_ONANTIALIAS_OFFANTIALIAS_DEFAULT
3COLOR_RENDERINGCOLOR_RENDER_SPEEDCOLOR_RENDER_QUALITYCOLOR_RENDER_DEFAULT
4DITHERINGDITHER_DISABLEDITHER_ENABLEDITHER_DEFAULT
5FRACTIONALMETRICSFRACTIONALMETRICS_OFFFRACTIONALMETRICS_ONFRACTIONALMETRICS_DEFAULT
6INTERPOLATIONINTERPOLATION_NEAREST_NEIGHBORINTERPOLATION_BILINEARINTERPOLATION_BICUBIC
7RENDERINGRENDER_SPEEDRENDER_QUALITYRENDER_DEFAULT
8STROKE_CONTROLSTROKE_NORMALIZESTROKE_PURESTROKE_DEFAULT
9TEXT_ANTIALIASINGTEXT_ANTIALIAS_ON /_OFFTEXT_ANTIALIAS_GASPTEXT_ANTIALIAS_DEFAULT
10TEXT_LCD_CONTRAST100 - 250 の正の整数一般に便利な値は 140-180 の狭い範囲

スクリーンショット

OSやプリンタにもよるので、印刷のテストはやめて画面だけにします。

無指定

3207B

文字だけの指定

g2.setRenderingHint(KEY_TEXT_ANTIALIASING,VALUE_TEXT_ANTIALIAS_ON);

11450B

線だけの指定

g2.setRenderingHint(KEY_ANTIALIASING,VALUE_ANTIALIAS_ON);

文字にも影響している。VALUE_TEXT_ANTIALIAS_OFFを指定すると止まる

11644B

両方の指定

g2.setRenderingHint(KEY_ANTIALIASING,VALUE_ANTIALIAS_ON);
g2.setRenderingHint(KEY_TEXT_ANTIALIASING,VALUE_TEXT_ANTIALIAS_ON);

11644B