Open Bug 1658394 Opened 4 years ago Updated 1 year ago

Add per-paper-size duplex information for CUPS printers

Categories

(Core :: Printing: Setup, enhancement, P5)

Firefox 81
enhancement

Tracking

()

81 Branch
Tracking Status
firefox81 --- affected

People

(Reporter: nordzilla, Unassigned)

References

(Blocks 1 open bug)

Details

(Whiteboard: [print2020])

Attachments

(3 obsolete files)

We should be able to determine on a per-paper basis if the printer supports duplex printing for a particular paper size.

This patch will introduce a "supports duplex" member to the nsIPaper interface along with an implementation for CUPS printers.

Ongoing list of example printer and duplex support for paper sizes.

Canon iX6800 series { paperCount = 33 } { duplexPaperCount = 21 }
        duplex(true)   media.custom_55 x 91mm_55 x 91mm
    duplex(false)      media.custom_55 x 91mm_55 x 91mm (Borderless)
        duplex(true)   3.5 x 5″
    duplex(false)      3.5 x 5″ (Borderless)
        duplex(true)   media.jpn_you6_98 x 190mm
        duplex(true)   Hagaki
    duplex(false)      Hagaki (Borderless)
        duplex(true)   4 x 6″
    duplex(false)      4 x 6″ (Borderless)
        duplex(true)   Envelope #10
        duplex(true)   Envelope You 4
        duplex(true)   Envelope DL
        duplex(true)   5 x 7″
    duplex(false)      5 x 7″ (Borderless)
        duplex(true)   A5
        duplex(true)   JIS B5
        duplex(true)   media.custom_200 x 148mm_200 x 148mm
        duplex(true)   8 x 10″
    duplex(false)      8 x 10″ (Borderless)
        duplex(true)   A4
    duplex(false)      A4 (Borderless)
        duplex(true)   US Letter
    duplex(false)      US Letter (Borderless)
        duplex(true)   US Legal
        duplex(true)   media.custom_10 x 12in_10 x 12in
    duplex(false)      media.custom_10 x 12in_10 x 12in (Borderless)
        duplex(true)   JIS B4
        duplex(true)   11 x 17″
    duplex(false)      11 x 17″ (Borderless)
        duplex(true)   A3
    duplex(false)      A3 (Borderless)
        duplex(true)   media.custom_329 x 483mm_329 x 483mm
    duplex(false)      media.custom_329 x 483mm_329 x 483mm (Borderless)

PDX3 FRONTIER { paperCount = 23 } { duplexPaperCount = 23 }
        duplex(true)   Envelope Monarch
        duplex(true)   Hagaki
        duplex(true)   100 x 150mm
        duplex(true)   4 x 6″
        duplex(true)   Envelope #10
        duplex(true)   A6
        duplex(true)   Envelope DL
        duplex(true)   5 x 8″
        duplex(true)   JIS B6
        duplex(true)   Oufuku Reply Postcard
        duplex(true)   A5
        duplex(true)   CEnvelope 5
        duplex(true)   Envelope B5
        duplex(true)   JIS B5
        duplex(true)   media.custom_184 x 260mm_184 x 260mm
        duplex(true)   Executive
        duplex(true)   media.custom_195 x 270mm_195 x 270mm
        duplex(true)   ROC 16k
        duplex(true)   A4
        duplex(true)   US Letter
        duplex(true)   Foolscap
        duplex(true)   8.5 x 13.4″
        duplex(true)   US Legal

PDX3 Wilderness { paperCount = 58 } { duplexPaperCount = 29 }
        duplex(true)   Envelope Monarch
    duplex(false)      Envelope Monarch (Borderless)
        duplex(true)   Envelope #10
    duplex(false)      Envelope #10 (Borderless)
        duplex(true)   A6
    duplex(false)      A6 (Borderless)
        duplex(true)   Envelope DL
    duplex(false)      Envelope DL (Borderless)
        duplex(true)   CEnvelope 6
    duplex(false)      CEnvelope 6 (Borderless)
        duplex(true)   JIS B6
    duplex(false)      JIS B6 (Borderless)
        duplex(true)   Statement
    duplex(false)      Statement (Borderless)
        duplex(true)   A5
    duplex(false)      A5 (Borderless)
        duplex(true)   CEnvelope 5
    duplex(false)      CEnvelope 5 (Borderless)
        duplex(true)   JIS B5
    duplex(false)      JIS B5 (Borderless)
        duplex(true)   Executive
    duplex(false)      Executive (Borderless)
        duplex(true)   media.custom_195 x 267mm_195 x 267mm
    duplex(false)      media.custom_195 x 267mm_195 x 267mm (Borderless)
        duplex(true)   8 x 10″
    duplex(false)      8 x 10″ (Borderless)
        duplex(true)   8 x 13″
    duplex(false)      8 x 13″ (Borderless)
        duplex(true)   media.custom_8.25 x 14in_8.25 x 14in
    duplex(false)      media.custom_8.25 x 14in_8.25 x 14in (Borderless)
        duplex(true)   A4
    duplex(false)      A4 (Borderless)
        duplex(true)   Folio (Special)
    duplex(false)      Folio (Special) (Borderless)
        duplex(true)   US Letter
    duplex(false)      US Letter (Borderless)
        duplex(true)   Foolscap
    duplex(false)      Foolscap (Borderless)
        duplex(true)   US Legal
    duplex(false)      US Legal (Borderless)
        duplex(true)   ISO SRA4
    duplex(false)      ISO SRA4 (Borderless)
        duplex(true)   10 x 14″
    duplex(false)      10 x 14″ (Borderless)
        duplex(true)   JIS B4
    duplex(false)      JIS B4 (Borderless)
        duplex(true)   267 x 389mm
    duplex(false)      267 x 389mm (Borderless)
        duplex(true)   11 x 15″
    duplex(false)      11 x 15″ (Borderless)
        duplex(true)   11 x 17″
    duplex(false)      11 x 17″ (Borderless)
        duplex(true)   A3
    duplex(false)      A3 (Borderless)
        duplex(true)   12 x 18″
    duplex(false)      12 x 18″ (Borderless)
        duplex(true)   ISO SRA3
    duplex(false)      ISO SRA3 (Borderless)
Status: NEW → ASSIGNED

We could also begin by just pasting the printer's answer over all the paper sizes if we need the API to be ready and working before we have implementations. That might be preferable to give the frontend folks more time to use this information.

I'm finally getting back to this.

That's not a bad idea. It would preserve the same behavior that already exists and exposes the API to the front end. That way it could land first and shouldn't make any difference once the change gets more granular.

This patch adds a boolean to nsIPaper for whether duplex printing is
supported for that paper size on a given printer. To start simply, each
paper will reflect the printer's duplex support as a whole. This is no
different from the current setup which, has supportsDuplex as an
attribute of the printer itself. Part 2 will add more grandular info.

Attachment #9171278 - Attachment is obsolete: true

This patch adds a boolean to nsIPaper for whether duplex printing is
supported for that paper size on a given printer. To start simply, each
paper will reflect the printer's duplex support as a whole. This is no
different from the current setup which, has supportsDuplex as an
attribute of the printer itself. Part 2 will add more grandular info.

Attachment #9171280 - Attachment description: Bug 1658394 - Add SupportsDuplex bool to nsIPaper → Bug 1658394 - Part 1: Add SupportsDuplex bool to nsIPaper r=jwatt,alaskanemily
Attachment #9171305 - Attachment description: Bug 1658394 - Part2: Add per-paper duplex info for CUPS → Bug 1658394 - Part 2: Add per-paper duplex info for CUPS
Whiteboard: [print2020_v81] → [print2020_v82]
Attachment #9171305 - Attachment description: Bug 1658394 - Part 2: Add per-paper duplex info for CUPS → Bug 1658394 - Part 2: Add per-paper duplex info for CUPS r=jwatt,alaskanemily
Whiteboard: [print2020_v82] → [print2020_v83]
See Also: → 1666734
Attachment #9171305 - Attachment is obsolete: true
Attachment #9171280 - Attachment description: Bug 1658394 - Part 1: Add SupportsDuplex bool to nsIPaper r=jwatt,alaskanemily → Bug 1658394 - Add supportsDuplex bool to nsIPaper and Implement for CUPS r=jwatt,alaskanemily

Hmm, after compiling the list of duplex sizes in comment #0

It's looking bizarrely like the duplex sizes are tied to Borderless vs. Not Borderless.

This doesn't exactly seem like it would be accurate to me.

I'm going to continue investigating to see if I can get the values via an IPP method and see if that changes anything.

Attachment #9171280 - Attachment description: Bug 1658394 - Add supportsDuplex bool to nsIPaper and Implement for CUPS r=jwatt,alaskanemily → Bug 1658394 - Add supportsDuplex bool to nsIPaper r=jwatt,alaskanemily,emilio
Whiteboard: [print2020_v83] → [print2020_v84]
Blocks: 1666734
Whiteboard: [print2020_v84] → [print2020_v85]
Whiteboard: [print2020_v85] → [print2020_v87]

The current implementation of duplex printing in Firefox is continuing to use a per-printer look-up, rather than a per-paper lookup.

It is not clear that a per-paper-size lookup is easily or readily achievable, nor is there a dire need for it at the moment.

In an ideal world, a printer that has multiple paper trays, some of which some support duplex printing and some don't, should be able to differentiate between the two, instead of reporting that the printer, as a whole, either does or does not support duplex.

The likelihood of such edge-case behavior occurring where a printer incorrectly reports duplex information based on differing paper tray capabilities seems low.

If problems should arise related to this behavior, we should continue investigating ways to get this information on a per-paper bases. For now, I am unassigning myself from this bug.

The existing patch that is attached to this bug was an attempt to propagate the singular printer duplex information to each paper size so that it is at least coming from the "right place" if we were able to get more granular information in the future, but this never landed. Making such a change now would also require changes to the front-end code (print.js) to change where the duplex information is retrieved.

Assignee: enordin → nobody
Severity: S3 → N/A
Status: ASSIGNED → NEW
Priority: P2 → P5
Whiteboard: [print2020_v87] → [print2020]
Attachment #9171280 - Attachment is obsolete: true
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: