0

何か間違ったことをしているかどうか教えてください。バーコードをラベルに印刷したいので、これらのバーコードに高品質の印刷が必要なので、300DPIでプリントをプッシュしています。私がしたこと:

  1. 大きな JFrame を作成しました。幅: 2490px、高さ: 3515px なので、A4 用紙を 1:1 で表します (印刷が 300dpi の場合、これは A4 用紙の解像度です)。

  2. そのJFrameのcontentPaneに40個のバーコード画像を描画します

  3. 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枚、紙一面に収まっています。

何が間違っているのでしょうか?

4

1 に答える 1

0

解像度はおそらく72dpiに設定されており、画像のサイズを大きくする効果があります。

于 2009-10-26T14:16:35.830 に答える