如何在java中设置打印页面的大小?
问题描述:
我已经编写了一个使用Java打印API从打印机打印页面的程序。我相信我已经将代码设置为可以将页面大小设置为字母,但它仍然可以打印出打印机默认的大小。这是我的printPage()
方法:如何在java中设置打印页面的大小?
public void printPage() {
getTot();
PrinterJob job = PrinterJob.getPrinterJob();
PageFormat pf = job.defaultPage();
Paper paper = pf.getPaper();
paper.setSize(8.5 * 72, 11 * 72);
paper.setImageableArea(0.5 * 72, 0.0 * 72, 7.5 * 72, 10.5 * 72);
pf.setPaper(paper);
job.setPrintable(this);
boolean ok = job.printDialog();
if (ok) {
if (cov)
try {
for (j = 0; j < printPaths.size(); j++)
job.print();
cov = false;
} catch (PrinterException ex) {
System.out.println(ex.getMessage());
}
if (summ)
try {
job.print();
summ = false;
} catch (PrinterException ex) {
System.out.println(ex.getMessage());
}
}
}
我在做什么错了?
答
你能尝试添加这段代码并重新运行:
Book book = new Book();//java.awt.print.Book
book.append(this, pf);
job.setPageable(book);
,而不是
job.setPrintable(this);
答
书并没有为我和我的多页例如工作(结果是印刷只有第一页),但它给了我另一个想法。相反的:
Book book = new Book();//java.awt.print.Book
book.append(this, pf);
job.setPageable(book);
我尝试另一个重载的方法和它的工作的所有页面:
PageFormat pf = job.defaultPage();
pf.setPaper(paper);
job.setPrintable(this, pf);
如果你想自定义纸张尺寸,您需要将其转发给打印方法作为参数(哪个Java将为你做,但你必须通过它setPrintable方法)。在方法开始执行后更改PaperFormat仅对第二页和其他页面有效,或根本没有任何效果。
无论如何,感谢你们俩。
+0
在执行打印作业之前,在设置页面格式之前,不会对单页文档产生任何影响 – GameDroids
哇。这是完美的。它甚至现在打印速度更快!你能解释一下吗? – SaintWacko
很高兴为你工作:),它提供了你的页面可以有不同的页面格式的功能,我相信你可以提供不同的页面不同的格式,虽然我从来没有用过它:)。 – mprabhat
啊,好的。那么它工作得很好,谢谢你的帮助。 – SaintWacko