Loading... (original) (raw)

JDK 7u11 and JDK 9 b34 both have the same issue that attempts to pre-populate the native
dialog with copies and page ranges fail.
Test below :-
import javax.print.*;
import javax.print.attribute.*;
import javax.print.attribute.standard.*;
import java.awt.*;
import java.awt.print.*;

public class DlgAttrsBug implements Printable {

public static void main(String args[]) throws Exception {
PrinterJob job = PrinterJob.getPrinterJob();
if (job.getPrintService() == null) {
System.out.println("No printers. Test cannot continue.");
return;
}
job.setPrintable(new DlgAttrsBug());
job.setCopies(2);
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new Copies(2));
aset.add(new PageRanges(3,4));
aset.add(DialogTypeSelection.NATIVE);
if (job.printDialog(aset)) {
job.print(aset);
}
}

public int print(Graphics g, PageFormat pf, int pi)
throws PrinterException {

System.out.println("pi="+pi);
if (pi >= 5) {
return NO_SUCH_PAGE;
}

g.drawString("Page : " + (pi+1), 200, 200);

return PAGE_EXISTS;
}
}