[haiku-bugs] [Haiku] #16318: IPP-Everywhere and AirPrint - Print support the XXIst century way

  • From: "Haiku" <trac@xxxxxxxxxxxx>
  • To: undisclosed-recipients: ;
  • Date: Sun, 28 Jun 2020 15:58:49 -0000

#16318: IPP-Everywhere and AirPrint - Print support the XXIst century way
-------------------------+--------------------------
 Reporter:  pulkomandy   |       Owner:  phoudoin
     Type:  enhancement  |      Status:  new
 Priority:  normal       |   Milestone:  Unscheduled
Component:  Printing     |     Version:  R1/beta2
 Keywords:               |  Blocked By:
 Blocking:               |    Platform:  All
-------------------------+--------------------------
 The printing user experience in Haiku is bad. Let's fix that! This ticket
 is a starting point for better printing support. There are many things to
 fix, but I wanted to gather the info in a single place at first.

 **Printer discovery**

 Everything in Haiku is hot-plug. Connect anything to an USB port and it
 will start working immediately. But printers must be added manually
 through the printer preferences. This should not be the case.

 There are 4 things to take care of:
 - Network printers: should use mdns and dns-sd (aka Bonjour/Zeroconf) to
 discover the printer automatically
 - USB: already enumerated in the "transports" when adding a printer, but
 should use the vendor/device ID to automatically configure the printer
 with the correct driver
 - Virtual printers: I think they should be added automatically. When the
 PDF printer add-on is installed, make it available as a printer by
 default.
 - Legacy parallel and serial port printers: the only case where specific
 configuration should be needed. And we may consider ignoring it because no
 one has these ports on their computers anymore anyway. I think it's ok if
 the UI is a bit less friendly for these.

 **Driver selection**

 Until now Haiku has relied mainly on Gutenprint for printer-specific
 drivers, and provided some generic drivers as well (PCL5, PCL6). However,
 and mainly due to efforts from Apple to allow printing from an iPad, there
 has since been a lot of work on driverless printing. The idea is that
 printers now use a common language and need no specific driver: all
 configuration can be discovered from the printer itself. This led to the
 AirPrint standard and later IPP-Everywhere. A lot of modern printers can
 be used in this way.

 There are 3 steps to this:
 - Discovery of a printer: see above, using USB enumeration or Zeroconf.
 - Transport: IPP is used as a transport (and there is an IPP over USB but
 I'm not exactly sure how that works). We already have an IPP transport so
 we should be good to go
 - Data format: these printers expect a raster image (no ps interpreter in
 the printer). The standard formats are JPEG (but it's lossy) and pwg-
 raster which is based on Cups raster format but simplified a bit
 (specification: pwg-5102.4). We don't implement this yet. Printers may
 aditionally implement AppleRaster / image/urf format but this one is not
 documented. Mine also supports PCL3GUI which is a bitmap only variant of
 PCL, apparently, but that's not part of the standard.

 **Printer management and job control**

 Our current printer preferences provides some very minimal job control and
 no printer management. Things like checking ink cartridge presence and ink
 levels, printer status, error messages from the printer, etc, should be
 added.

 The IPP transport allows for this, including getting an icon for the
 printer, localized error and status messages, and a lot more information.
 It also provides the list of available paper formats and other things like
 that.
-- 
Ticket URL: <https://dev.haiku-os.org/ticket/16318>
Haiku <https://dev.haiku-os.org>
The Haiku operating system.

Other related posts: