我正在尝试使用 PageFormat 信息在打印之前修改基于 javax.swing 的打印输出。我对如何从 PrintJob(使用 getPrinterJob() 和 printDialog() 获得)获取 PageFormat 感到困惑。我知道有 getPageFormat 方法,但我不知道如何获取 PrintRequestAttributeSet(它不是 printJob.getPrintService().getPrintAttributes())。老实说,我真正想知道的是页面的宽度和高度。关于我如何做到这一点的任何想法?谢谢。
Alex
问问题
2029 次
2 回答
2
运行“假”打印作业的方法是行不通的,至少从长远来看是这样。我尝试过这个。起初效果很好……然后一些客户开始报告奇怪的行为。
事实证明,对于某些打印机和某些配置,即使是“假”作业也会导致打印机出现活动。没有打印文档页面,但队列活动、作业标题页,有时还有一些垃圾输出(我记得)。在某些情况下,伪造的队列条目足以干扰正常打印,并使用户感到困惑。
是的,提前获取 PageFormat 是一件很痛苦的事情。
于 2010-12-01T20:14:53.190 回答
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 */
}
}
不漂亮,诚然。
于 2009-04-26T21:50:15.433 回答