All of lore.kernel.org
 help / color / mirror / Atom feed
* [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers
@ 2013-01-09 18:49 Till Kamppeter
  2013-01-09 19:53 ` Michael Sweet
  0 siblings, 1 reply; 9+ messages in thread
From: Till Kamppeter @ 2013-01-09 18:49 UTC (permalink / raw)
  To: Michael Sweet; +Cc: Open Printing

Hi,

on today's OpenPrinting conference call Ira told that first IPP 
Everywhere printers will get available on the market.

I am thinking about use of IPP Everywhere printers with Linux. There are 
two questions:

1. How to print from a Linux machine to an IPP Everywhere printer?
------------------------------------------------------------------

The intention of IPP Everywhere printers is that they get available to 
clients without any client-side configuration or driver. Now ho am I 
supposed to implement this on a Linux machine so that the available IPP 
Everywhere printers appear in the print dialogs (GTK, Qt, LibreOffice) 
of the applications and the user-settable options for the printers get 
shown in the dialog? Am I supposed to set up a CUPS queue? Do I have to 
generate a PPD file somehow (or is CUPS providing a virtual PPD file)? 
Or is it the full responsibility of the print dialog (no CUPS daemon 
needed) to browse the printer's Bonjour broadcasts, to read out the 
options from the IPP attributes and display the appropriate options? 
Probably I will need a local CUPS queue so that the application's PDF 
goes through pdftopdf and if the printer is not a PDF printer also 
through pdftoraster and rastertopwg? How do I tell to the CUPS queue to 
use these filters when it has no PPD file?


2. How to make a Linux CUPS server emulate IPP Everywhere?
----------------------------------------------------------

Another use case for IPP Everywhere is having a Linux machine running 
CUPS and with a conventional (non-IPP Everywhere) printer connected via 
network or USB and a CUPS queue with driver and PPD (HPLIP, Gutenprint, 
PostScript, etc.). Now I have a mobile device or TV set (Android, 
Windows Phone, ...) which supports printing on IPP Everywhere printers. 
How do I make CUPS emulate IPP Everywhere, so that the shared CUPS 
queues appear like IPP Everywhere printers? Or does CUPS do this already?

    Till

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers
  2013-01-09 18:49 [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers Till Kamppeter
@ 2013-01-09 19:53 ` Michael Sweet
  2013-01-10 14:20   ` Till Kamppeter
  2013-01-28 21:20   ` Till Kamppeter
  0 siblings, 2 replies; 9+ messages in thread
From: Michael Sweet @ 2013-01-09 19:53 UTC (permalink / raw)
  To: Till Kamppeter; +Cc: Open Printing

Till,

Responses inline...

On Jan 9, 2013, at 1:49 PM, Till Kamppeter <till.kamppeter@gmail.com> wrote:
> ...
> 1. How to print from a Linux machine to an IPP Everywhere printer?
> ------------------------------------------------------------------
> ...

Currently the only way to do this is to query the printer and generate a PPD file from the data. Then add the queue.  All of the generated PPDs should contain:

    *cupsFilter2: "application/vnd.cups-raster image/pwg-raster 100 rastertopwg"

Printers with PDF support should list:

    *cupsFilter2: "application/vnd.cups-pdf application/pdf 0 -"

Printers with JPEG support should list:

    *cupsFilter2: "image/jpeg image/jpeg 0 -"

I have this on my to-do list for CUPS, but thus far haven't had the time to write it...

> 2. How to make a Linux CUPS server emulate IPP Everywhere?
> ----------------------------------------------------------
> 
> Another use case for IPP Everywhere is having a Linux machine running CUPS and with a conventional (non-IPP Everywhere) printer connected via network or USB and a CUPS queue with driver and PPD (HPLIP, Gutenprint, PostScript, etc.). Now I have a mobile device or TV set (Android, Windows Phone, ...) which supports printing on IPP Everywhere printers. How do I make CUPS emulate IPP Everywhere, so that the shared CUPS queues appear like IPP Everywhere printers? Or does CUPS do this already?

CUPS already implements the required (and many of the optional) parts of IPP Everywhere, sans WS-Discovery (which really needs system-level support and I have 0 interest in implementing it...)  You just need to add the following to cupsd.conf to make the Bonjour registrations report the _print subtype:

    BrowseDNSSDSubTypes _cups,_print

Of course, without the WS-Discovery stuff your WinPhone won't be able to discover the printer, but AFAIK Microsoft has not yet implemented IPP Everywhere...

________________________________________________________________________
Michael Sweet, Senior Printing System Engineer, PWG Chair


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers
  2013-01-09 19:53 ` Michael Sweet
@ 2013-01-10 14:20   ` Till Kamppeter
  2013-01-10 16:49     ` Michael Sweet
  2013-01-28 21:20   ` Till Kamppeter
  1 sibling, 1 reply; 9+ messages in thread
From: Till Kamppeter @ 2013-01-10 14:20 UTC (permalink / raw)
  To: Michael Sweet; +Cc: Open Printing

On 01/09/2013 08:53 PM, Michael Sweet wrote:
> Till,
>
> Responses inline...
>
> On Jan 9, 2013, at 1:49 PM, Till Kamppeter <till.kamppeter@gmail.com> wrote:
>> ...
>> 1. How to print from a Linux machine to an IPP Everywhere printer?
>> ------------------------------------------------------------------
>> ...
>
> Currently the only way to do this is to query the printer and generate a PPD file from the data. Then add the queue.  All of the generated PPDs should contain:
>
>      *cupsFilter2: "application/vnd.cups-raster image/pwg-raster 100 rastertopwg"
>
> Printers with PDF support should list:
>
>      *cupsFilter2: "application/vnd.cups-pdf application/pdf 0 -"
>
> Printers with JPEG support should list:
>
>      *cupsFilter2: "image/jpeg image/jpeg 0 -"
>
> I have this on my to-do list for CUPS, but thus far haven't had the time to write it...
>

For when this is planned? 1.7?


>> 2. How to make a Linux CUPS server emulate IPP Everywhere?
>> ----------------------------------------------------------
>>
>> Another use case for IPP Everywhere is having a Linux machine running CUPS and with a conventional (non-IPP Everywhere) printer connected via network or USB and a CUPS queue with driver and PPD (HPLIP, Gutenprint, PostScript, etc.). Now I have a mobile device or TV set (Android, Windows Phone, ...) which supports printing on IPP Everywhere printers. How do I make CUPS emulate IPP Everywhere, so that the shared CUPS queues appear like IPP Everywhere printers? Or does CUPS do this already?
>
> CUPS already implements the required (and many of the optional) parts of IPP Everywhere, sans WS-Discovery (which really needs system-level support and I have 0 interest in implementing it...)  You just need to add the following to cupsd.conf to make the Bonjour registrations report the _print subtype:
>
>      BrowseDNSSDSubTypes _cups,_print
>
> Of course, without the WS-Discovery stuff your WinPhone won't be able to discover the printer, but AFAIK Microsoft has not yet implemented IPP Everywhere...
>

In scheduler/conf.c is a line

   cupsdSetString(&DNSSDSubTypes, "_cups,_print");

Does this not mean that

   BrowseDNSSDSubTypes _cups,_print

is already set by default, not needing to set it in cupsd.conf?

    Till


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers
  2013-01-10 14:20   ` Till Kamppeter
@ 2013-01-10 16:49     ` Michael Sweet
  2013-01-27 15:09       ` Till Kamppeter
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Sweet @ 2013-01-10 16:49 UTC (permalink / raw)
  To: Till Kamppeter; +Cc: Open Printing

Till,

On 2013-01-10, at 9:20 AM, Till Kamppeter <till.kamppeter@gmail.com> wrote:
>> ...
>> I have this on my to-do list for CUPS, but thus far haven't had the time to write it...
>> 
> 
> For when this is planned? 1.7?

Definitely not for 1.7 - I simply don't have the time to complete it.  And at some point in the (hopefully near) future it will be unnecessary since we'll have a "native" IPP Everywhere rendering pipeline that does not depend on PPDs.

I just created a cups.org bug to track this, since I didn't previous have one:

    http://www.cups.org/str.php?L4258

> ...
> In scheduler/conf.c is a line
> 
>  cupsdSetString(&DNSSDSubTypes, "_cups,_print");
> 
> Does this not mean that
> 
>  BrowseDNSSDSubTypes _cups,_print
> 
> is already set by default, not needing to set it in cupsd.conf?


Whoops, my bad.  Yes, I guess I already made that change... :)

_________________________________________________________
Michael Sweet, Senior Printing System Engineer, PWG Chair


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers
  2013-01-10 16:49     ` Michael Sweet
@ 2013-01-27 15:09       ` Till Kamppeter
  2013-01-28  2:10         ` Michael Sweet
  0 siblings, 1 reply; 9+ messages in thread
From: Till Kamppeter @ 2013-01-27 15:09 UTC (permalink / raw)
  To: Michael Sweet; +Cc: Open Printing

On 01/10/2013 05:49 PM, Michael Sweet wrote:
>> ...
>> In scheduler/conf.c is a line
>>
>>   cupsdSetString(&DNSSDSubTypes, "_cups,_print");
>>
>> Does this not mean that
>>
>>   BrowseDNSSDSubTypes _cups,_print
>>
>> is already set by default, not needing to set it in cupsd.conf?
>
>
> Whoops, my bad.  Yes, I guess I already made that change... :)
>
> _________________________________________________________
> Michael Sweet, Senior Printing System Engineer, PWG Chair
>
>

There is another thing missing in CUPS to make it emulating an IPP 
Everywhere printer: AFAIK CUPS does not accept PWG Raster as input 
format. There are no pwgto... filters, especially not pwgtopdf.

    Till


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers
  2013-01-27 15:09       ` Till Kamppeter
@ 2013-01-28  2:10         ` Michael Sweet
  2013-01-28  8:27           ` Till Kamppeter
  0 siblings, 1 reply; 9+ messages in thread
From: Michael Sweet @ 2013-01-28  2:10 UTC (permalink / raw)
  To: Till Kamppeter; +Cc: Open Printing

Till,

On 2013-01-27, at 10:09 AM, Till Kamppeter <till.kamppeter@gmail.com> wrote:
> ...
> There is another thing missing in CUPS to make it emulating an IPP Everywhere printer: AFAIK CUPS does not accept PWG Raster as input format. There are no pwgto... filters, especially not pwgtopdf.


While there currently are no PWG Raster to xyx filters, it is unlikely that they would be used since clients will almost certainly prefer sending PDF or JPEG (less work).

(but feel free to file a bug on cups.org and I'll add it to the list of things to do - PWG Raster to xyz will be super-easy)

_________________________________________________________
Michael Sweet, Senior Printing System Engineer, PWG Chair


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers
  2013-01-28  2:10         ` Michael Sweet
@ 2013-01-28  8:27           ` Till Kamppeter
  0 siblings, 0 replies; 9+ messages in thread
From: Till Kamppeter @ 2013-01-28  8:27 UTC (permalink / raw)
  To: Michael Sweet; +Cc: Open Printing

On 01/28/2013 03:10 AM, Michael Sweet wrote:
> While there currently are no PWG Raster to xyx filters, it is unlikely that they would be used since clients will almost certainly prefer sending PDF or JPEG (less work).
>
> (but feel free to file a bug on cups.org and I'll add it to the list of things to do - PWG Raster to xyz will be super-easy)

Feature request added as

https://www.cups.org/str.php?L4266

    Till


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers
  2013-01-09 19:53 ` Michael Sweet
  2013-01-10 14:20   ` Till Kamppeter
@ 2013-01-28 21:20   ` Till Kamppeter
  2013-02-01 20:49     ` Michael Sweet
  1 sibling, 1 reply; 9+ messages in thread
From: Till Kamppeter @ 2013-01-28 21:20 UTC (permalink / raw)
  To: Michael Sweet; +Cc: Open Printing

On 01/09/2013 08:53 PM, Michael Sweet wrote:
> Till,
>
> Responses inline...
>
> On Jan 9, 2013, at 1:49 PM, Till Kamppeter <till.kamppeter@gmail.com> wrote:
>> ...
>> 1. How to print from a Linux machine to an IPP Everywhere printer?
>> ------------------------------------------------------------------
>> ...
>
> Currently the only way to do this is to query the printer and generate a PPD file from the data. Then add the queue.  All of the generated PPDs should contain:
>
>      *cupsFilter2: "application/vnd.cups-raster image/pwg-raster 100 rastertopwg"
>
> Printers with PDF support should list:
>
>      *cupsFilter2: "application/vnd.cups-pdf application/pdf 0 -"
>
> Printers with JPEG support should list:
>
>      *cupsFilter2: "image/jpeg image/jpeg 0 -"
>
> I have this on my to-do list for CUPS, but thus far haven't had the time to write it...

I have seen in the source of the IPP backend that for PDF and all image 
formats the IPP attributes are carried on to the IPP printer. So this 
means that for PDF, JPEG, and PWG Raster the PPD simply needs to have 
the option and choice names being the ones of the IPP attributes 
reported back by the Get-Printer-Attributes request and no PostScript 
code needs to get assigned to the choices. Am I right? Will CUPS supply 
all atributes on the filter/backend command line then?

Another problem would be some PPD options where the Adobe specs impose 
certain option and choice names, like PageSize, InputSlot, Duplex, 
OutputBin, Resolution, ... How do I proceed with these options?

Can I "translate" the IPP attributes somehow into PostScript commands so 
that I can also generate PPDs for PostScript printers?

    Till


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers
  2013-01-28 21:20   ` Till Kamppeter
@ 2013-02-01 20:49     ` Michael Sweet
  0 siblings, 0 replies; 9+ messages in thread
From: Michael Sweet @ 2013-02-01 20:49 UTC (permalink / raw)
  To: Till Kamppeter; +Cc: Open Printing

Till,

On 2013-01-28, at 4:20 PM, Till Kamppeter <till.kamppeter@gmail.com> wrote:
> ...
> I have seen in the source of the IPP backend that for PDF and all image formats the IPP attributes are carried on to the IPP printer. So this means that for PDF, JPEG, and PWG Raster the PPD simply needs to have the option and choice names being the ones of the IPP attributes reported back by the Get-Printer-Attributes request and no PostScript code needs to get assigned to the choices. Am I right? Will CUPS supply all atributes on the filter/backend command line then?

No, we only do that if the other end is another CUPS server.  Otherwise we map the core IPP Job Template attributes used for IPP Everywhere from the PPD options.  Look at the ppd-private.h header, specifically the PPD cache stuff, for inspiration.

Basically we map/pass-through:

    PageSize/PageRegion to media/media-col.media-size/media-xxx-margin
    InputSlot to media-col.media-source
    MediaType to media-col.media-type
    ColorModel to print-color-mode
    Duplex to sides
    OutputBin to output-bin
    cupsPrintQuality to print-quality
    copies
    finishings
    job-account-id, if cupsJobAccountId is in the PPD
    job-accounting-user-id, if cupsJobAccountingUserId is in the PPD
    job-password, if cupsJobPassword is in the PPD
    any IPP options listed in the cupsMandatory keyword in the PPD

> Another problem would be some PPD options where the Adobe specs impose certain option and choice names, like PageSize, InputSlot, Duplex, OutputBin, Resolution, ... How do I proceed with these options?

Proceed according to the Adobe requirements - the PPD cache maps to/from Adobe names.

> Can I "translate" the IPP attributes somehow into PostScript commands so that I can also generate PPDs for PostScript printers?


That may prove tricky since a) most IPP printers do not support PDL override for PostScript, and b) the PostScript commands for a printer are likely different than the commands needed for Ghostscript/xxxtoraster to generate PWG Raster data.

For now, at least, I would focus on a) determining whether a printer supports IPP Everywhere and b) using the standard IPP Everywhere formats (i.e. NOT PostScript) when that is the case.  If the printer doesn't support IPP Everywhere then you should probably gracefully fall back to doing the legacy driver dance.

_________________________________________________________
Michael Sweet, Senior Printing System Engineer, PWG Chair


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2013-02-01 20:49 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-01-09 18:49 [Printing-architecture] IPP Everywhere: How to make CUPS queue so that applications can use these printers Till Kamppeter
2013-01-09 19:53 ` Michael Sweet
2013-01-10 14:20   ` Till Kamppeter
2013-01-10 16:49     ` Michael Sweet
2013-01-27 15:09       ` Till Kamppeter
2013-01-28  2:10         ` Michael Sweet
2013-01-28  8:27           ` Till Kamppeter
2013-01-28 21:20   ` Till Kamppeter
2013-02-01 20:49     ` Michael Sweet

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.