我们必须用Java构建一些软件,最后打印一些文档。不同的文件应该放在打印机的不同托盘上。因为在开发过程中我们没有与客户相同的打印机,我们正在寻找一款嘲笑打印机的软件。我们应该能够配置该模拟,例如可用的托盘数量。
有没有人知道这样的mac或windows工具?
答案 0 :(得分:4)
编写一个抽象层,您为客户的“真实”打印机执行一次,为“虚拟”打印机编写一次。编写客户版本的集成测试,在客户的环境中运行这些测试。针对抽象层的代码。
答案 1 :(得分:4)
您可以在Windows上自行创建虚拟打印机,无需任何特殊软件。
在Windows 7中:
如果将其设置为默认打印机,则从java代码中使用它应该很容易。
答案 2 :(得分:0)
您可以安装PDF打印件,该打印件可用作Java应用程序的虚拟打印机。基本上,您要做的是,安装一个免费的PDF打印机,让您的Java应用程序发现该打印服务并打印该服务的任何文档。 我记得,当我没有打印机时,我遇到了同样的情况,我使用下面给出的代码将我的应用程序与虚拟打印机连接起来。
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);
}
}