2009-07-08 55 views
0

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

  1. 做了一个大的JFrame;宽度:2490px,高度:3515px所以它代表在1 A4纸:1次测量(这是A4纸的分辨率,如果打印是成为300dpi的)

  2. 绘制40幅条形码图像上的contentPane该JFrame的

  3. 设置的打印属性,以便将在300dpi打印:

PrintRequestAttributeSet ASET = 新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毫米×25.4毫米。 打印在纸上的是6个条形码,每个条形码的尺寸都增加了104mm×46mm(宽度几乎是纸张宽度的一半),满足了整个纸张的要求。

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

+0

您是否找到解决方案? – MyTitle 2012-08-31 11:25:54

回答

0

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