Skip to content

Commit 2134daa

Browse files
committed
pdftops: Identify old LaserJets more precisely for swicth to Poppler
Old HP LaserJet printers have a firmware bug which makes them not working with Ghostscript's PostScript output, so in pdftops() we switch to Poppler for them. Old HP LaserJet printers have a firmware bug which makes them not working with Ghostscript's PostScript output, so in pdftops() we switch to Poppler for them. We consider an old LaserJet every "HP LaserJet XXXXY" printer with XXXX being a number (not preceded by a letter), typically 1-4 digits and Y being 0-2 letters, no separated from the numbers by a space. Unfortunately, we checked only whether after "LaserJet" comes a number and not the rest. This made also modern printers with names like "HP LaserJet 500 color M551" considered old and these modern printers have another PostScript interpreter bug which makes them not print some files with Poppler, so they need Ghostscript's PostScript output. Therefore we refine the check for the old-LaserJet quirk to see whether after the number are extra words and if so, this is again a modern printer and we do not switch to Poppler. See https://bugs.launchpad.net/bugs/1967816 (manually backported from commit 607f5e9)
1 parent 5ef9716 commit 2134daa

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

NEWS

+7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
NEWS - OpenPrinting CUPS Filters v1.28.14 - 2022-04-04
22
------------------------------------------------------
33

4+
CHANGES IN V1.28.15
5+
6+
- pdftops: In pdftops identify old LaserJets more precisely
7+
for working around PostScript interpreter bugs, older
8+
printers need Poppler, newer models need Ghostscript
9+
(Ubuntu bug #1967816).
10+
411
CHANGES IN V1.28.14
512

613
- pdftopdf: Correct the output when suppressing auto-rotation

filter/pdftops.c

+6-2
Original file line numberDiff line numberDiff line change
@@ -520,8 +520,12 @@ main(int argc, /* I - Number of command-line args */
520520
if (isspace(*ptr)) continue;
521521
if (isdigit(*ptr))
522522
{
523-
fprintf(stderr, "DEBUG: Switching to Poppler's pdftops instead of Ghostscript for old HP LaserJet (\"LaserJet <number>\", no letters before <number>) printers to work around bugs in the printer's PS interpreters\n");
524-
renderer = PDFTOPS;
523+
while (*ptr && isalnum(*ptr)) ptr ++;
524+
if (!*ptr) /* End of string, no further word */
525+
{
526+
fprintf(stderr, "DEBUG: Switching to Poppler's pdftops instead of Ghostscript for old HP LaserJet (\"LaserJet <number>\", no letters before <number>, no additional words after <number>) printers to work around bugs in the printer's PS interpreters\n");
527+
renderer = PDFTOPS;
528+
}
525529
}
526530
break;
527531
}

0 commit comments

Comments
 (0)