嘲笑打印机

时间:2012-12-20 08:30:43

标签: java web-applications printing

我们必须用Java构建一些软件,最后打印一些文档。不同的文件应该放在打印机的不同托盘上。因为在开发过程中我们没有与客户相同的打印机,我们正在寻找一款嘲笑打印机的软件。我们应该能够配置该模拟,例如可用的托盘数量。

有没有人知道这样的mac或windows工具?

3 个答案:

答案 0 :(得分:4)

编写一个抽象层,您为客户的“真实”打印机执行一次,为“虚拟”打印机编写一次。编写客户版本的集成测试,在客户的环境中运行这些测试。针对抽象层的代码。

答案 1 :(得分:4)

您可以在Windows上自行创建虚拟打印机,无需任何特殊软件。

在Windows 7中:

  1. 控制面板
  2. 设备和打印机
  3. [右键单击]添加打印机
  4. 添加本地打印机
  5. 使用现有端口(假设它已存在,如果不存在,则创建一个新端口)
  6. 文件:(打印到文件),NUL :(打印无处)或CON :(打印到控制台)
  7. 从打印机列表中选择您要模拟的打印机。
  8. 如果将其设置为默认打印机,则从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);
}
}