Подключение и печать на принтере в Java - PullRequest
9 голосов
/ 08 июня 2011

Есть ли в Java простой способ сделать следующее?

  1. Подключение к принтеру (будет локальным принтером и единственным принтером, подключенным к аппарату).
  2. Печать страниц объемом 2 страницы в 2 разных лотках принтера.
  3. Получите текущий счетчик очереди печати, т. Е. У меня есть 100 элементов для печати, и 34 из них уже распечатаны, теперь очередь принтера должна отображать 66.

Ответы [ 4 ]

6 голосов
/ 08 июня 2011

Несколько быстрых подсказок:

Реализации этого слушателя интерфейс должен быть подключен к DocPrintJob для мониторинга состояния работа принтера. Эти обратный звонок методы могут быть вызваны в потоке обработка задания на печать или услуги создана ветка уведомлений. В любом случай, когда клиент не должен выполнять длительная обработка в этих обратных вызовах.

3 голосов
/ 08 июня 2011

Очень хороший урок по печати: http://download.oracle.com/javase/tutorial/2d/printing/index.html

Также проверьте ответы на мой вопрос о принтерах. API Job Printer - то, что вы ищете, но проверка этого также поможет:

Как отправить данные JTable в задание на печать из приложения Java?

1 голос
/ 08 июня 2011

Ваши требования очень специфичны, поэтому я не уверен, что API печати Java отвечают всем вашим требованиям.Вы можете использовать JNA для прямого доступа к API вашей нативной ОС, и это, вероятно, даст вам информацию об очереди печати. ​​

0 голосов
/ 21 марта 2019

Простая 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;
    }

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...