Re: Gutenprint Printer Application (Native)

Till Kamppeter <[email protected]>
Newsgroups gmane.linux.printing.gimp-print.devel
Message-ID <[email protected]>
First off, I have made my retro-fitting Gutenprint Printer Application 
supporting the expert PPDs of Gutenprint now.

It uses simplified or expert PPDs depending on how many vendor-specific 
options (PAPPL_MAX_VENDOR) the installed PAPPL supports. If it is 256 or 
more, the expert PPDs are used, otherwise the simplified ones.

In the snapcraft.yaml for my Snap I modify the PAPPL_MAX_VENDOR in the 
PAPPL source code to 256 before compiling PAPPL. I have to build PAPPL 
myself anyway for the Snap, as there is no Ubuntu LTS package of it, I 
want to always have the newest version, I patch it anyway for string 
option support.

So the Snap as it is in the Snap Store now supports all these options! 
And for users of devices with small, simple print dialogs (like phones) 
have the best possible control with standard IPP attributes (which are 
automatically converted to PPD option settings).

Note that on the "Printing Defaults" page of the web interface, the 
options with names and choices written in all-lowercase (starting after 
"Resolution") are the Gutenprint-specific options, the ones at the top 
(names with uppercase first letters) are standard IPP attributes. All 
PPD options appear in a long list and their settings are supplied to the 
command lines of called CUPS filters, especially ratertogutenprint.

To print a fine-art drawing with 5760x2880 dpi on a printer which uses 
this resolution you can set this resolution explicitly via the 
"resolution" Gutenprint option (not the "Resolution" IPP attribute) on 
the "Printing Defaults" page, or you simply set "quality" to "best", 
which sets thhe resolution to 5760x2880 dpi, too, you set the "Print 
Quality" IPP attribute to "High" which sets several options, including 
"resolution=5760x2880dpi" and "quality=best". The input file should be 
ideally sent as vector-graphics PDF.

The Printer Application has also functionality to upscale and downscale 
Raster input, so if a client sends 1440x1440 dpi PWG Raster and the 
print mode is using 5760x2880 dpi, the print data gets upscaled, in a 
fully streaming process to neither require the full 1440x1440-dpi nor 
the full 5760x2880-dpi page in memory.

See more below.

On 23/09/2021 02:51, Robert Krawitz wrote:
>> As I understand, the limitations are also done with clients in mind. If you have a low-resource
>> client, and your Printer Application reports a 5760x2880 dpi resolution for PWG Raster input, the
>> client could have problems rendering this.
> 
> That's absolutely true, but it's not a reason to restrict all clients.
>

You can always send a job as PDF and select the desired resolution, and 
Ghostscript renders in that resolution then (see above).

> It depends upon what you're doing.  Gutenprint does offer quality presets, which vary with the
> printer and paper type.  For photos, the ideal output resolution depends upon the printer.  With the
> CcMmYKkk printers with 3-4 pl drops, 1440x720 usually does just fine.  With 4 color (or CMYKRB)
> printers with 1 pl drops, it needs to be a lot higher, although input resolution doesn't.  If you're
> printing extremely detailed line art, though, the higher resolution the better.
>

All options are available now and should behave as under CUPS. And 
rendering PDF input in high-resolution and up-/down-scaling Apple/PWG 
Raster is no problem.

>> libpappl-retrofit usually reports 3 resolutions for each printer, one for draft, one for normal, and
>> one for high quality, selecting the appropriate one when the input data is an image (JPEG, PNG).
> 
> But there are more kinds of outputs than that; there are typically about 6-8 quality presets
> (economy draft, draft, normal, high, photo, photo high, and best IIRC).
> 

The Printer Application supports both standard IPP job attributes and 
detailed settings. If you client allows only standard attributes you can 
use them, there are reasonable choices of the 6-8 Gutenprint quality 
levels mapped to the three IPP quality levels. If your client gives full 
access to all options (or if you change defaults by the Printer 
Application's web interface) you can yuse the "quality" Gutenprint 
option and selct from all the 6-8 quality levels. In general, if a 
Gutenprint option is set to "automatic-selection" (the default) it 
receives mapping from the print-color-mode, print-quality, and 
print-content-optimize job IPP attributes, any other choice overrides 
the mapping.

>> If the input is PDF or PostScript, the driver uses anything what it needs, not necessarily one of
>> the 3 reported resolutions. So sending a line drawing (vector graphics) in PDF and printing in
>> highest possible quality, can make Ghostscript render in 5760x2880 for example.
> 
> Yep.  But you don't ever want to send higher resolution to the driver than the printing resolution.
> 

You do not do it actually. The PDF input file is for example a drawing 
with fine lines, and patterns, all defined as resolution-independent 
vector graphics. The Printer Application uses the same workflow as CUPS 
internally, letting GhostScript render with the resolution selected by 
the driver settings, so no higher resolution than needed (assuming the 
user does not do unreasonable choices on the "Printing Defaults" page).

Photos (JPEG, PNG) you send as-is and the Printer Application converts 
resolution to what the driver requests, APPLE/PWG Raster gets usually 
sent in one of the IPP-reported resolutions, but this print format is 
most probably used by simpler clients and not by clients where you do 
fine-art editing with Inkscape or so, but here also 
resolution-re-scaling will take place as needed.

> And there's the rub -- it simply isn't going to run well at high quality settings on low spec
> clients.  A router with 256 MB RAM just is not going to be able to print to an Epson R1800 at high
> resolution; the RAM is just insufficient.  I doubt whether 32 options or 320 is going to make nearly
> as much difference.
>

Yes, you will not run this Printer Application on a router (is there a 
router with access to the Snap Store?), but rather on the PC on which 
you are creating your artwork or on a more powerful server (order of 
magnitude of a PC). The memory occupation from PAPPL is negligible, so 
the Snap using the vendor-option-number-enhanced version of PAPPL should 
be no problem. For distros a PAPPL with dynamic resources would really 
come in handy. And the dynamic PAPPL would stay small if it runs a small 
driver (like for label printers).

>> You do not need an extra application. You can add web interface pages to the Printer Application.
>> See my PostScript Printer Application. It has one extra page for the system (to upload PPD files)
>> and one extra page for the printers ("Device Settings", to configure installable accessories). You
>> could add one or more pages for the printers to create presets of advanced adjustments, as I have
>> already described with more detail in another e-mail.
> 
> Then I don't understand what this "web interface pages" is.
>

You know the web interface of PAPPL and of my (retro-fitting) Printer 
Applications, which is pretty much the same. On the main page 
(http://localhost:8000/) you see the general options on the left and the 
printers set up on the right. Each button you see leads to a sub-page 
where you can adjust settings, on teh left for the system (the whole 
Printer Application), on the right for each printer, for the 
printer-specific settings. One page I often mention here is the 
"Printing Defaults" page (a printer-specific one) with all the PPD 
options for the printer.

The Gutenprint Printer Application (the retro-fitting one as it is now) 
has exactly the pages provided by PAPPL, the PostScript Printer 
Application has pages added by me, "Add PPD file" on the left (for the 
system) and "Device Settings" at each printer on the right, for 
configuring the installable accessories of the printer. These are the 
web interface pages, and you can add your own ones for the native 
Gutenprint Printer Application.

Simply test my Printer Applications by getting them from the Snap Store.

    Till
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.