在Java中连接并打印到打印机

在Java中连接并打印到打印机,java,printing,Java,Printing,在Java中有没有一种简单的方法可以完成以下任务 连接到打印机(将是本地打印机,也是唯一连接到机器的打印机) 在两个不同的打印机托盘中打印两页的页面 获取当前打印队列计数,即我有100个项目要打印,34个项目当前已打印,打印机队列现在应为66 您的需求非常具体,因此我不确定Java打印API是否满足您的所有需求。您可以使用直接访问本机操作系统的API,这可能会获得打印队列信息。一些快速提示: 从java打印:请参阅 打印作业的状态:您可以使用以下工具获得有用的内容: 此侦听器的实现 接口应连

在Java中有没有一种简单的方法可以完成以下任务

  • 连接到打印机(将是本地打印机,也是唯一连接到机器的打印机)
  • 在两个不同的打印机托盘中打印两页的页面
  • 获取当前打印队列计数,即我有100个项目要打印,34个项目当前已打印,打印机队列现在应为66

  • 您的需求非常具体,因此我不确定Java打印API是否满足您的所有需求。您可以使用直接访问本机操作系统的API,这可能会获得打印队列信息。

    一些快速提示:

    • 从java打印:请参阅

    • 打印作业的状态:您可以使用以下工具获得有用的内容:

    此侦听器的实现 接口应连接到 DocPrintJob用于监视的状态 打印机的工作。这些回调 方法可以在线程上调用 正在处理打印作业或服务 创建了通知线程。在任何一种情况下 客户端不应执行的情况 这些回调中的处理时间过长


    非常好的打印教程:

    另外,请检查我关于打印机的问题的答案,打印机作业API是您正在寻找的,但检查此项也将有助于:


    打印字节数组的简单java程序

    public class Main {
    
    public static void main(String[] args) throws IOException, InterruptedException {
        String str = "ABCGVDVJHBDKDLNJOKBUHODVWFCVDHGSBDKS";
        byte[] byteArr = str.getBytes();
    
        ByteArrayInputStream fis = new ByteArrayInputStream(byteArr);
        String printerID; // = give printer ID here 
        System.out.println("printerID"+printerID);
        String command = "lp -d " + printerID;
    
        Process child = Runtime.getRuntime().exec(command);
        OutputStream childOut = child.getOutputStream();
    
        byte[] buffer = new byte[100000000];
        int bytesRead;
        while ((bytesRead = fis.read(buffer)) > 0)
        {
            childOut.write(buffer, 0, bytesRead);
        }
        childOut.close();
        int exitVal = child.waitFor();
        InputStream childIn = child.getInputStream();
        BufferedReader is = new BufferedReader(new InputStreamReader(childIn));
        String line;
        boolean retval;
        while ((line = is.readLine()) != null)
        {
            String finalLine = line;
        }
        childIn.close();
        if (exitVal == 0)
        {
            retval = true;
        }
    

    }

    第一个想法是购买类似cups4j的产品。不确定java中的基本打印api是否可以处理此问题。