如果我做错了什么,请告诉我。我想在标签上打印条形码,所以我需要这些条形码的高质量打印输出,所以我正在推动打印机以 300dpi 打印。我做了什么:
做了一个大的JFrame;宽度:2490 像素,高度:3515 像素,因此它以 1:1 的比例表示 A4 纸(如果打印为 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);
这个类有打印方法:
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 毫米(宽度几乎是页面宽度的一半),填充了整张纸。
任何想法,我能做错什么?