High-level question. Why is this not an over-ride in PSPrinterJob ?
I'm afraid I did not get much past the first line of the change :
1662 MediaPrintableArea mpa =
1663 (MediaPrintableArea)getPrintService().
1664
getDefaultAttributeValue(MediaPrintableArea.class);
Read the docs for MediaPrintableArea :-
---
To query for the printable area, a client must supply a suitable context.
Without specifying at the very least the size of the media being used
no meaningful value for printable area can be obtained.
---
.. not to mention you assume a non-null return.
and then you use new Paper() .. which is a constructor which
knows nothing about the printer. It is *speced* to return
US letter with one inch margins.
Another reason why this seems like it should be a sub-class over-ride.
Also this looks wrong ---
1672 if ((imgX*2) + imgWid > wid) {
1673 imgWid = wid - imgX*2;
1674 }
You can't assume equal margins.
-phil.
On 7/12/16, 5:05 AM, Prasanta Sadhukhan wrote:
Hi All,
Please review a fix for an issue where it is seen that if user sets
invalid imageablearea via Paper.setImageableArea and
then calls PrinterJob.validatePage() in linux, then it does not get a
valid pageformat
Bug: https://bugs.openjdk.java.net/browse/JDK-6574279
webrev: http://cr.openjdk.java.net/~psadhukhan/6574279/webrev.00/
Fix is to check for margin as noted via CUPS ppdPageSize() and then
calculate to find the valid margin in validatePaper()
similar to what we do in native validatePaper() in windows.
Regards
Prasanta