Imported Upstream version 1.0.50
Till Kamppeter
10 years ago
0 | INSTALL - OpenPrinting CUPS Filters v1.0.49 - 2014-03-24 | |
0 | INSTALL - OpenPrinting CUPS Filters v1.0.50 - 2014-03-27 | |
1 | 1 | -------------------------------------------------------- |
2 | 2 | |
3 | 3 | This file describes how to compile and install OpenPrinting CUPS |
0 | NEWS - OpenPrinting CUPS Filters v1.0.49 - 2014-03-24 | |
0 | NEWS - OpenPrinting CUPS Filters v1.0.50 - 2014-03-27 | |
1 | 1 | ----------------------------------------------------- |
2 | ||
3 | CHANGES IN V1.0.50 | |
4 | ||
5 | - pdftops: Let old HP LaserJet printers (model number without | |
6 | letter, like "LaserJet 3" or "LaserJet 4000") use Poppler | |
7 | instead of Ghostscript (Debian bug #742765). | |
8 | - pdftops: Improved workaround for Toshiba printers. Instead | |
9 | of using Poppler do not emit TrueType fonts with Ghostscript | |
10 | (Ubuntu bug #998087). | |
11 | - cups-browsed: Build the device URIs for all local queues we create | |
12 | with the CUPS library function httpAssembleURIf() for proper | |
13 | percent escaping of characters which are not allowed in URIs | |
14 | (Bug #1187). | |
2 | 15 | |
3 | 16 | CHANGES IN V1.0.49 |
4 | 17 |
0 | README - OpenPrinting CUPS Filters v1.0.49 - 2014-03-24 | |
0 | README - OpenPrinting CUPS Filters v1.0.50 - 2014-03-27 | |
1 | 1 | ------------------------------------------------------- |
2 | 2 | |
3 | 3 | Looking for compile instructions? Read the file "INSTALL.txt" |
0 | 0 | #! /bin/sh |
1 | 1 | # Guess values for system-dependent variables and create Makefiles. |
2 | # Generated by GNU Autoconf 2.69 for cups-filters 1.0.49. | |
2 | # Generated by GNU Autoconf 2.69 for cups-filters 1.0.50. | |
3 | 3 | # |
4 | 4 | # |
5 | 5 | # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. |
586 | 586 | # Identity of this package. |
587 | 587 | PACKAGE_NAME='cups-filters' |
588 | 588 | PACKAGE_TARNAME='cups-filters' |
589 | PACKAGE_VERSION='1.0.49' | |
590 | PACKAGE_STRING='cups-filters 1.0.49' | |
589 | PACKAGE_VERSION='1.0.50' | |
590 | PACKAGE_STRING='cups-filters 1.0.50' | |
591 | 591 | PACKAGE_BUGREPORT='' |
592 | 592 | PACKAGE_URL='' |
593 | 593 | |
1437 | 1437 | # Omit some internal or obsolete options to make the list less imposing. |
1438 | 1438 | # This message is too long to be a string in the A/UX 3.1 sh. |
1439 | 1439 | cat <<_ACEOF |
1440 | \`configure' configures cups-filters 1.0.49 to adapt to many kinds of systems. | |
1440 | \`configure' configures cups-filters 1.0.50 to adapt to many kinds of systems. | |
1441 | 1441 | |
1442 | 1442 | Usage: $0 [OPTION]... [VAR=VALUE]... |
1443 | 1443 | |
1507 | 1507 | |
1508 | 1508 | if test -n "$ac_init_help"; then |
1509 | 1509 | case $ac_init_help in |
1510 | short | recursive ) echo "Configuration of cups-filters 1.0.49:";; | |
1510 | short | recursive ) echo "Configuration of cups-filters 1.0.50:";; | |
1511 | 1511 | esac |
1512 | 1512 | cat <<\_ACEOF |
1513 | 1513 | |
1697 | 1697 | test -n "$ac_init_help" && exit $ac_status |
1698 | 1698 | if $ac_init_version; then |
1699 | 1699 | cat <<\_ACEOF |
1700 | cups-filters configure 1.0.49 | |
1700 | cups-filters configure 1.0.50 | |
1701 | 1701 | generated by GNU Autoconf 2.69 |
1702 | 1702 | |
1703 | 1703 | Copyright (C) 2012 Free Software Foundation, Inc. |
2304 | 2304 | This file contains any messages produced by compilers while |
2305 | 2305 | running configure, to aid debugging if configure makes a mistake. |
2306 | 2306 | |
2307 | It was created by cups-filters $as_me 1.0.49, which was | |
2307 | It was created by cups-filters $as_me 1.0.50, which was | |
2308 | 2308 | generated by GNU Autoconf 2.69. Invocation command line was |
2309 | 2309 | |
2310 | 2310 | $ $0 $@ |
3255 | 3255 | |
3256 | 3256 | # Define the identity of the package. |
3257 | 3257 | PACKAGE='cups-filters' |
3258 | VERSION='1.0.49' | |
3258 | VERSION='1.0.50' | |
3259 | 3259 | |
3260 | 3260 | |
3261 | 3261 | cat >>confdefs.h <<_ACEOF |
19330 | 19330 | # report actual input values of CONFIG_FILES etc. instead of their |
19331 | 19331 | # values after options handling. |
19332 | 19332 | ac_log=" |
19333 | This file was extended by cups-filters $as_me 1.0.49, which was | |
19333 | This file was extended by cups-filters $as_me 1.0.50, which was | |
19334 | 19334 | generated by GNU Autoconf 2.69. Invocation command line was |
19335 | 19335 | |
19336 | 19336 | CONFIG_FILES = $CONFIG_FILES |
19396 | 19396 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
19397 | 19397 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" |
19398 | 19398 | ac_cs_version="\\ |
19399 | cups-filters config.status 1.0.49 | |
19399 | cups-filters config.status 1.0.50 | |
19400 | 19400 | configured by $0, generated by GNU Autoconf 2.69, |
19401 | 19401 | with options \\"\$ac_cs_config\\" |
19402 | 19402 |
6 | 6 | # ==================== |
7 | 7 | m4_define([cups_filters_version_major],[1]) |
8 | 8 | m4_define([cups_filters_version_minor],[0]) |
9 | m4_define([cups_filters_version_micro],[49]) | |
9 | m4_define([cups_filters_version_micro],[50]) | |
10 | 10 | m4_define([cups_filters_version],[cups_filters_version_major.cups_filters_version_minor.cups_filters_version_micro]) |
11 | 11 | |
12 | 12 | # ============= |
422 | 422 | * Select the PDF renderer: Ghostscript (gs), Poppler (pdftops), |
423 | 423 | * Adobe Reader (arcoread), Poppler with Cairo (pdftocairo), or |
424 | 424 | * Hybrid (hybrid, Poppler for Brother, Minolta, Konica Minolta, and |
425 | * Toshiba and Ghostscript otherwise) | |
425 | * old HP LaserJets and Ghostscript otherwise) | |
426 | 426 | */ |
427 | 427 | |
428 | 428 | if ((val = cupsGetOption("pdftops-renderer", num_options, options)) != NULL) |
446 | 446 | { |
447 | 447 | if (make_model[0] && |
448 | 448 | (!strncasecmp(make_model, "Brother", 7) || |
449 | strcasestr(make_model, "Minolta") || | |
450 | !strncasecmp(make_model, "Toshiba", 7))) | |
451 | { | |
452 | fprintf(stderr, "DEBUG: Switching to Poppler's pdftops instead of Ghostscript for Brother, Minolta, Konica Minolta, and Toshiba to work around bugs in the printer's PS interpreters\n"); | |
453 | renderer = PDFTOPS; | |
454 | } | |
449 | strcasestr(make_model, "Minolta"))) | |
450 | { | |
451 | fprintf(stderr, "DEBUG: Switching to Poppler's pdftops instead of Ghostscript for Brother, Minolta, and Konica Minolta to work around bugs in the printer's PS interpreters\n"); | |
452 | renderer = PDFTOPS; | |
453 | } | |
455 | 454 | else |
456 | 455 | renderer = GS; |
456 | /* | |
457 | * Use Poppler instead of Ghostscript for old HP LaserJet printers due to | |
458 | * a bug in their PS interpreters. They are very slow with Ghostscript. | |
459 | * a LaserJet is considered old if its model number does not have a letter | |
460 | * in the beginning, like LaserJet 3 or LaserJet 4000, not LaserJet P2015. | |
461 | * See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=742765 | |
462 | */ | |
463 | if (make_model[0] && | |
464 | ((!strncasecmp(make_model, "HP", 2) || | |
465 | !strncasecmp(make_model, "Hewlett-Packard", 15) || | |
466 | !strncasecmp(make_model, "Hewlett Packard", 15)) && | |
467 | (ptr = strcasestr(make_model, "LaserJet")))) | |
468 | { | |
469 | for (ptr += 8; *ptr; ptr ++) | |
470 | { | |
471 | if (isspace(*ptr)) continue; | |
472 | if (isdigit(*ptr)) | |
473 | { | |
474 | 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"); | |
475 | renderer = PDFTOPS; | |
476 | } | |
477 | break; | |
478 | } | |
479 | } | |
457 | 480 | } |
458 | 481 | |
459 | 482 | /* |
583 | 606 | as some do not like it. See https://bugs.launchpad.net/bugs/277404.*/ |
584 | 607 | if (!make_model[0] || |
585 | 608 | ((!strncasecmp(make_model, "HP", 2) || |
586 | !strncasecmp(make_model, "Hewlett-Packard", 15)) && | |
587 | (strcasestr(make_model, "laserjet")))) | |
609 | !strncasecmp(make_model, "Hewlett-Packard", 15) || | |
610 | !strncasecmp(make_model, "Hewlett Packard", 15)) && | |
611 | (strcasestr(make_model, "LaserJet")))) | |
588 | 612 | pdf_argv[pdf_argc++] = (char *)"-level2"; |
589 | 613 | else |
590 | 614 | pdf_argv[pdf_argc++] = (char *)"-level3"; |
603 | 627 | as some do not like it. See https://bugs.launchpad.net/bugs/277404.*/ |
604 | 628 | if (!make_model[0] || |
605 | 629 | ((!strncasecmp(make_model, "HP", 2) || |
606 | !strncasecmp(make_model, "Hewlett-Packard", 15)) && | |
607 | (strcasestr(make_model, "laserjet")))) | |
630 | !strncasecmp(make_model, "Hewlett-Packard", 15) || | |
631 | !strncasecmp(make_model, "Hewlett Packard", 15)) && | |
632 | (strcasestr(make_model, "LaserJet")))) | |
608 | 633 | pdf_argv[pdf_argc++] = (char *)"-level2"; |
609 | 634 | else |
610 | 635 | pdf_argv[pdf_argc++] = (char *)"-level3"; |
789 | 814 | pdf_argv[pdf_argc++] = (char *)"-dEncodeMonoImages=false"; |
790 | 815 | pdf_argv[pdf_argc++] = (char *)"-dEncodeColorImages=false"; |
791 | 816 | } |
817 | /* | |
818 | * Toshiba's PS interpreters have an issue with how we handle | |
819 | * TrueType/Type42 fonts, therefore we add command line options to turn | |
820 | * the TTF outlines into bitmaps, usually Type 3 PostScript fonts, only | |
821 | * large glyphs into normal image data. | |
822 | * See https://bugs.launchpad.net/bugs/978120 | |
823 | */ | |
824 | if (make_model[0] && | |
825 | !strncasecmp(make_model, "Toshiba", 7)) | |
826 | { | |
827 | fprintf(stderr, "DEBUG: To work around a bug in Toshiba's PS interpreters turn TTF font glyphs into bitmaps, usually Type 3 PS fonts, or images for large characters\n"); | |
828 | pdf_argv[pdf_argc++] = (char *)"-dHaveTrueTypes=false"; | |
829 | } | |
792 | 830 | pdf_argv[pdf_argc++] = (char *)"-dNOINTERPOLATE"; |
793 | 831 | pdf_argv[pdf_argc++] = (char *)"-c"; |
832 | if (make_model[0] && | |
833 | !strncasecmp(make_model, "Toshiba", 7)) | |
834 | pdf_argv[pdf_argc++] = (char *)"<< /MaxFontItem 500000 >> setuserparams"; | |
794 | 835 | pdf_argv[pdf_argc++] = (char *)"save pop"; |
795 | 836 | pdf_argv[pdf_argc++] = (char *)"-f"; |
796 | 837 | pdf_argv[pdf_argc++] = filename; |
930 | 930 | const char *domain, |
931 | 931 | void *txt) { |
932 | 932 | |
933 | char *uri, *remote_queue, *remote_host, *pdl = NULL; | |
933 | char uri[HTTP_MAX_URI]; | |
934 | char *remote_queue, *remote_host, *pdl = NULL; | |
934 | 935 | #ifdef HAVE_AVAHI |
935 | 936 | char *fields[] = { "product", "usb_MDL", "ty", NULL }, **f; |
936 | 937 | AvahiStringList *entry; |
944 | 945 | |
945 | 946 | is_cups_queue = 0; |
946 | 947 | /* Determine the device URI of the remote printer */ |
947 | if ((uri = malloc(strlen(host) + | |
948 | strlen(resource) + 16)) == NULL){ | |
949 | debug_printf("cups-browsed: ERROR: Unable to allocate memory.\n"); | |
950 | exit(1); | |
951 | } | |
952 | sprintf(uri, "ipp%s://%s:%u/%s", | |
953 | (strcasestr(type, "_ipps") ? "s" : ""), host, | |
954 | port, resource); | |
948 | httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), | |
949 | (strcasestr(type, "_ipps") ? "ipps" : "ipp"), NULL, | |
950 | host, port, "/%s", resource); | |
955 | 951 | /* Find the remote host name */ |
956 | 952 | remote_host = strdup(host); |
957 | 953 | if (!strcmp(remote_host + strlen(remote_host) - 6, ".local")) |
1023 | 1019 | would get, so ignore this remote printer */ |
1024 | 1020 | debug_printf("cups-browsed: Printer with URI %s already exists, printer ignored.\n", |
1025 | 1021 | uri); |
1026 | free (uri); | |
1027 | 1022 | free (remote_host); |
1028 | 1023 | free (backup_queue_name); |
1029 | 1024 | cupsFreeDests(num_dests, dests); |
1061 | 1056 | ignore this remote printer */ |
1062 | 1057 | debug_printf("cups-browsed: %s also taken, printer ignored.\n", |
1063 | 1058 | local_queue_name); |
1064 | free (uri); | |
1065 | 1059 | free (backup_queue_name); |
1066 | 1060 | free (remote_host); |
1067 | 1061 | cupsFreeDests(num_dests, dests); |
1135 | 1129 | p = create_local_queue (local_queue_name, uri, remote_host, |
1136 | 1130 | name ? name : "", type, domain, pdl, remote_queue, |
1137 | 1131 | is_cups_queue); |
1138 | free (uri); | |
1139 | 1132 | } |
1140 | 1133 | |
1141 | 1134 | free (backup_queue_name); |