我们必须用 Java 构建一些软件,最后打印一些文档。不同的文档应进入打印机的不同托盘。因为在开发过程中,我们没有与客户相同的打印机,所以我们正在寻找一个模拟打印机的小软件。我们应该能够配置该模拟,例如有多少托盘可用。
有谁知道mac或windows这样的工具?
我们必须用 Java 构建一些软件,最后打印一些文档。不同的文档应进入打印机的不同托盘。因为在开发过程中,我们没有与客户相同的打印机,所以我们正在寻找一个模拟打印机的小软件。我们应该能够配置该模拟,例如有多少托盘可用。
有谁知道mac或windows这样的工具?
编写一个抽象层,为客户的“真实”打印机实现一次,为“虚拟”打印机实现一次。为客户版本编写集成测试,在客户的环境中运行这些测试。针对抽象层的代码。
您可以在 Windows 上自己创建一个虚拟打印机,无需任何特殊软件。
在 Windows 7 中:
如果您将其设置为默认打印机,它应该很容易从 java 代码中使用。
您可以安装 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);
}
}