[OpenJDK 2D-Dev] [9] RFR 8170352: The collate option is not checked

Prasanta Sadhukhan prasanta.sadhukhan at oracle.com
Wed Dec 14 09:40:13 UTC 2016


Hi Phil,


On 12/14/2016 1:40 AM, Phil Race wrote:
> Hi,
>
> Thanks for checking that.
>
> The bit I don't like here is that the end-user can then no longer ask 
> for collation
> at all on Linux even though it has some chance of working on some 
> versions.
>
This is the case even without my change and collate option is disabled 
for PrinterJob.
My fix (?) makes it disabled for PrintJob too.
> Hmm ..
>
> http://stackoverflow.com/questions/31056278/postscript-file-is-not-collating-when-cups-copies-is-set
> ---
> In our cups class we were doing a cupsAddOption("copies", "2",.. and 
> cupsAddOption("Collate", "True", .. commands (see examples below). It 
> turns out the the cups "copies" command was killing the Collating if 
> it set to 2. Like the orientation postscript/cups conflict you need to 
> set the cups copies value to 1 to get the collation to work. The 
> postscript file already knows its going to print out, for example 2 
> copies.
> ---
>
> We set NumCopies in the Postscript along with collate :-
>             mPSStream.print(isCollated() ? " /Collate true":"");
>             mPSStream.print(" /NumCopies " +getCopiesInt());
>
> So when we exec we also do "lp -# 2 .. " or whatever do set copies.
>
We are setting copies to 1 in 
http://hg.openjdk.java.net/jdk9/client/jdk/file/dc658d7dde90/src/java.desktop/share/classes/sun/print/PSPrinterJob.java#l735.

One thing is that, in my testing in ubuntu14.04 "collation" is working 
and "uncollation" is not working. When I print 2 copies and do not 
select "collate" option in printer dialog [I enabled collate option by 
commenting out the isLinux check from 
http://hg.openjdk.java.net/jdk9/client/jdk/file/a21bac70753d/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l1062] 

then, it prints Page 0, Page 1, Page 0, Page 1 [same as, when I checked 
"collate" option] in my Ricoh printer in double-sided print. I think for 
uncollation, it should print Page 0, Page 0 back-to-back in 1 copy and 
Page1-Page1 in another copy, right?

Regards
Prasanta
> Does it help if we stop doing that  for the collated case ?
>
>
> -phil.
>
> On 12/10/2016 12:19 AM, Prasanta Sadhukhan wrote:
>>
>>
>>
>> On 12/10/2016 4:58 AM, Phil Race wrote:
>>> Regarding being hard-coded for "Selection", the point there is that 
>>> in the AWT code path we always generate Postscript, whereas in the 
>>> 2D path we may send some other content. Since we generate Postscript 
>>> my instinct here is that Collate should always work since that gets 
>>> embedded in the Postscript. The CUPS filter should then do whatever 
>>> is necessary to generate the right number of collated or uncollated 
>>> copies for the printer. I tracked down the changeset that has the 
>>> code you reference 
>>> http://hg.openjdk.java.net/jdk8/jdk8/jdk/rev/dead66347eca If you 
>>> read the bug report for that : 
>>> https://bugs.openjdk.java.net/browse/JDK-8016737 then it becomes 
>>> clear (sort of) that this was a workaround for the oddity that 
>>> Collate worked on Ubuntu 12.04 but not on Ubuntu 13.04, so the idea 
>>> was to stop saying it was supported. That is very annoying of course 
>>> and I'd love to know if we've rechecked from the source that "CUPS 
>>> does not report collate as a supported attribute"
>> I checked getAttMap (response received from cups)
>> http://hg.openjdk.java.net/jdk9/client/jdk/file/dc658d7dde90/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l1767
>> and there is no "collate-supported" attribute in there.
>>> It is mentioned in CUPS docs. 
>>> https://opensource.apple.com/source/cups/cups-62/doc/spm.shtml?txt#CONSTANTS 
>>> Also the fix you are proposing doesn't seem to change anything that 
>>> will help the test. It expects Collate to be checked. Doesn't it ?
>> The fix does not directly help the test. The idea is to have the test 
>> call first isAttributeCategorySupprted(SheetCollate.class) and only 
>> execute the test if it is supported. It is mentioned inthe bug report.
>> Since, now our code returns false for SheetCollate attribute, my fix 
>> will disable the collate option to prevent anomaly of returning false 
>> for support but enabling the collate option.
>>
>> Regards
>> Prasanta
>>> -phil.
>>>
>>>
>>> On 12/09/2016 12:22 AM, Prasanta Sadhukhan wrote:
>>>>
>>>> Hi All,
>>>>
>>>> In continuation with the below mail, the issue is "collate" option 
>>>> is not checked for linux.
>>>>
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8170352
>>>>
>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/8170352/webrev.00/
>>>>
>>>> Proposed fix is to disable collate option for linux in printer dialog.
>>>>
>>>> Regards
>>>> Prasanta
>>>> On 12/8/2016 4:23 PM, Prasanta Sadhukhan wrote:
>>>>>
>>>>> Hi Phil,
>>>>>
>>>>> I was investigating JDK-8170352: The collate option is not checked 
>>>>> and I found that CUPS does not report collate as supported attribute.
>>>>>
>>>>> It is removed from printRequestAttrib 
>>>>> [http://hg.openjdk.java.net/jdk9/client/jdk/file/a21bac70753d/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l167]
>>>>> so we do not look for collate-supported attribute in CUPS. Infact, 
>>>>> getAttMap does not have any "collate-supported" attribute too!!
>>>>> Also, this code 
>>>>> [http://hg.openjdk.java.net/jdk9/client/jdk/file/a21bac70753d/src/java.desktop/unix/classes/sun/print/IPPPrintService.java#l1062] 
>>>>> has been added [for 8016737]
>>>>> to remove SheetCollate from supported attributes.
>>>>>
>>>>> In light of this, I think we should disabled collate option from 
>>>>> our print dialog even for Toolkit based PrintJob. It seems, from 
>>>>> this code
>>>>> http://hg.openjdk.java.net/jdk9/client/jdk/file/a21bac70753d/src/java.desktop/share/classes/sun/print/ServiceDialog.java#l1251
>>>>> it is enabled if we specify in testcase
>>>>> /job.setDefaultSelection(JobAttributes.DefaultSelectionType.SELECTION); 
>>>>> /in which case isAWT set to true.
>>>>> even though selection is determined by attribute support 
>>>>> [http://hg.openjdk.java.net/jdk9/client/jdk/file/a21bac70753d/src/java.desktop/share/classes/sun/print/ServiceDialog.java#l1320]
>>>>>
>>>>> I could not find why it is hardcoded to setEnabled(true) for 
>>>>> "Selection". Do you know? mercurial history shows that line from 
>>>>> jdk7 and I could not find previous history.
>>>>>  I think there also, we should check for "scSupported" to enable 
>>>>> sheetcollate? Anyways, "Selection" option is not there in linux.
>>>>> Please let me know your views.
>>>>>
>>>>> Regards
>>>>> Prasanta
>>>>
>>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20161214/781ed962/attachment.html>


More information about the 2d-dev mailing list