[OpenJDK 2D-Dev] [9] RFR JDK-6789262: getPageFormat doesn't apply PrintRequestAttributeSet specified

Philip Race philip.race at oracle.com
Wed Jun 29 17:59:39 UTC 2016


This is actually a little subtle.

The check you are deleting has been there since 2000 ..
and it can't just be removed. But it need adjusting.
This is the subtlety. Most of the attribute checks
are yes/no. I think for this one we need to look at
the actual dimensions and return true if it is "fits"
So isSupportedMediaPrintableArea needs to do more than "equals"
I am not 100% sure that won't surprise some other code but
as far as I can think right now it seems the right thing to do.

-phil.

On 6/27/16, 4:27 AM, Prasanta Sadhukhan wrote:
> Hi All,
>
> Please review a fix for an issue where it was found that setting left 
> margin of 2" is ignored and when we query 
> PrinterJob.job.getPageFormat(PrintRequestAttributeSet)
> we get the default paper mediapritable area of x=1" instead of the set 2".
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-6789262
> webrev: http://cr.openjdk.java.net/~psadhukhan/6789262/webrev.00/
>
> This is because
> it was found that getPageFormat() calls 
> Win32PrintService#isAttributeValueSupported() where we call
> isSupportedMediaPrintableArea()
> to check if the mediaprintable area is matching with the media size 
> that has been cached. It gets the paperID by calling findPaperID() and 
> stores the mpa of that paper in MediaPrintableArea[]
> I see that my printer supports 43 mediasize names (like iso_a4, 
> iso_a5, na_letter etc) and none of the 43 mediaPrintables equals the 
> mpa value of (50.4, 25.4, 133.8, 246.2)mm
>
> ---------------isSupportedMediaPrintableArea()---------
> if (mediaPrintables != null) {
>             for (int i=0; i<mediaPrintables.length; i++) {
>                 if (mpa.equals(mediaPrintables[i])) {
>                     return true;
>                 }
>             }
>         }
> ----------------------
> So, it seems this check isSupportedMediaPrintableArea() is preventing 
> valid mpa values to be propagated to RasterPrinterJob to be used for 
> printing.
>
> I see in linux and mac, *IPPPrintService*#isAttributeValueSupported() 
> is called which does not have this isSupportedMediaPrintableArea() 
> check and there this left margin of 2" is not ignored and stored properly.
>
> So, the proposed fix do away with this isSupportedMediaPrintableArea() 
> call from Win32PrintService#isAttributeValueSupported.
>
> Regards
> Prasanta
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20160629/4a0f6d97/attachment.html>


More information about the 2d-dev mailing list