我正在尝试使用PageFormat信息在打印之前修改基于javax.swing的打印输出。我对如何从PrintJob(使用getPrinterJob()和printDialog()获得)获取PageFormat感到难过。我知道有getPageFormat方法,但我无法弄清楚如何获取PrintRequestAttributeSet(不是printJob.getPrintService()。getPrintAttributes())。老实说,我真正想知道的是页面的宽度和高度。有关如何做到这一点的任何想法?感谢。
答案 0 :(得分:2)
运行“假”打印作业的方法不起作用,至少从长远来看是这样。我尝试过这个。起初效果很好......然后一些客户开始报告奇怪的行为。
事实证明,使用一些打印机和一些配置,即使是“假”作业也会导致打印机活动。没有打印文档页面,但是队列活动,作业标题页面,有时还有一些垃圾输出(我记得)。虚假队列条目足以干扰正常打印,在某些情况下,会使用户感到困惑。
是的,提前获取PageFormat是一件痛苦的事。
答案 1 :(得分:0)
如果您只需要页面宽度和高度,我认为PageFormat.getImageableWidth()和
您正在寻找PageFormat.getImageableHeight()。
对不起,那不是你想要的。这对于黑客来说如何:
printable.setFakeJob(true);
job.print();
printable.setFakeJob(false);
job.print();
并在您的可打印中,
public int print(Graphics graphics, PageFormat pf, int pageIndex) {
if (isFakeJob()) {
/* use passed-in PageFormat to set up whatever you need to set up */
return NO_SUCH_PAGE;
} else {
/* do your actual printing */
}
}
不可否认。