On Tue, 20 Jan 2026 09:11:06 GMT, Prasanta Sadhukhan <[email protected]>
wrote:
> If same `PrinterJob `is reused to first print user-set `PageRange `pages and
> then print ALL pages, it prints the first print job correctly as the page
> range is set but 2nd job doesn't print ALL pages and reprint the same page
> range as `from` and `to` page are not reset and reused
>
> Fix is made to check if page range is not set then print all pages
src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java line 1737:
> 1735: setPageRange(from, to);
> 1736: } else {
> 1737: attributes.add(new PageRanges(1, 9999));
Win32PrintService uses
new PageRanges(1, Integer.MAX_VALUE);
But in this case, don't you just want to remove the attribute (?) if it exists
that is.
src/java.desktop/windows/classes/sun/awt/windows/WPrinterJob.java line 1738:
> 1736: } else {
> 1737: attributes.add(new PageRanges(1, 9999));
> 1738: setPageRange(1, 9999);
If you want to clear this, I think it should be
setPageRange(Pageable.UNKNOWN_NUMBER_OF_PAGES, Pageable.UNKNOWN_NUMBER_OF_PAGES)
those are the initial values set in RasterPrinterJob.
Basically you want to re-set things to exactly as if PageRanges were never set.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/29312#discussion_r2710315794
PR Review Comment: https://git.openjdk.org/jdk/pull/29312#discussion_r2710345208