何か間違ったことをしているかどうか教えてください。バーコードをラベルに印刷したいので、これらのバーコードに高品質の印刷が必要なので、300DPIでプリントをプッシュしています。私がしたこと:
大きな JFrame を作成しました。幅: 2490px、高さ: 3515px なので、A4 用紙を 1:1 で表します (印刷が 300dpi の場合、これは A4 用紙の解像度です)。
そのJFrameのcontentPaneに40個のバーコード画像を描画します
300dpi で印刷されるように印刷属性を設定します。
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
PrinterResolution pr =
new PrinterResolution(300,300,PrinterResolution.DPI);
MediaPrintableArea mpa=new MediaPrintableArea(8,21,
210-16, 296-42, MediaPrintableArea.MM);
属性セットには次のデータが入力されます:
aset.add( mpa );
aset.add( pr );
aset.add( MediaSizeName.ISO_A4 );
aset.add( new Copies(1) );
aset.add(OrientationRequested.PORTRAIT );
aset.add(PrintQuality.HIGH);
aset.add( Fidelity.FIDELITY_TRUE );
printJob.setPrintable(this);
printJob.print(aset);
このクラスには print メソッドがあります。
public int print(Graphics g, PageFormat pageFormat, int pageIndex) {
if (pageIndex > 0) {
return(NO_SUCH_PAGE);
} else {
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pageFormat.getImageableX(),pageFormat.getImageableY());
disableDoubleBuffering(componentToBePrinted);
componentToBePrinted.paint(g2d);
enableDoubleBuffering(componentToBePrinted);
return(PAGE_EXISTS);
}
その A4 シートには、それぞれ 48.5mm x 25.4mm の 40 個のバーコードが必要です。紙に印刷されたものは、104mm×46mm(ページ幅のほぼ半分の幅)の2倍のバーコードが6枚、紙一面に収まっています。
何が間違っているのでしょうか?