forked from OpenPrinting/cups-filters
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
3718 lines (3378 loc) · 173 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
NEWS - OpenPrinting CUPS Filters v1.27.5 - 2020-06-05
-----------------------------------------------------
CHANGES IN V2.0.0
- libcupsfilters, texttopdf: Moved core functionality of
texttopdf into the texttopdf() filter function (Pull request
#404).
- libcupsfilters: The filterExternalCUPS() function. now
supports also to run CUPS backends in discovery mode
(without command line arguments and without input stream,
list of discovered printers in output stream).
- libcupsfilters: Added support for the back and side channels
which CUPS uses for additional communication between the
filters and the backend into the filter function
infrastructure. Now filter functions can use these channels
and also CUPS filters or backends called via the
filterExternalCUPS() function. Printer Applications can
easily create the needed pipes via the new function
filterOpenBackAndSidePipes() and clode them via
filterCloseBackAndSidePipes() and filter functions used as
classic CUPS filters get the appropriate file descriptors
supplied by ihe filterCUPSWrapper() function.
- libcupsfilters: Added raster-only PDF and PCLm output
support to the ghostscript() filter function. Note that
these are experimental and not yet suitable for using in
print filter chains, as they require a seekable output file
and PCLm does not support back side orientation for duples.
- libcupsfilters, foomatic-rip: Added new streaming mode
triggered by the boolean "filter-streaming-mode" option. In
this mode a filter (function) is supposed to avoid
everything which prevents the job data from streaming, as
loading the whole job (or good part of it) into a temporary
file or into memory, interpreting PDF, pre-checking input
file type or zero-page jobs, ... This is mainly to be used
by Printer Applications when they do raster printing in
streaming mode, to run with lowest resources possible.
Currently foomatic-rip, ghostscript(), and pdftopdf() got a
streaming mode. For the former two PostScript (not PDF) is
assumed as input and no zero-page-job check is done, in the
latter all QPDF processing (page management, page size
adjustment, ...) is skipped and only JCL according to the
PPD added.
- Sample PPDs: Add borderless page size definitions to Generic
PDF Printer, HP Color LaserJet CM3530 MFP PDF, and Ricoh PDF
Printer PPD files.
- Sample PPDs: From the PDF PPD files removed the unneeded
"*cupsFilters2: ..." line. For CUPS it does not make any
difference and the PPD-retro-fitting Printer Applications do
not accept the PPDs with it.
- libppd: In ppdCacheCreateWithPPD() also support presets for
print-ontent-optimize, not only for print-color-mode and
print-quality
- libppd: Auto-pre-fill the presets with most suitable options
from the PPD files with new ppdCacheAssignPresets() function
(Only if not filled via "APPrinterPreset" in the PPD). This
way we can use the IPP options print-color-mode,
print-quality, and print-content-optimize in a
PPD/CUPS-driver-retro-fitting Printer Application with most
PPDs.
- libppd: In the ppdCacheGetPageSize() function do not only
check the fit of the margins with the page size matching the
job's page size (like "A4") but also the margins of the
variants (like "A4.Borderless"), even if the variant's size
dimensions differ from the base size (and the physical paper
size), for example for overspray in borderless printing mode
(HPLIP does this). Also select a borderless variant only if
the job requests borderless (all margins zero).
- libcupsfilters: Fixed pdftopdf() filter function to
correctly support page ranges without upper limit, like
"10-" (Pull request #399).
- libcupsfilters, pwgtoraster: Created new pwgtoraster()
filter function primarily to print raster input (PWG Raster,
Apple Raster, images) to CUPS Raster drivers in
driver-retro-fitting Printer Applications.
- libcupsfilters: Added new oneBitToGrayLine() API function
which converts a line of 1-bit monochrome pixels into 8-bit
grayscale format (cupsfilters/bitmap.[ch]).
- libcupsfilters: Fixed possible crash bug in oneBitLine()
function.
- libcupsfilters, rastertopwg: Converted CUPS' rastertopwg
filter into the rastertopwg() filter function.
- libfontembed: Removed unneeded fontembed/main.c and ttfread
executable (Issue #386).
- texttotext: Made the filter also work when instead of PPDs
and CUPS options printer and job IPP attributes are used
(Pull request #385).
- libcupsfilters: Made ghostscript() filter function also work
when instead of PPDs and CUPS options printer and job IPP
attributes are used (Pull request #383).
- libcupsfilters, pdftoraster: Moved core functionality of
pdftoraster into the pdftoraster() filter function (Pull
request #381, #382).
- cups-browsed: Make NotifLeaseDuration configurable and renew
after half the lease duration not 60 sec before end. The
early renewal improves reliability on busy systems a
lot. For easier development and debugging short durations
from 300 sec on can get selected (Pull request #378).
- libcupsfilters: Removed duplicate code in the
apply_filters() function.
- libcupsfilters: Added new filterExternalCUPS() filter
function which calls an external CUPS filter executable
specified in the parameters, for example a legacy or
proprietary printer driver which cannot be converted into a
filter function.
- driverless: If there are no driverless IPP printers
available let "driverless" terminate with exit code 0 and
not 1, to follow CUPS' standard of backends in discovery
mode terminating with 0 if there are no appropriate printers
found (Issue #375).
- foomatic-rip: The fixes for zero-page-job handling (Pull
request #209) broke PostScript streaming support. Changed
method to check whether a PostScript input file is non-empty
to only need to read and buffer the input up to the first
page.
- libcupsfilters: Changed "ColorModel" option in the PPDs from
the PPD generator to mirror the print-color-mode IPP
attribute instead of providing all color space/depth combos
for manual selection. Color space and depth are now
auto-selected by the urf-supported and
pwg-raster-document-type-supported printer IPP attributes
and the settings of print-color-mode and print-quality.
This is now implemented in the ghostscript() filter function
both for use of the auto-generated PPD file for driverless
iPP printers and use without PPD, based on IPP attributes.
For this the new library functions cupsRasterPrepareHeader()
to create a header for Raster output and
cupsRasterSetColorSpace() to auto-select color space and
depth were created.
- libcupsfilters: In the ghostscript() filter function fixed
Ghostscript command line for counting pages as it took too
long on PDFs from evince when printing DjVu files (Issue
#354, Pull request #371, Ubuntu bug #1920730).
- cups-browsed: Renamed ldap_connect() due to conflict in
new openldap (Issue #367, Pull request #370).
- libcupsfilters: Clean-up of human-readable string handling
in the PPD generator.
- libcupsfilters: Function name clean-up for the PPD
generator.
- libppd: Removed ppdCreateFromIPPCUPS(), we have a better one
in libcupsfilters. Also removed corresponding test in
testppd.
- pdftoraster: Free color data after processing of each page
(Pull request #363).
- imagetopdf, imagetops, imagetoraster: Removed support for
asymmetric image resolutions ("ppi=XXXxYYY") as CUPS does
not support this (Issue #347, Pull request #361,
OpenPrinting CUPS issue #115).
- cups-browsed: Added multi-threaded operation, the Avahi
resolver callback (which examines the remote printer,
registers it, checks whether we want a local queue for it,
adds it to a cluster, ...) and the creation/modification of
a local CUPS queue is now done in separate threads, so that
these processes can get executed in parallel to keep the
local queues up-to-date more timely and to not overload the
system's resources. Thanks a lot to Mohit Mohan who did
this work as Google Summer of Code 2020 project
(https://github.com/mohitmo/GSoC-2020-Documentation).
- cups-browsed: Always save "...-default" option entries
from printers.conf, regardless of presence or absense
of PPD file (Pull request #359).
- cups-browsed: Start after network-online.target (Pull
request #360).
- texttopdf: Set default margins when no PPD file is used
(Pull request #356).
- libppd: Fixed PPD memory leak caused by "emulators" field
not freed (OpenPrinting CUPS issue #124).
- libcupsfilters: Made check whether the driverless PPD to
generate should be a fax out PPD more reliable (Issue #343).
- foomatic-rip: Options in the 5th command line argument of
the CUPS filter command line are separated only by white
space and not by comma, also make sure that an option "none"
is not considered a custom page size (Issue #348).
- libppd: Make "True" in boolean options case-insensitive
(OpenPrinting CUPS pull request #106).
- implicitclass: Raise timeout for cups-browsed's answer from
20s to 60s (Pull request #346).
- libppd: In the ppdPwgUnppdizeName() function support
negative numbers
- libcupsfilters: When normalizing printer model name replace
'+' by "plus"
- libcupsfilters, libppd: In the PPD generator really give
priority to Apple Raster against PDF.
- Build system: Add files in gitignore that are generated by
"autogen.sh", "configure", and "make" (Pull request #336).
- implicitclass: Added "#include <signal.h>" (Issue #335).
- libppd: Removed versioning.h and the macros defined in this
file (Issue #334).
- driverless: Removed the support quality check from Pull
request #235 as it takes significant time for each printer
being listed, making cups-driverd (`lpinfo -m`) timing out
when there are many printers (OpenPrinting CUPS issue #65).
- libcupsfilters: Let the filter functions not load the PPD
and not mark options in the PPD files to make them better
usable with Printer Applications and to avoid race
conditions in filter chains. To keep the behavior of CUPS
filters, changed the filterCUPSWrapper() function
appropriately.
- libcupsfilters, libppd: In the PPD generators give priority
to Apple Raster against PDF (Issue #331).
- libcupsfilters: In the cupsRasterParseIPPOptions() map the
color spaces the same way as in the PPD generator (Issue
#326, Pull request #327).
- libcupsfilters, libppd: In generated PPDs add a grayscale
mode if there are only color printing modes (from
OpenPrinting CUPS).
- libcupsfilters, libppd: In generated PPDs add an "OutputBin"
option also if it has only one choice (OpenPrinting CUPS
pull request #18).
- libcupsfilters, libppd: Generated PPDs could have an
"Unknown" default InputSlot (OpenPrinting CUPS issue #44).
- cups-browsed: Removed unneeded IPP attribute additions
preventing the created local queues from preserving a
location or description the user assigns to them (Issue
#323).
- cups-browsed: Removed all calls of the resolve_uri() function
of libcupsfilters, as these are not actually needed and in case
the supplied DNS-SD-based URI is not resolvable, the function
gets stuck for ~5 seconds.
- libcupsfilters: Added the possibility to define a callback
function to tell the filter function when the job got
canceled. Before, a pointer to an integer was used. This
change is to get more flexibility and especially to support
the papplJobIsCanceled() of PAPPL.
- Build system: Added missing library dependencies to the
filters to make parallel builds work (Issue #319).
- libppd, libcupsfilters, bannertopdf, texttopdf: Added
support for Sharp-proprietary "ARDuplex" PPD option name for
double-sided printing.
- libppd: Move the functions ppdPwgUnppdizeName(),
ppdPwgPpdizeName(), and ppdPwgPpdizeResolution() into the
public API.
- libppd: In the ppdPwgUnppdizeName() allow to supply NULL as
the list of characters to replace by dashes. Then all non-
alpha-numeric characters get replaced, to result in IPP-
conforming keyword strings.
- libppd: Correct conversion between PPD option names and IPP
attribute names, duplicate dashes like "Tray-2" -> "tray--2"
(OpenPrinting CUPS pull request #23).
- cups-browsed: Silenced compiler warning.
- foomatic-rip: Fix infinite loop and input from file on raw
printing (Pull request #318).
- libcupsfilters: In cupsRasterParseIPPOptions() (called from
filters used without PPD file) improved understanding of
color mode options. Options "output-mode", "OutputMode",
"print-color-mode", and choices "auto", "color",
"auto-monochrome", "process-monochrome", and "bi-level" are
supported now and default color mode is RGB 8-bit color and
not 1-bit grayscale.
- libcupsfilters: Added filterPOpen() and filterPClose()
functions which similar to popen() and pclose() create a
file descriptor which either takes data to feed into a
filter function or provides data coming out of a filter
function.
- libcupsfilters: Extended ieee1284NormalizeMakeAndModel() to
a universal function to clean up and normalize make/model
strings (also device IDs) to get human-readable,
machine-readable, or easily sortable make/model
strings. Also allow supplying a regular expression to
extract driver information when the input string is a PPD's
*NickName.
- libcupsfilters: Added NULL check when removing ".Borderless"
suffixes from page size names (Issue #314).
- libcupsfilters, parallel, test1284: Moved
IEEE1284-device-ID-related functions into the public API of
libcupsfilters, also made the internal functions public and
renamed them all to ieee1284...(), moved test1284 to
cupsfilters/.
- foomatic-rip: Remove temporary file created during pdf-to-ps
conversion (Pull request #313).
- libppd: Added PPD collection handling functions (based on
the code of cups-driverd in CUPS), for listing collections
of PPD files and picking a PPD out of the collection. PPDs
can be in arbitrary subdirectory structures, .tar and
.tar.gz files, and also be generated by executables, as one
uses them with CUPS in /usr/lib/cups/driver. This is for
Printer Applications which retro-fit classic CUPS drivers.
- libppd, libcupsfilters: Share the definition of logging functions
between the two libraries, so that the same logging functions
can be used with both.
- Sample PPDs: Corrected manufacturer name in
Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd.
- texttopdf: Added support for PPD-less use.
- libcupsfilters, imagetops: Introduced imagetops() filter
function for Printer Application to print on PostScript
printers. It is used to print images (IPP standard requires
at least JPEG to be accepted) without need of a PDF renderer
(imagetopdf -> pdftops) and without need to convert to
Raster (imagetoraster -> rastertops). The CUPS filter
imagetops uses this filter function now, too.
- libcupsfilters, imagetopdf: Moved core functionality of
imagetopdf into the imagetopdf() filter function.
- libcupsfilters, imagetoraster: Moved core functionality of
imagetoraster into the imagetoraster() filter function.
- sys5ippprinter, cups-browsed: Removed sys5ippprinter, as
CUPS does not support System V interface scripts any
more. This first approach of PPD-less printing was also not
actually made use of.
- libcupsfilters, gstoraster, gstopdf, gstopxl: Moved core
functionality of gstoraster into the ghostscript() filter
function.
- braille: Support new liblouis tables not containing a
display name (Pull request #303)
- libcupsfilters: Added filterChain() filter function to run
several filter functions in a chain.
- libcupsfilters, pdftopdf: Moved core functionality of
pdftopdf into the pdftopdf() filter function (Pull request
#301, #307).
- Build system: Let ./configure not error out when there is
more than one DejaVuSans.ttf test font candidate (Issue
#300).
- cups-browsed: Crash when a remote printer set as default
gets removed, due to missing variable in printf() call
(Issue #299).
- COPYING: Fixed several typos
- libcupsfilters: Fixed typo in log message of
get_printer_attributes functions.
- cups-browsed: Fixed typos in configuration file and man page
- libcupsfilters: Let the PPD generator not suffix page size
names with ".Borderless" if all page sizes would get this
suffix, for example for printers which generally print
borderless.
- driverless, driverless-fax, libcupsfilters: Added IPP Fax
Out support. Now printer setup tools list an additional fax
"driver". A fax queue is created by selecting this
driver. Jobs have to be sent with "-o phone=12345" to supply
the destination phone number (Pull request #280, #293,
#296, #302, #304, #305, #306, #309, Issue #298, #308).
- libfontembed: Silenced warning with gcc 10.x (Pull request
#287).
- libcupsfilters, rastertopdf, rastertopclm: Moved core
functionality of rastertopdf into the rastertopdf() filter
function (Pull request #288, #289).
- cups-browsed: Added ./configure options
--enable-saving-created-queues and
--with-remote-cups-local-queue-naming (Pull request: #253,
#285).
- libcupsfilters, pclmtoraster: Moved core functionality of
pclmtoraster into the pclmtoraster() filter function (Pull
request #275).
- libcupsfilters, rastertops: Moved core functionality of
rastertops into the rastertops() filter function (Pull
request #282, #290).
- cups-browsed: Fixed several memory leaks, mainly from the
code to merge printer IPP attributes for clusters (Pull
request #281, #283, #311, #322).
- libcupsfilters: Started adding functions to read out IPP
attributes from the job and check them against the IPP
attributes (capabilities) of the printer:
ippAttrEnumValForPrinter(), ippAttrIntValForPrinter()
- driverless: Added "--std-ipp-uris" command line option to
show listed URIs in standard hostname-based form (not the
CUPS DNS-SD-service-name-based form. Only for manual call of
the utility, for debugging purposes (Pull request #277).
- libfontembed: Removed assert() calls which cause crashes
when unsupported emoji fonts are installed (Issue #254, Pull
request #276).
- driverless: Added support for IPPS (use "ipps://..." URIs if
possible, Issue #251, Pull request #270, #273).
- libcupsfilters, pdftops: Moved core functionality of pdftops
into the pdftops() filter function.
- libcupsfilters, bannertopdf, gstoraster, pdftops: Moved
common PDF/QPDF functions (pdf.cxx/pdf.h) into
libcupsfilters.
- libcupsfilters, bannertopdf, sys5ippprinter, texttotext,
pdftops: Moved portability implementations (getline.c,
strcasestr.c) into libcupsfilters.
- libcupsfilters, pstops: Added filterCUPSWrapper()
convenience function to easily create a classic CUPS filter
from a filter function.
- gstoraster, gstopdf: When converting PostScript to PDF use
the "pdfwrite" output device with "-dPDFSETTINGS=/default"
instead of with "-dPDFSETTINGS=/printer". This reproduces
bitmaps in the PostScript file with their original image
quality (Issue #272).
- pdftops: Replaced the external program call of CUPS' pstops
filter by the pstops() filter function of libcupsfilters.
- lincupsfilters: Added the filter functions concept and added
CUPS' pstops filter as the first working model of a filter
function. All filters will get converted into filter
functions to make it easier to use them in Printer
Applications.
- cups-browsed: Limit log file size and add backup file for
previous log entries. Introduced the configuration option
DebugLogFileSize in cups-browsed.conf to set the actual
limit in kilobytes or 0 to get the old behavior of an
unlimited size for the log file (Issue #260, Pull request
#267).
- gstoraster, gstopdf: Do not apply margins when output format
is PDF, as then we convert an incoming PostScript file to
PDF (pre-pdftopdf) and do not prepare the pages for the
printer (post-pdftopdf, Issue #250).
- cups-browsed: Do not write any log messages directly to
stderr, there were some concerning timeouts on queue
creation (Issue #260).
- Build system: Fix cross-compilation without DejaVu test font
in configure.ac (Issue #262, Pull request #263).
- libcupsfilters, libppd: Respect the fact that PPD keywords
are case-sensitive when adding "*cupsManualCopies: True" in
PPD file (Issue #242).
- Build system: Remove '-D_PPD_DEPRECATED=""' from the
compiling command lines of the source files which use
libcups. The flag is not supported any more for longer times
already and all the PPD-related functions deprecated by CUPS
have moved into libppd now.
- libcupsfilters, libppd: Older versions of libcups (< 2.3.1)
had the enum name for fold-accordion finishings mistyped.
Added a workaround.
- cups-browsed: Remove left-over local queues from the
previous session more quickly when CUPS legacy browsing is
turned on.
- cups-browsed: Left-over local queues from the previous
session for which the corresponding remote printer did not
appear again did not get removed as they were considered
externally overwritten.
- gstoraster, gstopdf: Add option "-dDoNumCopies" to
Ghostscript command line if we are outputting PDF (called
via gstopdf wrapper) and the number of copies supplied to
CUPS is 1 (4th command line argument). In this case we
convert incoming PostScript to PDF and need to respect
embedded PostScript commands to implement the number of
copies (Issue #255, CUPS Issue #5796, OpenSUSE bug
#1173345).
- imagetoraster: Potential null dereference fix (when no valid
PPD is supplied, Pull request #256).
- libppd: Added the new libppd library overtaking all the PPD
handling functions from libcups as they are deprecated there
and will probably get removed with the next CUPS
version. This form of conservation is mainly intended for
converting classic printer drivers which use PPDs into
Printer Applications without completely rewriting them. Side
effect that all the compiler warnings about deprecated
libcups functions went away and so cups-filters is free of
warnings again. The library still needs some testing and
optimization.
- Sample PPDs: Renamed source directory from "ppd/" to
"ppdfiles/"
- cups-browsed: Call cupsGetNamedDest() only if
"OnlyUnsupportedByCUPS No"
- Sample PPDs: Corrected ColorModel default for Generic PWG
Raster PPD to Color (Pull request #247).
- cups-browsed: Mark the temp queue as cups-browsed-generated
during setting printer-is-shared (Pull request #246).
- cups-browsed: Remove mentions of README and AUTHORS files in
the man page (Pull request #244).
- pclmtoraster: Added new filter to extract Raster data from
raster-only PDF files, here for the special case of PCLm
files (Pull request #243, #257).
- Sample PPDs: In Generic-PDF_Printer-PDF.ppd add option to
switch between color and grayscale printing (Pull request
#237).
CHANGES IN V1.27.5
- cups-browsed: Do not remove the created local queues on
shutdown, to avoid their re-creation on restart, so that
desktops get no cluttered with notifications of new queues
being created. One can return to the old behavior via
"KeepGeneratedQueuesOnShutdown No" in cups-browsed.conf
(Ubuntu bug #1869981, #1878241).
- cups-browsed: Do not accept DNS-SD broadcasts of IPPS type
of "remote" CUPS queues of another CUPS instance on the
local machine. This way we get a local queue pointing to
such a printer only in unencrypted version (IPP). For some
reason printing from one CUPS server to another on the same
machine works only unencrypted.
- foomatic-rip: Map two-sided-short-edge to DuplexTumble (Pull
request #236)
- Build system: In configure.ac use AS_IF instead of
AC_CHECK_FILE for font check (Issue #239, Pull request #240)
- cups-browsed: Cleaned up code for determining to which CUPS
server (host/port/domain socket) to connect, so that
connection via DomainSocket cups-browsed.conf directive,
CUPS_SERVER and IPP_PORT environment variables and all
defaults and methods of libcups, including CUPS' client.conf
work.
- gstoraster, rastertopdf: Do not pass NULL to fprintf() (Pull
request #230).
- libcupsfilters: Silence compiler warning (Pull request #229).
CHANGES IN V1.27.4
- libcupsfilters, cups-browsed: Fix memory issues in
ppdgenerator and cups-browsed (Pull request #226).
- pdftops: Mention cups-filters README, CUPS README in debug
log (Pull request #225).
- pdftopdf, gstoraster, foomatic-rip: Use "-dSAFER"
Ghostscript option, instead of the deprecated
"-dPARANOIDSAFER" (Pull request #224).
- Build System: Replace '==' in configure.ac test with '=', as
the former is a bashism (Pull request #222).
CHANGES IN V1.27.3
- cups-browsed: Allow sharing local queues pointing to remote
CUPS queues and re-sharing printers discovered via
BrowsePoll by default, using
AllowResharingRemoteCUPSPrinters and
NewBrowsePollQueuesShared directives in cups-browsed.conf
(Issue #101, Pull request #218).
- driverless: Correctly unlink temporary file when generating
PPD file (Pull request #220).
- cups-browsed: Fixed memory leaks (Pull request #219).
- foomatic-rip: PDF page count side-loads the PDF file to
count the pages in, so it cannot be run in -dSAFER mode. Run
even in -dNOSAFER mode to override the -dSAFER default of
newer Ghostscript versions. This should not cause a security
problem as we do not take an input file which could do
arbitrary side-loads but we run hard-coded PostScript
commands instead (Issue #216).
- libfontembed: Add checks to the test programs to not
segfault if the test font file is not found (Pull request
#214).
- Build System: Let ./configure fail if the supplied test font
file path (or the default) does not exist (Pull request
#214), also use the "find" command to find the test font
file DejaVuSans.ttf under /usr/share/fonts, as every
distribution has it somewhere else.
CHANGES IN V1.27.2
- foomatic-rip: In some PostScript input files it was possible
that option settings did not get inserted or lines inserted
on the wron place (Issue #208, Pull request #210).
- foomatic-rip: For the PDF page count call Ghostscript in
sandbox mode and fix pointer arithmetics (Pull request
#212).
- foomatic-rip: Zero-page-job handling changes made the last
page of PostScript files not printed, also turning one-page
jobs into zero-page jobs (Issue #200, Issue #206, Issue
#208, Pull request #209, Pull request #210, Pull request
#211).
- cups-browsed: check_printer_with_option() function:
Initialize the value, add further checks, freeing memory and
stop allocating magic numbers (Pull request #204).
- cups-browsed: Additional checks against crashes in the
is_local_hostname() function (Ubuntu bug #1863716)
CHANGES IN V1.27.1
- libcupsfilters: Let the PPD generator not put any dashes
into the PPD option and choice names when translating them
from IPP attribute names, to avoid that on the
back-translation by CUPS no double-dashes are
generated. This broke paper tray selections with tray names
like "tray-1", "tray-2", ... (Issue #192, Issue #201, Debian
bug #949315).
- foomatic-rip: Fixed segfault when PRINTER environment
variable is not supplied.
- pdftopdf, pdftops, gstoraster, gstopdf, gstopxl,
rastertoescpx, rastertopclx, foomatic-rip: Handle zero-page
jobs (Issue #117, Pull request #196, Pull request #197, Pull
request #198, Pull request #200).
- texttopdf: Added support for CJK (double-width) fonts (Issue
#135, Pull request #199).
- cups-browsed: Switched default for "CreateIPPPrinterQueues"
from "local-only" to "All". The configure script options
"--enable-auto-setup-local-only" and
"--enable-auto-setup-driverless-only" can be used to change
this default (Debian bug #921252).
- rastertoescpx: Fixed wrong freeing of a buffer.
- pdftops: Added options "crop-to-fit" and "fill" to the
pdftopdf options which the pstops called by pdftops should
not apply a second time.
- pdftops: Added missing "-sstdout=%stderr" to Ghostscript
command line, to assure that all messages are redirected to
stderr and do not mix up with the output data.
CHANGES IN V1.27.0
- cups-browsed: Eliminate the use of the local CUPS daemon's
(the CUPS we are attached to) port number completely, so
that for attaching to an arbitrary local CUPS daemon
listening on an arbitrary port (or even not listening on
localhost at all) it is enough to tell cups-browsed the
domain socket the CUPS daemon is listening on.
- cups-browsed, libcupsfilters: Identify DNS-SD-reported
printers as of the local CUPS daemon via UUID and not via
the port on which the local CUPS is listening, as we do not
always have this port available.
- cups-browsed: Leave the port for legacy CUPS browsing and
broadcasting on 631, do not use a possible alternative port
of the CUPS we are attached to. The legacy CUPS servers we
communicate with are always remote ones.
- libcupsfilters: in the PPD generator prioritize
print-color-mode-supported against
pwg-raster-document-type-supported (Issue #186, Pull request
#188)
- rastertopdf, rastertops, texttopdf, pdftoraster,
mupdftoraster: Handle zero-page jobs, corrections on
zero-page job handling (Issue #117)
- cups-browsed: When restarting after a crash make sure that
local queue names have same upper/lower case as before.
- cups-browsed: Small code improvements to reduce crash
probability.
CHANGES IN V1.26.2
- cups-browsed: Added crash guards to avoid crashes in case
the dummy printer entry for a deleted master entry is used.
- cups-browsed: Set the port of the local CUPS daemon to be
used according to the IPP_PORT environment variable.
- cups-browsed: Eliminated the use of the cupsGetPPD2()
function of libcups completely, also the remaining calls
in the record_printer_options() and update_cups_queues()
functions, the former causing incomplete recording of
option settings and the latter use of CUPS-generated
PPDs not working when CUPS is running on a non-standard
port.
- cups-browsed: Eliminated the use of the cupsGetPPD2()
function of libcups in queue_overwritten(). The function
actually loads the queue's PPD file if the queue is on a
local CUPS on port 631. Due to a bug the function fails if
an alternative port is used. This lets queue_overwritten()
always assume that the PPD got removed and therefore the
queue got overwritten. So queues got released from
cups-browsed if it was printed on them or if they were
supposed to be removed on shutdown.
- foomatic-rip: Fixed compilation with -fno-common. Starting
from the upcoming GCC 10, the default of the -fcommon option
will change to -fno-common. This causes compilation errors
in foomatic-rip due to missing "external" declarations.
(Pull request #184).
CHANGES IN V1.26.1
- build system: Install the "implicitclass" backend with
"-rwx------" permissions, so that CUPS executes it as root,
as the "ipp" CUPS backend also has to be executed as root
(Issue #183).
- build system: Fixed setting permissions when installing the
"cups-brf" backend.
- libcupsfilters: When using the
"media-{bottom,left,right,top}-margin-supported" IPP
attributes (needed if we have no "media-col-database"), use
the minimum and not the maximum margins, this allows
accessing more of the printer's capabilities, especially for
legacy printers which do not provide sufficient information
(Issue #22).
CHANGES IN V1.26.0
- cups-browsed: When generating local queues for printers for
which the local CUPS daemon would provide temporary queues
use the PPDs generated by libcupsfilters and not the ones
generated by CUPS. The PPD generation of libcupsfilters also
works with IPP-1.x-only printers, printers which do not
support to query "media-col-database" and printers which
support driverless printing only via PCLm. This can be
changed via the "UseCUPSGeneratedPPDs" directive in
cups-browsed.conf (Issue #22).
- libcupsfilters: Re-structured the get_printer_attributes()
function to remove the recursive calls for the fallbacks, to
check required attributes in the response only if requested,
and to fully integrate the method of getting a suitable
response for a full printer capability list also if the
printer is only IPP 1.1 or does not support the
"media-col-database" attribute (Issue #22, Issue #163).
- libcupsfilters, cups-browsed, driverless: Moved the funtions
get_printer_attributes() and resolve_uri() from cups-browsed
into libcupsfilters, to share them with the driverless
utility (Issue #22).
- implicitclass: Fixed wrong stdout redirection from the
filters to the IPP backend and hard-coded path for "ipp"
backend call (Possible fix for Issue #163, Issue #181).
- cups-browsed, driverless: Use DNS-SD-service-name-based URIs
instead of host-name-based ones, as CUPS also does. In
cups-browsed one can switch back to the conventional
host-name-based URIs via the new "DNSSDBasedDeviceURIs"
configuration option. Note that cups-browsed always uses
conventional URIs for printers discovered via legacy CUPS
browsing or LDAP.
- cups-browsed: When removing a CUPS queue, do not consider an
error (and retry) if the queue does not actually exist. Also
ignore errors when checking whether there are still
jobs. This way when a new queue gets created and the
generation of the PPD file fails the attempt to remove this
non-existing queueu when removing the printer entry does not
cause any problem.
- cups-browsed: Improved the fallback mechanism of the
get_printer_attributes() function. Instead of considering
the request failed by the content of the response only when
not more than the two language atrributes come out, we check
through a list of required attributes whether they are all
there. In addition, we actually fail when all callbacks
have failed (Issue #22).
- cups-browsed: Introduced new configuration options
"UpdateCUPSQueuesMaxPerCall" and
"PauseBetweenCUPSQueueUpdates" to limit the amount of local
CUPS queues created, modified, or removed in a single event
callback. Before, when there were thousands of printers in
the network, cups-browsed got blocked for other tasks, like
assigning a destination printer for a cluster print job
(Issue #163).
CHANGES IN V1.25.13
- implicitclass: When passing on the job via the "ipp" CUPS
backend, set argv[0] to the destination printer URI (Pull
request #173).
- cups-browsed: Added another fallback to the
get-printer-attributes IPP request: Now after failing the
standard request ("all", "media-col-database") with both IPP
2.0 and IPP 1.1, try simply "all", without
"media-col-database" (Pull request #173).
- cups-browsed: Do not set printer-is-shared for remote CUPS
queue when making a temporary queue permanent (Pull request
#180).
- cups-browsed: Fix leaks of ipp_t struct and load balancing
on the servers (Pull request #179).
- cups-browsed, implicitclass: Prioritize Apple Raster against
PWG Raster when selecting the PDL for the destination
printer for a job sent to a cluster, also cleaned up the PDL
selector code and added PostScript support.
- libcupsfilters: Updated the PPD generator adding all changes
of the PPD generator of CUPS: Support for "job-account-id",
"job-accounting-user-id", "job-password", finishing options
"trim-..." added, finishing options and
"finishing-col-database" support synced with CUPS.
- libcupsfilters: In the PPD generator get the mode for
handling the back sides of the sheets when printing duplex
preferrably from the "urf-supported" attribute.
- libcupsfilters: Fixed bug that the PPD generator did not
output the "*CloseUI: *ColorModel" line when it did not
determine a default setting for "ColorModel".
- cups-browsed: Added some missing memory allocations leading
to a segfault (Issue #175).
CHANGES IN V1.25.12
- libcupsfilters: Use the text names "Draft", "Normal", and
"High" instead of 3, 4, and 5 as choice names for the
"cupsPrintQuality" option as CUPS does (Issue #171).
- libcupsfilters: If a printer supports both Apple Raster and
PWG Raster let the generated PPD use Apple Raster as there
are several printers which report PWG Raster support but do
not actually print PWG Raster (Pull reguest #168, Issue
#171, CUPS issue #5238).
- cups-browsed: Fix unset location check to use DNS-SD field
(Pull request #172).
- libcupsfilters, beh, implicitclass, foomatic-rip,
imagetopdf, mupdftoraster, pdftops, sys5ippprinter,
cups-browsed, driverless: Silenced all compiler warnings to
make the build process of cups-filters completely free of
warnings.
- pdftops: Fixed crash when using filter without PPD file.
- pdftops: If printing grayscale jobs with Ghostscript as PDF
renderer, add "-sProcessColorModel=DeviceGray" to
Ghostscript command line.
- pdftops: Do not use the ugly "pdftops -level1 ..."
workaround to get grayscale PostScript output from
Poppler. It leads to huge output files with Poppler's
"pdftops" utility and does not work at all with
"pdftocairo". Poppler itself does not support PostScript
output converted to grayscale. Issue a warning with the hint
to use Ghostscript or MuPDF as PDF renderer (Issue #169).
- libcupsfilters: In the cupsRasterParseIPPOptions()
accept also "Mono", "Monochrome", and "Gray" as color
space names.
CHANGES IN V1.25.11
- cups-browsed: Really accept entries without printer name
reported on a job status request (Issue #163).
- cups-browsed: Strip IPP attribute values reported by the
printer on a get-printer-attributes request from white
space (Pull request #166).
CHANGES IN V1.25.10
- libcupsfilters: Added NULL checks when handling page size
names as some of the page sizes in CUPS' PWG media list have
a NULL PPD name (Ubuntu bug #1847488).
CHANGES IN V1.25.9
- cups-browsed: Fix leaks in get_printer_attributes() function.
- cups-browsed: Avoid infinite recursion on IPP 1.1 fallback.
CHANGES IN V1.25.8
- cups-browsed: On a job status request accept also entries
without the printer name being reported (Issue #163).
- cups-browsed: Fall back to IPP 1.1 if a
get-printer-attributes IPP request with IPP 2.x fails (Issue
#124, Issue #163).
- gstoraster: Use ".setfilladjust2" instead of the
undocumented ".setfilladjust" PostScript command for
Center-of-Pixel method to fill paths (Issue #164).
CHANGES IN V1.25.7
- implicitclass, libcupsfilters: Fixes to solve an assertion
error and printing to an Apple Raster printer (Issue #162,
Ubuntu bug #1845286, Ubuntu bug #1845548).
- cups-browsed: Do not try to resolve the network interface
name on Avahi messages which are not interface-related (like
"All for now"or "Cache exhausted", Issue #163).
- Build system: The helper script ln-srf to build on systems
with old ln was not included in the release tarballs (Issue
#161).
- pdftoraster: Fixed some bugs in output bitmap generation (
writePageImage() function): Segfault on output of
up-side-down pages (back side when printing duplex on some
printers), margin offsets not taken into account on
monochrome jobs, CUPS_CSPACE_W color space not recognized as
monochrome (Ubuntu bug #1845286).
CHANGES IN V1.25.6
- implicitclass: Make sure the destination printer gets always
set and do not pass on the cups-browsed-dest-printer when
sending the job to the final destination (Issue #152, Pull
request #159).
- Build system: Support old ln versions without the -r option
(Pull request #154, #157).
- texttotext: Link with libiconv if needed (Pull request
#155, #158).
- foomatic-rip: Fix argument representation for raw queue
debug mesaage (Pull request #153).
CHANGES IN V1.25.5
- bannertopdf: Added missing "#include <cstring>" to pdf.cxx
so that bannertopdf correctly builds with QPDF 9.0.0 (Issue
#134, Issue #151, Gentoo bug #693498).
- rastertopdf: Let the getIPPColorProfileName() function not
return a pointer to a local variable (clang warning, Issue
#150).
- cups-browsed: If a locally generated queue (usually with
"implicitclass://..." URI) left over from a previous
(crashed) session is picked up on startup, do not set the
URI as the remote printer's URI and do not cause a fatal
error on a failed get-printer-attributes IPP request (Issue
#148, Debian bug #939316).
- pdftopdf: Do not preserve encryption, since the output
already goes into the printer (Issue #146, Pull request
#147).
CHANGES IN V1.25.4
- imagetoraster: Do not call imagetops and pstoraster for
classifications and page labels as these filters are not
included any more with cups-filters. Classifications and
page labels are currently not supported for direct image
printing, only for PDF or PostScript input (which goes
through pdftopdf).
- imagetoraster, imagetopdf: Fixed auto-rotation of images to
fit output page best (Issue #145).
- pdftoraster: If the PPD contains several equally-sized page
size entries which match the size of the input page and one
is the size selected by the user via the "PageSize" or
"media" option (or the default selection in the PPD) then
prefer this one instead of simply the first matching one.
- pdftoraster: If the input page size cannot be matched with
one of the PPD's page sizes it is considered a custom size,
fill the page size name field of the CUPS Raster header with
"Custom.XXXxYYY" then.
- pdftoraster: Match the input page size with a page size in
the PPD only if the differences of the dimensions are less
than 1%, also match the input page size against the
imageable area of the PPD's page sizes if no match with the
full page size is found (Issue #138).
CHANGES IN V1.25.3
- Sample PPDs: In HP-Color_LaserJet_CM3530_MFP-PDF.ppd renamed
"custom" choice of the option "stapleoption" to "customsize"
as from CUPS 2.2.12 on "custom" is not accepted any more as a
choice name in a PPD file.
- cups-browsed: Fixed check whether the remote printer understands
PWG Raster (Issue #141).
CHANGES IN V1.25.2
- foomatic-rip: Fixed segmentation fault when running
foomatic-rip by hand and the PRINTER environment variable is
not set (Pull request #139).
- cups-browsed: Added note to cups-browsed.conf and man page
about IP-based URIs depending on the network interface used.
- cups-browsed: For each DNS-SD-discovered printer register
each DNS-SD discovery instance with network interface,
family, and IPP type. When DNS-SD messages of instances
disappearing show up, only unregister this instance and
remove the printer only if no instance is left. This
prevents a local queue of a still available printer being
removed when Wi-Fi (= one interface) is turned off (Issue
#136).
- cups-browsed: If a remote printer is served from the local
machine, prefer the "localhost"/loopback interface URI.
- cups-browsed: If a remote printer is discovered more than
once, use the new instance only if it has no downgrades and
at least one upgrade compared to the old one. Features
currently compared are IPP/IPPS, loopback interface or not,
and discovery via CUPS legacy/LDAP/DNS-SD.
- cups-browsed: If an Avahi-discovered entry comes through the
"lo" interface, always use the host name "localhost". Use
IP addresses instead of host names only if explicitly
requested.
- cups-browsed: Consider remote printer entries also as from
the same printer if one has the local machine's network name
and the other "localhost" as host name (Issue #136).
CHANGES IN V1.25.1
- imagetopdf: Fixed crash when no PPD file was supplied (Pull
request #133).
- pdftoraster: Fixed offset issues leading to segmentation
faults (Issue #131, Pull request #132).
- pdftoraster: Added anti-aliasing for better raster image
quality (Pull request #129).
- pdftoraster: Added graceful handling of zero-page input
(Issue #117, Pull request #127).
CHANGES IN V1.25.0
- pdftoijs, pdftoopvp: Removed these deprecated filters
completely as there is no demand for them any more. They
also used unstable, undocumented APIs of Poppler.
- pdftoraster: Changed from using unstable, undocumented APIs
of Poppler to stable, documented ones, to improve
maintainability of this filter, and with it of the
cups-filters package. Thanks to Tanmay Anand for
contributing this as his Google Summer of Code 2019 project.
- libcupsfilters: Added support for color spaces CMY and RGBW
when using filters without PPD file (mainly for development
and debugging, option "print-color-mode" with values
"cmy-XX" and "rgbw-XX" with XX being the number of bits per
color).
CHANGES IN V1.24.0
- cups-browsed: Integration of Deepak Patankar's Google Summer
of Code 2018 project with the main goal of clustering
different printers and automatically selecting the
destination printers by job content and option/attribute
settings. All changes of this release are done by Deepak as
parts of his project.
- cups-browsed, implicitclass: Support for mixed clusters of
remote CUPS queues and IPP network printers. For this PPD
files of remote CUPS queues are generated by cups-browsed
based on IPP queries, as for native IPP printers, the number
of jobs for load balancing is polled in a way that it works
also with native IPP printers, the implicitclass backend
sends jobs directky to the printer instead of re-queueing
them via CUPS.
- cups-browsed: Merge IPP attributes of several printers to
combined attributes for the cluster to generate the
cluster's PPD file, including PPD constraints for option
combinations not fulfillable by any of the member printers,
and finding reasonable, non-conflicting default settings,
- cups-browsed: Selection algorithm for the destination
printer for a job sent to the cluster. Based on the job
settings requested such as page size, media type, print
quality, ... the best most suitable printer in the cluster
for the job will be selected.
- cups-browsed, implicitclass: Filter jobs to clusters already
locally. Due to the fact that a cluster's member printers
are not exclusively non-raw CUPS queues with the complete
filtering framework on the remote server, but also native
IPP printers, we need to support generic driverless printers
as destination. So we cannot pass on the input data
unfiltered but need to filter locally. We let the cluster's
PPD file emulate a PDF printer, letting the local CUPS queue
of the cluster run pdftopdf and any pre-filters to turn the
input into PDF and we let the implicitclass backend turn PDF
into a format understood by the destination printer,
supporting the 4 formats of driverless IPP printing: PDF,
PWG Raster, Apple Raster, PCLm.
CHANGES IN V1.23.0
- pdftops, mupdftoraster: Let pdftops call mutool directly and
so that it directly outputs PostScript, eliminating the need
to call the mupdftoraster and rastertops filters.
- mupdftoraster: Reduced the use of temporary files from 3 to
just one.
- imagetopdf, imagetoraster, pdftopdf: Add support for
print-scaling option (Issue #108, Pull request #118).
CHANGES IN V1.22.6
- rastertops: Fixed PageSize settings in the PostScript output
(Must be in points not in pixels).
- pdftops, mupdftoraster: Produce actual grayscale/monochrome
PostScript (and not only instructions to print grayscale/
monochrome) for jobs to be printed in grayscale/monochrome
(Issue #96, Pull request #115).
- mupdftoraster: Fixed filter not producing output at all.
- Build system: ENABLE_DRIVERLESS got only defined with CUPS
1.6 and newer, not with older CUPS versions (Issue #111).
- pdftopdf, imagetopdf, imagetoraster: Silenced compiler
warnings.
- cups-browsed, driverless: Replaced httpConnect() calls by
httpConnect2() calls as the former CUPS library function is
deprecated.
- Build system: Compile everything using the CUPS libraries
with '-D_PPD_DEPRECATED=""' for the time being until the
deprecated PPD API calls get replaced, to stop the flooding
with PPD API deprecation warnings making more important