Można zainstalować wydruk PDF, który może działać jako wirtualna drukarka dla aplikacji Java. Zasadniczo, należy zainstalować bezpłatnie dostępną drukarkę PDF i sprawić, że aplikacja java wykryje tę usługę drukowania i wydrukuje dowolny dokument do tej usługi. Pamiętam, miałem tę samą sytuację, gdy nie miałem drukarki, użyłem kodu podanego poniżej do interfejsu mojej aplikacji z wirtualną drukarką.
public class HelloWorldPrinter implements Printable, ActionListener {
public int print(Graphics g, PageFormat pf, int page) throws
PrinterException {
if (page > 0) { /* We have only one page, and 'page' is zero-based */
return NO_SUCH_PAGE;
}
/* User (0,0) is typically outside the imageable area, so we must
* translate by the X and Y values in the PageFormat to avoid clipping
*/
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
/* Now we perform our rendering */
g.drawString("Hello world!", 100, 100);
/* tell the caller that this page is part of the printed document */
return PAGE_EXISTS;
}
public void actionPerformed(ActionEvent e) {
PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(this);
PrintService[] printServices = PrinterJob.lookupPrintServices();
try {
job.setPrintService(printServices[0]);
job.print();
} catch (PrinterException ex) {
Logger.getLogger(HelloWorldPrinter.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String args[]) {
UIManager.put("swing.boldMetal", Boolean.FALSE);
JFrame f = new JFrame("Hello World Printer");
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {System.exit(0);}
});
JButton printButton = new JButton("Print Hello World");
printButton.addActionListener(new HelloWorldPrinter());
f.add("Center", printButton);
f.pack();
f.setVisible(true);
}
}
Czy "drukarka PDF" działa? Nie jestem pewien, czy dokumenty tworzone za każdym razem byłyby wystarczająco unikatowe, by można je było wykorzystać jako część pakietu zautomatyzowanych testów. Jestem też całkiem pewien, że nie ujawniłbym takich rzeczy jak drukarki, takich jak tace. – Charles
czy wyśmiewana drukarka rzeczywiście musi coś zrobić z wprowadzeniem, czy też jest w porządku, jeśli po prostu akceptuje rzeczy i wysyła je do NUL? – eis
wyszukiwać w Internecie? – ggcodes