java print api - 以300dpi打印JComponent

时间:2009-07-08 11:37:28

标签: java graphics printing resolution

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

  1. 制作了一个大JFrame;宽度:2490像素,高度:3515像素,因此它以1:1的比例表示A4纸(如果打印为300dpi,则为A4纸分辨率)

  2. 将40个条形码图像绘制到该JFrame的

  3. 的contentPane上
  4. 设置打印属性,以便以300dpi打印:

  5. 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.5mm x 25.4mm。 在纸上打印的是6个条形码,每个条形码的尺寸为104mm x 46mm(宽度几乎是页面宽度的一半),可以满足整张纸的要求。

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

1 个答案:

答案 0 :(得分:0)

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