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

Prasanta Sadhukhan prasanta.sadhukhan at oracle.com
Thu Jun 30 10:31:07 UTC 2016


Hi Phil,

I modified the method to check for "fit" rather than perfect match as 
you suggested.
Please find the modified webrev
http://cr.openjdk.java.net/~psadhukhan/6789262/webrev.01/

Regards
Prasanta
On 6/29/2016 11:29 PM, Philip Race wrote:
> 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/20160630/3d437f0e/attachment.html>


More information about the 2d-dev mailing list