java: définir la plage de pages pour le dialog d’impression

Je commence tout juste à apprendre à imprimer une fenêtre en Java / Swing . (edit: vient de trouver le guide d’impression Java )

Quand je fais ça:

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 { } } } 

Je reçois la boîte de dialog de cette imprimante (sous Windows XP):

entrez la description de l'image ici

Comment changer la plage de pages afin que ce ne soit pas 1-9999?

edit: utiliser Pageable / Book pour définir la plage de pages (comme @t_barbz le souligne utilement) nécessite un PageFormat , auquel cas j’ai un catch-22, car j’aimerais que la boîte de dialog Imprimer le sélectionne, ce que je ne fais pas semble obtenir une valeur de retour de la boîte de dialog d’impression.

Pour la plage de pages, j’estime que vous devez utiliser la méthode setPageable (Document pageable) de PrinterJob. On dirait que ça devrait faire l’affaire.

 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 { } } } 

Enfin, voici un code simple:

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