我第一次尝试打印并发现了这些代码片段:
package main;
import java.awt.print.Book;
import java.awt.print.PageFormat;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import objects.Dokument;
public class Drucker {
public Drucker() {
try {
PrinterJob pj = PrinterJob.getPrinterJob();
Book pb = new Book();
PageFormat pf = new PageFormat();
pf.setOrientation(PageFormat.PORTRAIT);
pb.append(new Dokument(), pf);
pb.append(new Dokument(), pf);
System.out.println(pb.getNumberOfPages());
pj.setPageable(pb);
if(pj.printDialog()) {
pj.print();
}
} catch (PrinterException e) {
e.printStackTrace();
}
}
}
和文档类:
package objects;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
public class Dokument implements Printable {
@Override
public int print(Graphics g, PageFormat pf, int pi) throws PrinterException {
g.setColor(Color.red);
g.fillRect(0, 0, 50, 50);
g.setColor(Color.black);
g.drawString("Hello World", 50, 50);
return 0;
}
}
虽然它能够打印多页,但它们都是空白的。
我的猜测是这与图形有关,但我找不到任何可以实现以使其工作的图形标签。
不返回0,返回:
Printable.NO_SUCH_PAGE
如果 pi
不是正确的页码,Printable.PAGE_EXISTS
如果 pi
是正确的页码并且您在其中渲染了某些内容。