|
From: Till K. <til...@gm...> - 2021-09-23 12:36:55
|
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
|