0

如果我做错了什么,请告诉我。我想在标签上打印条形码,所以我需要这些条形码的高质量打印输出,所以我正在推动打印机以 300dpi 打印。我做了什么:

  1. 做了一个大的JFrame;宽度:2490 像素,高度:3515 像素,因此它以 1:1 的比例表示 A4 纸(如果打印为 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);

这个类有打印方法:

 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 纸上放置 40 个条码,每个条码的大小为 48.5 毫米 x 25.4 毫米。打印在纸上的是 6 个条码,每个条码的大小为 104 毫米 x 46 毫米(宽度几乎是页面宽度的一半),填充了整张纸。

任何想法,我能做错什么?

4

1 回答 1

0

您的分辨率可能设置为 72 dpi,这会增加图像的大小。

于 2009-10-26T14:16:35.830 回答