Java: установить диапазон страниц для диалогового окна печати - PullRequest
9 голосов
/ 02 июня 2011

Я только начинаю , чтобы узнать, как напечатать окно на Java / Swing . (редактировать: только что найдено Руководство по печати Java )

Когда я делаю это:

protected void doPrint() {
    PrinterJob job = PrinterJob.getPrinterJob();
    job.setPrintable(this);
    boolean ok = job.printDialog();
    if (ok) {
        try {
            job.print();
        } 
        catch (PrinterException ex) {
            ex.printStackTrace();
        } 
        finally {

        }
    }
}

Я получаю это диалоговое окно принтера (в Windows XP):

enter image description here

Как изменить диапазон страниц, чтобы он не был 1-9999?

edit: использование Pageable / Book для установки диапазона страниц (как подсказывает @t_barbz) требует PageFormat , в этом случае у меня есть catch-22, так как я бы например, диалоговое окно «Печать», чтобы выбрать это, и я не получаю возвращаемого значения из диалогового окна печати. ​​

Ответы [ 2 ]

4 голосов
/ 02 июня 2011

Для диапазона страниц я считаю, что вам нужно использовать метод setJage (Pageable document) в PrinterJob.Похоже, это должно сработать.

protected void doPrint() {
PrinterJob job = PrinterJob.getPrinterJob();
Book book = new Book();
book.append(this, job.defaultPage());
printJob.setPageable(book);

boolean ok = job.printDialog();
if (ok) {
    try {
        job.print();
    } 
    catch (PrinterException ex) {
        ex.printStackTrace();
    } 
    finally {

    }
}
}
1 голос
/ 08 августа 2017

Наконец, вот простой код:

PrinterJob job = PrinterJob.getPrinterJob();
job.setPrintable(this);
PrintRequestAttributeSet printAttribute = new HashPrintRequestAttributeSet();
printAttribute.add(new PageRanges(1, 100));        
boolean ok = job.printDialog(printAttribute);
if (ok) {
     try {
          job.print();
     } catch (PrinterException ex) {
      /* The job did not successfully complete */
     }
}
...