From: Till Kamppeter <till.kamppeter@gmail.com>
To: Michael Sweet <msweet@msweet.org>
Cc: "printing-architecture@lists.linux-foundation.org"
<printing-architecture@lists.linux-foundation.org>
Subject: Re: [Printing-architecture] CUPS 3.x: How we make it converting job data formats?
Date: Sat, 7 May 2022 09:05:35 +0200 [thread overview]
Message-ID: <2fc86159-d585-d454-8d73-04419073be34@gmail.com> (raw)
In-Reply-To: <45E96DFD-D08D-4742-8BE1-2D36650652AD@msweet.org>
On 07/05/2022 00:32, Michael Sweet wrote:
> Till,
>
>> On May 6, 2022, at 3:18 PM, Till Kamppeter <till.kamppeter@gmail.com> wrote:
>> ...
>> and then will all build libcupsfilters with PostScript support. So perhaps better move the PostScript support code into the PostScript Printer Application. WDYT?
>
> Long term that is probably the best approach. But I suspect CUPS 2.x will be around for a while yet so I wouldn't jump at moving things around until we are done supporting cups-filters.
>
So I will keep it. It is only a small piece of code, as the dirty work
is done by external executables (one of Ghostscript, Poppler's pdftops,
MuPDF). Users who do not need PostScript output support do not need to
install these executables.
>>> The "exotic" image formats are already supported by desktop (Gimp, etc.) and command-line (Imagemagick, etc.) applications that can handle printing.
>>>
>>
>> The support for them is still lurking around in libcupsfilters 2.x. Probably they will never get used. I could remove them now, making use that we are starting a new generation (2). WDYT?
>
> Up to you, but it would make sense.
>
Removing them would CUPS 2.x not supporting them any more, but in
practise no one sends these directly to the printer any more. I will
remove them for maintainability reasons.
>> The printers are the HP LaserJet M14, M15, M16, M17
>
> LaserJet *Pro* M14-M17, and they do not appear to be manufactured anymore (looks like there are few still available from Amazon, just not from HP directly that I can see) and have been replaced by the M110 series which *does* support AirPrint and Apple Raster.
>
> Anyways, if that is the extent of the PCLm-only printers we need to support, I am not convinced we need to add the complexity of supporting PCLm - it's not just a matter of the format, you also have to support the banding, etc. attributes and values.
>
Once, free software code for PCLm is in cups-filters and Ghostscript,
the former is the license of CUPS from cups-filters 2.x on, but second
it is really exotic.
I am currently managing a project of the printer setup tool in GNOME
Control Center being replaced by a new one for the New Architecture. At
one point it must determine whether a discovered printer is driverless
or not (to decide whether to look up a Printer Application). Usually I
would strictly follow the standards here, which is IPP 2.x + at least
one of PDF, Apple Raster, PWG Raster, PCLm. This would make PCLm-only
printers considered driverless and CUPS 3.x would fail with them.
I can change this check into IPP 2.x + at least one of PDF, Apple
Raster, PWG Raster, making a PCLm-only printer considered not
driverless. With current market of printers these would be that HP's and
the printer setup tool would install the HPLIP Printer Application,
making this printer work. Only if we discover PCLm-only printers which
are not from HP we would need a PCLm Printer Application.
>> Which sufficiently free PDF interpreter will you put at MuPDF's place?
>
> Xpdf/Popper are GPL2, which fit the bill.
>
So GPL2 is OK and AGPL of Ghostscript/Artifex not? Why?
So I can make sure that libcupsfilters will always support Poppler-based
PDF rendering (but offer the others as alternative).
> It would be better to preprocess the PDF so that the PDF interpreter only has to rasterize content.
>
Sop something pdftopdf-alike?
>>> Again, I wasn't suggesting that functionality would go away.
>>
>> How is it planned to get implemented in CUPS 3.x.
>
> In the transform program.
>
>>>> - The pdftopdf filter flattens filled PDF forms and annotations, which assures that the filled in text actually gets printed by the printer, independent whether the printer prints PDF directly or when need to to convert incoming PDF to some raster format.
>>> Right, but the current QPDF-based filtering seems to cause problems for some printers.
>>
>> OK, what is your alternative?
>
> PDFio.
>
Means that after the release of cups-filters 2.x, one of the first new
features in 2.n will be a pdftopdf based on PDFio, as soon as PDFio
supports flattening PDF forms.
By the way, we have seen some printers which do not like PDF output of
QPDF (I got one bug report in the last days). Are there many more?
Should we report a bug on QPDF? Or has it some general fault making
reporting a bug on it not worthwhile?
Note that PDF interpreters in printers can have quirks like PostScript
interpreters. They also do not necessarily only hit QPDF output, but can
also hit the ourput of Ghostscript, GTK, Qt, even PDFio.
So in my opinion we should not necessarily rush on getting rid of QPDF
(we report bugs on QPDF compatibility issues to QPDF though) but better
make sure that if a driverless printer is not able to print a PDF file
that we smoothly fall back to raster, what you are currently fixing/have
already fixed.
I agree with replacing of QPDF by PDFio for sake of simplicity and
getting rid of C++ though. As you probably I am much more comfortable
with regular C.
>> ...
>> So I need to know whether it is still worthwhile to invest in cups-filters or whether I should perhaps put it into maintenance mode and move to for example working on PDFio to make it flatten forms and do other things to replace the pdftopdf filter?
>
> You'll need to support cups-filters for a while yet, obviously, and it would be useful (even for cups-filters) to use PDFio instead of QPDF for PDF filtering...
Yes, one of the 2.n releases will have a PDFio-based pdftopdf() filter
function, depends on PDFio's feature-completeness, especially flattening
PDF forms.
Till
next prev parent reply other threads:[~2022-05-07 7:05 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-26 15:42 [Printing-architecture] CUPS 3.x: How we make it converting job data formats? Till Kamppeter
2022-04-27 12:43 ` Michael Sweet
2022-05-06 15:14 ` Till Kamppeter
2022-05-06 18:22 ` Michael Sweet
2022-05-06 19:18 ` Till Kamppeter
2022-05-06 22:32 ` Michael Sweet
2022-05-07 7:05 ` Till Kamppeter [this message]
2022-05-07 13:09 ` Michael Sweet
2022-05-07 14:07 ` Till Kamppeter
2022-05-07 14:45 ` Michael Sweet
2022-05-07 16:07 ` Till Kamppeter
2022-05-07 19:04 ` Michael Sweet
2022-05-07 19:16 ` Till Kamppeter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2fc86159-d585-d454-8d73-04419073be34@gmail.com \
--to=till.kamppeter@gmail.com \
--cc=msweet@msweet.org \
--cc=printing-architecture@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.