diff -Nru cups-filters-1.9.0/AUTHORS cups-filters-1.10.0/AUTHORS --- cups-filters-1.9.0/AUTHORS 2015-12-13 21:49:16.000000000 +0000 +++ cups-filters-1.10.0/AUTHORS 2016-07-14 17:54:35.000000000 +0000 @@ -3,9 +3,9 @@ Koji Otani, BBR Inc. (sho@bbr.jp) Tobias Hoffmann (th55@gmx.de) Lars Übernickel, Canonical (lars@uebernic.de) -Robert Sander (robert.sander@epigenomics.com) Tim Waugh (twaugh@redhat.com) Tomáš Chvátal (tomas.chvatal@gmail.com) Franz Pförtsch (Franz.Pfoertsch@brose.com) Neil 'Superna' Armstrong (superna9999@gmail.com) Samuel Thibault (samuel.thibault@ens-lyon.org) +Pranjal Bhor (bhor.pranjal@gmail.com) diff -Nru cups-filters-1.9.0/configure cups-filters-1.10.0/configure --- cups-filters-1.9.0/configure 2016-06-09 14:16:56.000000000 +0000 +++ cups-filters-1.10.0/configure 2016-07-15 22:49:42.000000000 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for cups-filters 1.9.0. +# Generated by GNU Autoconf 2.69 for cups-filters 1.10.0. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ # Identity of this package. PACKAGE_NAME='cups-filters' PACKAGE_TARNAME='cups-filters' -PACKAGE_VERSION='1.9.0' -PACKAGE_STRING='cups-filters 1.9.0' +PACKAGE_VERSION='1.10.0' +PACKAGE_STRING='cups-filters 1.10.0' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -636,7 +636,6 @@ TABLESDIR ENABLE_BRAILLE_FALSE ENABLE_BRAILLE_TRUE -SED_EXTENDED_REGEX_OPT PHPDIR PHPCONFIG WITH_PHP_FALSE @@ -1479,7 +1478,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures cups-filters 1.9.0 to adapt to many kinds of systems. +\`configure' configures cups-filters 1.10.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1550,7 +1549,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of cups-filters 1.9.0:";; + short | recursive ) echo "Configuration of cups-filters 1.10.0:";; esac cat <<\_ACEOF @@ -1762,7 +1761,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -cups-filters configure 1.9.0 +cups-filters configure 1.10.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2400,7 +2399,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by cups-filters $as_me 1.9.0, which was +It was created by cups-filters $as_me 1.10.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3435,7 +3434,7 @@ # Define the identity of the package. PACKAGE='cups-filters' - VERSION='1.9.0' + VERSION='1.10.0' cat >>confdefs.h <<_ACEOF @@ -19631,6 +19630,7 @@ fi + if test "x$with_pdftops_path" != "xsystem"; then : CUPS_PDFTOPS="$with_pdftops_path" @@ -20058,87 +20058,6 @@ CFLAGS="$CFLAGS -D_GNU_SOURCE" CXXFLAGS="$CXXFLAGS -D_GNU_SOURCE" -# ======= -# gstopxl -# ======= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -SED_EXTENDED_REGEX_OPT=-nre -sed_variant=`sed --version 2>&1` -sed_variant=`echo $sed_variant|sed -e 's/ .*//'` -if test "$sed_variant" != GNU ; then -SED_EXTENDED_REGEX_OPT=-nEe -fi - - - # ========================== # Braille embossing/liblouis # ========================== @@ -20204,7 +20123,7 @@ # ===================== # Prepare all .in files # ===================== -ac_config_files="$ac_config_files libcupsfilters.pc libfontembed.pc Makefile filter/gstopxl utils/cups-browsed utils/cups-browsed.conf filter/foomatic-rip/foomatic-rip.1 filter/braille/drivers/index/indexv4.sh filter/braille/drivers/index/indexv3.sh filter/braille/drivers/index/index.sh filter/braille/drivers/index/textbrftoindexv3 filter/braille/drivers/index/imageubrltoindexv3 filter/braille/drivers/index/imageubrltoindexv4 filter/braille/drivers/generic/brftoembosser filter/braille/filters/cups-braille.sh filter/braille/filters/imagetobrf filter/braille/filters/texttobrf" +ac_config_files="$ac_config_files libcupsfilters.pc libfontembed.pc Makefile utils/cups-browsed utils/cups-browsed.conf filter/foomatic-rip/foomatic-rip.1 filter/braille/drivers/index/indexv4.sh filter/braille/drivers/index/indexv3.sh filter/braille/drivers/index/index.sh filter/braille/drivers/index/textbrftoindexv3 filter/braille/drivers/index/imageubrltoindexv3 filter/braille/drivers/index/imageubrltoindexv4 filter/braille/drivers/generic/brftoembosser filter/braille/filters/cups-braille.sh filter/braille/filters/imagetobrf filter/braille/filters/texttobrf" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -20776,7 +20695,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by cups-filters $as_me 1.9.0, which was +This file was extended by cups-filters $as_me 1.10.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -20842,7 +20761,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -cups-filters config.status 1.9.0 +cups-filters config.status 1.10.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -21358,7 +21277,6 @@ "libcupsfilters.pc") CONFIG_FILES="$CONFIG_FILES libcupsfilters.pc" ;; "libfontembed.pc") CONFIG_FILES="$CONFIG_FILES libfontembed.pc" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "filter/gstopxl") CONFIG_FILES="$CONFIG_FILES filter/gstopxl" ;; "utils/cups-browsed") CONFIG_FILES="$CONFIG_FILES utils/cups-browsed" ;; "utils/cups-browsed.conf") CONFIG_FILES="$CONFIG_FILES utils/cups-browsed.conf" ;; "filter/foomatic-rip/foomatic-rip.1") CONFIG_FILES="$CONFIG_FILES filter/foomatic-rip/foomatic-rip.1" ;; diff -Nru cups-filters-1.9.0/configure.ac cups-filters-1.10.0/configure.ac --- cups-filters-1.9.0/configure.ac 2016-06-09 14:12:45.000000000 +0000 +++ cups-filters-1.10.0/configure.ac 2016-07-15 22:47:08.000000000 +0000 @@ -6,7 +6,7 @@ # Version informations # ==================== m4_define([cups_filters_version_major],[1]) -m4_define([cups_filters_version_minor],[9]) +m4_define([cups_filters_version_minor],[10]) m4_define([cups_filters_version_micro],[0]) m4_define([cups_filters_version],[cups_filters_version_major.cups_filters_version_minor.cups_filters_version_micro]) @@ -548,6 +548,7 @@ ]) ]) AM_CONDITIONAL(ENABLE_GHOSTSCRIPT, test "x$enable_ghostscript" = xyes) +AC_SUBST(CUPS_GHOSTSCRIPT) AS_IF([test "x$with_pdftops_path" != "xsystem"], [ CUPS_PDFTOPS="$with_pdftops_path" @@ -675,21 +676,6 @@ CFLAGS="$CFLAGS -D_GNU_SOURCE" CXXFLAGS="$CXXFLAGS -D_GNU_SOURCE" -# ======= -# gstopxl -# ======= -AC_PROG_SED -dnl See if it is GNU sed or else. -dnl - need more work to tell SED features. -SED_EXTENDED_REGEX_OPT=-nre -sed_variant=`sed --version 2>&1` -sed_variant=`echo $sed_variant|sed -e 's/ .*//'` -if test "$sed_variant" != GNU ; then -SED_EXTENDED_REGEX_OPT=-nEe -fi -AC_SUBST(SED_EXTENDED_REGEX_OPT) -AC_SUBST(CUPS_GHOSTSCRIPT) - # ========================== # Braille embossing/liblouis # ========================== @@ -727,7 +713,6 @@ libcupsfilters.pc libfontembed.pc Makefile - filter/gstopxl utils/cups-browsed utils/cups-browsed.conf filter/foomatic-rip/foomatic-rip.1 diff -Nru cups-filters-1.9.0/COPYING cups-filters-1.10.0/COPYING --- cups-filters-1.9.0/COPYING 2016-03-03 19:52:25.000000000 +0000 +++ cups-filters-1.10.0/COPYING 2016-07-14 17:57:45.000000000 +0000 @@ -10,7 +10,6 @@ 2006-2012 BBR Inc. 2008-2016 Till Kamppeter 2008,2012 Tobias Hoffmann - 2003 Robert Sander 2003-2006 Red Hat, Inc. 2003-2006 Tim Waugh 2012 Franz Pförtsch @@ -118,18 +117,14 @@ Copyright: 1993, 1996-2014, Free Software Foundation, Inc License: GPL-2+ -Files: filter/gstopxl.in -Copyright: 2001-2005, Easy Software Products -License: GPL-2+ - -Files: filter/gstopxl* ppd/pxlcolor.ppd ppd/pxlmono.ppd +Files: ppd/pxlcolor.ppd ppd/pxlmono.ppd Copyright: 2001-2005 Easy Software Products License: GPL-2+ Files: filter/gstoraster.c Copyright: 2011-2013, Richard Hughes 2011, Tim Waugh - 2008-2013, Till Kamppeter + 2008-2016, Till Kamppeter License: Expat Files: filter/imagetopdf* @@ -171,17 +166,19 @@ Copyright: 2008, Tobias Hoffmann License: GPL-2 -Files: filter/pstopdf -Copyright: 2008-2012, Till Kamppeter - 2003, Robert Sander -License: GPL-2 - Files: filter/rastertopdf.cpp Copyright: 2010, Neil 'Superna' Armstrong 2012 Tobias Hoffmann 2014 Till Kamppeter License: GPL-3+ +Files: filter/rastertops.c +Copyright: 2016 Pranjal Bhor + 2010 Neil 'Superna' Armstrong + 2012 Tobias Hoffmann + 2014 Till Kamppeter +License: GPL-3+ + Files: filter/strcasestr.c Copyright: 1990, 1993, The Regents of the University of California License: BSD-4-clause @@ -192,15 +189,11 @@ 1997-2006, Easy Software Products License: GPL-2 -Files: filter/textonly -Copyright: 2003-2006, Tim Waugh - 2003-2006, Red Hat, Inc -License: GPL-2+ - -Files: filter/textonly* ppd/textonly.ppd -Copyright: 2003-2006 Red Hat, Inc. - 2003-2006 Tim Waugh -License: GPL-2+ +Files: filter/texttotext.c +Copyright: 2011-2013, Till Kamppeter + 2007-2011, Apple Inc + 1997-2006, Easy Software Products +License: GPL-2 Files: filter/texttopdf.c charset/* @@ -211,7 +204,7 @@ 1993-2007, Easy Software Products License: GPL-2 -Files: filter/texttops filter/imagetops +Files: filter/texttops filter/imagetops filter/gstopxl filter/gstopdf Copyright: 2012 Till Kamppeter License: GPL-2+ diff -Nru cups-filters-1.9.0/cupsfilters/raster.c cups-filters-1.10.0/cupsfilters/raster.c --- cups-filters-1.9.0/cupsfilters/raster.c 2015-07-04 11:21:47.000000000 +0000 +++ cups-filters-1.10.0/cupsfilters/raster.c 2016-06-21 16:26:19.000000000 +0000 @@ -824,6 +824,11 @@ if (ptr) bitspercolor = strtol(ptr, (char **)&ptr, 10); bitsperpixel = bitspercolor * numcolors; + /* In 1-bit-per-color RGB modes we add a forth bit to each pixel + to align the pixels with bytes */ + if (bitsperpixel == 3 && + strcasestr(val, "Rgb")) + bitsperpixel = 4; h->cupsBitsPerColor = bitspercolor; h->cupsBitsPerPixel = bitsperpixel; h->cupsColorSpace = colorspace; diff -Nru cups-filters-1.9.0/debian/changelog cups-filters-1.10.0/debian/changelog --- cups-filters-1.9.0/debian/changelog 2016-06-18 09:59:24.000000000 +0000 +++ cups-filters-1.10.0/debian/changelog 2016-07-16 11:47:50.000000000 +0000 @@ -1,3 +1,18 @@ +cups-filters (1.10.0-1) unstable; urgency=medium + + * New upstream release + - cups-browsed: From cups-browsed.service removed the unneeded + "Wants=cups.service" as we have "Requires=cups.service" + (Closes: #827455, #827457) + - pdftops: Also added Dell to the list of manufacturers whose printers need + Poppler's PostScript to work around their PostScript interpreter bugs + (Closes: #827040) + + * Update debian/copyright from upstream's + * Update the cups filter names + + -- Didier Raboud Sat, 16 Jul 2016 13:47:49 +0200 + cups-filters (1.9.0-2) unstable; urgency=medium [ Till Kamppeter ] diff -Nru cups-filters-1.9.0/debian/copyright cups-filters-1.10.0/debian/copyright --- cups-filters-1.9.0/debian/copyright 2016-06-12 10:21:51.000000000 +0000 +++ cups-filters-1.10.0/debian/copyright 2016-07-16 11:27:05.000000000 +0000 @@ -10,7 +10,6 @@ 2006-2012 BBR Inc. 2008-2016 Till Kamppeter 2008,2012 Tobias Hoffmann - 2003 Robert Sander 2003-2006 Red Hat, Inc. 2003-2006 Tim Waugh 2012 Franz Pförtsch @@ -25,7 +24,7 @@ 2003-2007, Kenshi Muto 2007-2012, Martin Pitt 2012-2015, Till Kamppeter - 2013-2015, Didier Raboud + 2013-2016, Didier Raboud License: GPL-2+ Files: backend/beh.c @@ -126,18 +125,14 @@ Copyright: 1993, 1996-2014, Free Software Foundation, Inc License: GPL-2+ -Files: filter/gstopxl.in -Copyright: 2001-2005, Easy Software Products -License: GPL-2+ - -Files: filter/gstopxl* ppd/pxlcolor.ppd ppd/pxlmono.ppd +Files: ppd/pxlcolor.ppd ppd/pxlmono.ppd Copyright: 2001-2005 Easy Software Products License: GPL-2+ Files: filter/gstoraster.c Copyright: 2011-2013, Richard Hughes 2011, Tim Waugh - 2008-2013, Till Kamppeter + 2008-2016, Till Kamppeter License: Expat Files: filter/imagetopdf* @@ -179,17 +174,19 @@ Copyright: 2008, Tobias Hoffmann License: GPL-2 -Files: filter/pstopdf -Copyright: 2008-2012, Till Kamppeter - 2003, Robert Sander -License: GPL-2 - Files: filter/rastertopdf.cpp Copyright: 2010, Neil 'Superna' Armstrong 2012 Tobias Hoffmann 2014 Till Kamppeter License: GPL-3+ +Files: filter/rastertops.c +Copyright: 2016 Pranjal Bhor + 2010 Neil 'Superna' Armstrong + 2012 Tobias Hoffmann + 2014 Till Kamppeter +License: GPL-3+ + Files: filter/strcasestr.c Copyright: 1990, 1993, The Regents of the University of California License: BSD-4-clause @@ -200,15 +197,11 @@ 1997-2006, Easy Software Products License: GPL-2 -Files: filter/textonly -Copyright: 2003-2006, Tim Waugh - 2003-2006, Red Hat, Inc -License: GPL-2+ - -Files: filter/textonly* ppd/textonly.ppd -Copyright: 2003-2006 Red Hat, Inc. - 2003-2006 Tim Waugh -License: GPL-2+ +Files: filter/texttotext.c +Copyright: 2011-2013, Till Kamppeter + 2007-2011, Apple Inc + 1997-2006, Easy Software Products +License: GPL-2 Files: filter/texttopdf.c charset/* @@ -219,7 +212,7 @@ 1993-2007, Easy Software Products License: GPL-2 -Files: filter/texttops filter/imagetops +Files: filter/texttops filter/imagetops filter/gstopxl filter/gstopdf Copyright: 2012 Till Kamppeter License: GPL-2+ diff -Nru cups-filters-1.9.0/debian/cups-filters-core-drivers.install cups-filters-1.10.0/debian/cups-filters-core-drivers.install --- cups-filters-1.9.0/debian/cups-filters-core-drivers.install 2016-03-25 16:14:53.000000000 +0000 +++ cups-filters-1.10.0/debian/cups-filters-core-drivers.install 2016-07-16 11:31:55.000000000 +0000 @@ -4,5 +4,6 @@ usr/lib/cups/filter/pdftoraster usr/lib/cups/filter/rastertopclx usr/lib/cups/filter/rastertopdf +usr/lib/cups/filter/rastertops usr/lib/cups/filter/sys5ippprinter usr/share/cups/mime/cupsfilters* diff -Nru cups-filters-1.9.0/debian/cups-filters.install cups-filters-1.10.0/debian/cups-filters.install --- cups-filters-1.9.0/debian/cups-filters.install 2016-03-24 12:42:18.000000000 +0000 +++ cups-filters-1.10.0/debian/cups-filters.install 2016-07-16 11:32:49.000000000 +0000 @@ -6,7 +6,7 @@ usr/lib/cups/filter/commandtopclx usr/lib/cups/filter/commandtoescpx usr/lib/cups/filter/pdftoijs -usr/lib/cups/filter/textonly +usr/lib/cups/filter/texttotext usr/lib/cups/filter/gstoraster usr/lib/cups/filter/urftopdf usr/lib/cups/filter/texttopdf @@ -18,7 +18,7 @@ usr/lib/cups/filter/imagetoraster usr/lib/cups/filter/foomatic-rip usr/lib/cups/filter/gstopxl -usr/lib/cups/filter/pstopdf +usr/lib/cups/filter/gstopdf usr/lib/cups/filter/brftoembosser usr/lib/cups/filter/imagetobrf usr/lib/cups/filter/imagetoubrl diff -Nru cups-filters-1.9.0/drv/cupsfilters.drv cups-filters-1.10.0/drv/cupsfilters.drv --- cups-filters-1.9.0/drv/cupsfilters.drv 2015-06-26 15:45:26.000000000 +0000 +++ cups-filters-1.10.0/drv/cupsfilters.drv 2016-07-15 19:20:20.000000000 +0000 @@ -2,12 +2,13 @@ #include #include +Version 1.0 + +{ // List the fonts that are supported, in this case all standard // fonts... Font * -Version 1.0 - // Generic IPP Everywhere Printer { @@ -622,4 +623,5640 @@ } -} \ No newline at end of file +} + +} + +// Generic Text-Only Printer +{ + +// Copyright +Copyright "(c) 2014 OpenPrinting" + +// Custom driver +DriverType custom + +// Generate copies manually +ManualCopies Yes + +// Color output +ColorDevice No + +// 1 page per minute +Throughput 1 + +// CUPS filters... +Filter "text/plain 0 texttotext" +Attribute "cupsFilter2" "" "text/plain text/plain 0 texttotext" + +Attribute "RequiresPageRegion" "All" "True" + +// Manufacturer +Manufacturer "Generic" + +// Let margins slightly differ from 0 to not get cupstestppd warnings +// about "Fullbleed" sizes. +HWMargins 0.1 0.1 0.1 0.1 + +// Supported page sizes +*MediaSize Letter +MediaSize Legal +MediaSize Tabloid +MediaSize Ledger +MediaSize A4 +MediaSize A3 +MediaSize FanFoldGerman +MediaSize FanFoldGermanLegal + +// Additional Medias +CustomMedia "11x14Rotated/14 7/8 x 11 in Continuous" 1008 792 0.1 0.1 0.1 0.1 "" "" +CustomMedia "LegalRotated/14 7/8 x 8 1/2 in Continuous" 1008 612 0.1 0.1 0.1 0.1 "" "" +CustomMedia "Custom1/Custom Page Size 1" 612 792 0.1 0.1 0.1 0.1 "" "" +CustomMedia "Custom2/Custom Page Size 2" 612 792 0.1 0.1 0.1 0.1 "" "" +CustomMedia "Custom3/Custom Page Size 3" 612 792 0.1 0.1 0.1 0.1 "" "" + +{ + Group "General/General" + + Option "OverLongLines/Long Line Handling" PickOne AnySetup 10.0 + Choice "Truncate/Truncate at Right Edge" "" + *Choice "WrapAtWidth/Wrap at Right Edge" "" + Choice "WordWrap/Word Wrap" "" + + Option "TabWidth/Tab Stop Width" PickOne AnySetup 10.0 + Choice "1/1 Space" "" + Choice "2/2 Spaces" "" + Choice "3/3 Spaces" "" + Choice "4/4 Spaces" "" + Choice "5/5 Spaces" "" + Choice "6/6 Spaces" "" + Choice "7/7 Spaces" "" + *Choice "8/8 Spaces" "" + Choice "9/9 Spaces" "" + Choice "10/10 Spaces" "" + Choice "11/11 Spaces" "" + Choice "12/12 Spaces" "" + Choice "13/13 Spaces" "" + Choice "14/14 Spaces" "" + Choice "15/15 Spaces" "" + Choice "16/16 Spaces" "" + Attribute CustomTabWidth True "" + Attribute ParamCustomTabWidth Spaces "1 int 1 999" + + Option "Pagination/Paginate Output ('On' for sheets, 'Off' for roll/continuous)" Boolean AnySetup 10.0 + *Choice "True/On" "" + Choice "False/Off" "" + + Option "page-left/Left Margin" PickOne AnySetup 10.0 + Choice "0/0 Columns" "" + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + *Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Attribute Custompage-left True "" + Attribute ParamCustompage-left Columns "1 int 1 99" + + Option "page-right/Right Margin" PickOne AnySetup 10.0 + Choice "0/0 Columns" "" + Choice "1/1 Column" "" + *Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Attribute Custompage-right True "" + Attribute ParamCustompage-right Columns "1 int 1 99" + + Option "page-top/Top Margin" PickOne AnySetup 10.0 + Choice "0/0 Lines" "" + Choice "1/1 Line" "" + *Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Attribute Custompage-top True "" + Attribute ParamCustompage-top Lines "1 int 1 99" + + Option "page-bottom/Bottom Margin" PickOne AnySetup 10.0 + Choice "0/0 Lines" "" + Choice "1/1 Line" "" + *Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Attribute Custompage-bottom True "" + Attribute ParamCustompage-bottom Lines "1 int 1 99" + + Group "InstallableOptions/Installable Options" + + Option "PrinterEncoding/Printer's Character Encoding" PickOne AnySetup 10.0 + *Choice "ASCII/Standard ASCII" "" + Choice "CP437/Code Page 437, PC-8, DOS Latin US (Original IBM)" "" + Choice "CP775/Code Page 775, PC-775, DOS Baltic Rim" "" + Choice "CP850/Code Page 850, PC-850, DOS Latin 1 (Western European)" "" + Choice "CP852/Code Page 852, PC-852, DOS Latin 2 (Central European)" "" + Choice "CP1004/Code Page 1004, IBM OS/2" "" + Choice "ROMAN8/HP Roman-8, (HP-UX European Latin)" "" + Choice "ROMAN9/HP Roman-9, (HP-UX European Latin)" "" + Choice "ISO-8859-1/ISO 8859-1, Latin 1 (Western European)" "" + Choice "ISO-8859-2/ISO 8859-2, Latin 2 (Eastern European)" "" + Choice "ISO-8859-3/ISO 8859-3, Latin 3 (South European)" "" + Choice "ISO-8859-4/ISO 8859-4, Latin 4 (North European)" "" + Choice "ISO-8859-5/ISO 8859-5, Latin/Cyrillic" "" + Choice "ISO-8859-6/ISO 8859-6, Latin/Arabic" "" + Choice "ISO-8859-7/ISO 8859-7, Latin/Greek" "" + Choice "ISO-8859-8/ISO 8859-8, Latin/Hebrew" "" + Choice "ISO-8859-9/ISO 8859-9, Latin 5 (Turkish)" "" + Choice "ISO-8859-10/ISO 8859-10, Latin 6 (Nordic)" "" + Choice "ISO-8859-13/ISO 8859-13, Latin 7 (Baltic)" "" + Choice "ISO-8859-14/ISO 8859-14, Latin 8 (Celtic)" "" + Choice "ISO-8859-15/ISO 8859-15, Latin 9 (Western European with Euro)" "" + Choice "ISO-8859-16/ISO 8859-16, Latin 10 (South-Eastern European)" "" + Choice "WINDOWS-1250/Windows 1250, Code Page 1250 (Central and East European Latin 2)" "" + Choice "WINDOWS-1251/Windows 1251, Code Page 1251 (Cyrillic)" "" + Choice "WINDOWS-1252/Windows 1252, Code Page 1252 (Western European Latin 1)" "" + Choice "WINDOWS-1253/Windows 1253, Code Page 1253 (Greek)" "" + Choice "WINDOWS-1254/Windows 1254, Code Page 1254 (Turkish)" "" + Choice "WINDOWS-1255/Windows 1255, Code Page 1255 (Hebrew)" "" + Choice "WINDOWS-1256/Windows 1256, Code Page 1256 (Arabic)" "" + Choice "WINDOWS-1257/Windows 1257, Code Page 1257 (Baltic)" "" + Choice "WINDOWS-1258/Windows 1258, Code Page 1258 (Vietnamese)" "" + Attribute CustomPrinterEncoding True "" + Attribute ParamCustomPrinterEncoding Encoding "1 string 1 32" + + Option "NewlineCharacters/Characters to send for a New Line" PickOne AnySetup 10.0 + Choice "LF/Line Feed (LF) only (Unix/Linux style)" "" + Choice "CR/Carriage Return (CR) only (Mac OS style)" "" + *Choice "CRLF/Carriage Return and Line Feed (CR + LF) (DOS/Windows style)" "" + + Option "SendFF/Send Form Feed after each page" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "LetterAvailable/Page Size Letter available" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "LetterNumLines/Page Size Letter Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + *Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomLetterNumLines True "" + Attribute ParamCustomLetterNumLines Lines "1 int 1 999" + + Option "LetterNumColumns/Page Size Letter Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + *Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomLetterNumColumns True "" + Attribute ParamCustomLetterNumColumns Columns "1 int 1 999" + + + Option "LegalAvailable/Page Size Legal available" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "LegalNumLines/Page Size Legal Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + *Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomLegalNumLines True "" + Attribute ParamCustomLegalNumLines Lines "1 int 1 999" + + Option "LegalNumColumns/Page Size Legal Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + *Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomLegalNumColumns True "" + Attribute ParamCustomLegalNumColumns Columns "1 int 1 999" + + + Option "TabloidAvailable/Page Size Tabloid available" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "TabloidNumLines/Page Size Tabloid Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + *Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomTabloidNumLines True "" + Attribute ParamCustomTabloidNumLines Lines "1 int 1 999" + + Option "TabloidNumColumns/Page Size Tabloid Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + *Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomTabloidNumColumns True "" + Attribute ParamCustomTabloidNumColumns Columns "1 int 1 999" + + + Option "LedgerAvailable/Page Size Ledger available" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "LedgerNumLines/Page Size Ledger Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + *Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomLedgerNumLines True "" + Attribute ParamCustomLedgerNumLines Lines "1 int 1 999" + + Option "LedgerNumColumns/Page Size Ledger Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + *Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomLedgerNumColumns True "" + Attribute ParamCustomLedgerNumColumns Columns "1 int 1 999" + + + Option "A4Available/Page Size A4 available" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "A4NumLines/Page Size A4 Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + *Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomA4NumLines True "" + Attribute ParamCustomA4NumLines Lines "1 int 1 999" + + Option "A4NumColumns/Page Size A4 Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + *Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomA4NumColumns True "" + Attribute ParamCustomA4NumColumns Columns "1 int 1 999" + + + Option "A3Available/Page Size A3 available" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "A3NumLines/Page Size A3 Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + *Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomA3NumLines True "" + Attribute ParamCustomA3NumLines Lines "1 int 1 999" + + Option "A3NumColumns/Page Size A3 Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + *Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomA3NumColumns True "" + Attribute ParamCustomA3NumColumns Columns "1 int 1 999" + + + Option "FanFoldGermanAvailable/Page Size FanFoldGerman available" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "FanFoldGermanNumLines/Page Size FanFoldGerman Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + *Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomFanFoldGermanNumLines True "" + Attribute ParamCustomFanFoldGermanNumLines Lines "1 int 1 999" + + Option "FanFoldGermanNumColumns/Page Size FanFoldGerman Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + *Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomFanFoldGermanNumColumns True "" + Attribute ParamCustomFanFoldGermanNumColumns Columns "1 int 1 999" + + + Option "FanFoldGermanLegalAvailable/Page Size FanFoldGermanLegal available" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "FanFoldGermanLegalNumLines/Page Size FanFoldGermanLegal Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + *Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomFanFoldGermanLegalNumLines True "" + Attribute ParamCustomFanFoldGermanLegalNumLines Lines "1 int 1 999" + + Option "FanFoldGermanLegalNumColumns/Page Size FanFoldGermanLegal Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + *Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomFanFoldGermanLegalNumColumns True "" + Attribute ParamCustomFanFoldGermanLegalNumColumns Columns "1 int 1 999" + + + Option "11x14RotatedAvailable/Page Size 11x14Rotated available" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "11x14RotatedNumLines/Page Size 11x14Rotated Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + *Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute Custom11x14RotatedNumLines True "" + Attribute ParamCustom11x14RotatedNumLines Lines "1 int 1 999" + + Option "11x14RotatedNumColumns/Page Size 11x14Rotated Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + *Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute Custom11x14RotatedNumColumns True "" + Attribute ParamCustom11x14RotatedNumColumns Columns "1 int 1 999" + + + Option "LegalRotatedAvailable/Page Size LegalRotated available" Boolean AnySetup 10.0 + *Choice "True/Yes" "" + Choice "False/No" "" + + Option "LegalRotatedNumLines/Page Size LegalRotated Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + *Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomLegalRotatedNumLines True "" + Attribute ParamCustomLegalRotatedNumLines Lines "1 int 1 999" + + Option "LegalRotatedNumColumns/Page Size LegalRotated Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + *Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomLegalRotatedNumColumns True "" + Attribute ParamCustomLegalRotatedNumColumns Columns "1 int 1 999" + + + Option "Custom1Available/Page Size Custom1 available" Boolean AnySetup 10.0 + Choice "True/Yes" "" + *Choice "False/No" "" + + Option "Custom1NumLines/Page Size Custom1 Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + *Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomCustom1NumLines True "" + Attribute ParamCustomCustom1NumLines Lines "1 int 1 999" + + Option "Custom1NumColumns/Page Size Custom1 Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + *Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomCustom1NumColumns True "" + Attribute ParamCustomCustom1NumColumns Columns "1 int 1 999" + + + Option "Custom2Available/Page Size Custom2 available" Boolean AnySetup 10.0 + Choice "True/Yes" "" + *Choice "False/No" "" + + Option "Custom2NumLines/Page Size Custom2 Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + *Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomCustom2NumLines True "" + Attribute ParamCustomCustom2NumLines Lines "1 int 1 999" + + Option "Custom2NumColumns/Page Size Custom2 Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + *Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomCustom2NumColumns True "" + Attribute ParamCustomCustom2NumColumns Columns "1 int 1 999" + + + Option "Custom3Available/Page Size Custom3 available" Boolean AnySetup 10.0 + Choice "True/Yes" "" + *Choice "False/No" "" + + Option "Custom3NumLines/Page Size Custom3 Number of Lines" PickOne AnySetup 10.0 + Choice "1/1 Line" "" + Choice "2/2 Lines" "" + Choice "3/3 Lines" "" + Choice "4/4 Lines" "" + Choice "5/5 Lines" "" + Choice "6/6 Lines" "" + Choice "7/7 Lines" "" + Choice "8/8 Lines" "" + Choice "9/9 Lines" "" + Choice "10/10 Lines" "" + Choice "11/11 Lines" "" + Choice "12/12 Lines" "" + Choice "13/13 Lines" "" + Choice "14/14 Lines" "" + Choice "15/15 Lines" "" + Choice "16/16 Lines" "" + Choice "17/17 Lines" "" + Choice "18/18 Lines" "" + Choice "19/19 Lines" "" + Choice "20/20 Lines" "" + Choice "21/21 Lines" "" + Choice "22/22 Lines" "" + Choice "23/23 Lines" "" + Choice "24/24 Lines" "" + Choice "25/25 Lines" "" + Choice "26/26 Lines" "" + Choice "27/27 Lines" "" + Choice "28/28 Lines" "" + Choice "29/29 Lines" "" + Choice "30/30 Lines" "" + Choice "31/31 Lines" "" + Choice "32/32 Lines" "" + Choice "33/33 Lines" "" + Choice "34/34 Lines" "" + Choice "35/35 Lines" "" + Choice "36/36 Lines" "" + Choice "37/37 Lines" "" + Choice "38/38 Lines" "" + Choice "39/39 Lines" "" + Choice "40/40 Lines" "" + Choice "41/41 Lines" "" + Choice "42/42 Lines" "" + Choice "43/43 Lines" "" + Choice "44/44 Lines" "" + Choice "45/45 Lines" "" + Choice "46/46 Lines" "" + Choice "47/47 Lines" "" + Choice "48/48 Lines" "" + Choice "49/49 Lines" "" + Choice "50/50 Lines" "" + Choice "51/51 Lines" "" + Choice "52/52 Lines" "" + Choice "53/53 Lines" "" + Choice "54/54 Lines" "" + Choice "55/55 Lines" "" + Choice "56/56 Lines" "" + Choice "57/57 Lines" "" + Choice "58/58 Lines" "" + Choice "59/59 Lines" "" + Choice "60/60 Lines" "" + Choice "61/61 Lines" "" + Choice "62/62 Lines" "" + Choice "63/63 Lines" "" + Choice "64/64 Lines" "" + Choice "65/65 Lines" "" + *Choice "66/66 Lines" "" + Choice "67/67 Lines" "" + Choice "68/68 Lines" "" + Choice "69/69 Lines" "" + Choice "70/70 Lines" "" + Choice "71/71 Lines" "" + Choice "72/72 Lines" "" + Choice "73/73 Lines" "" + Choice "74/74 Lines" "" + Choice "75/75 Lines" "" + Choice "76/76 Lines" "" + Choice "77/77 Lines" "" + Choice "78/78 Lines" "" + Choice "79/79 Lines" "" + Choice "80/80 Lines" "" + Choice "81/81 Lines" "" + Choice "82/82 Lines" "" + Choice "83/83 Lines" "" + Choice "84/84 Lines" "" + Choice "85/85 Lines" "" + Choice "86/86 Lines" "" + Choice "87/87 Lines" "" + Choice "88/88 Lines" "" + Choice "89/89 Lines" "" + Choice "90/90 Lines" "" + Choice "91/91 Lines" "" + Choice "92/92 Lines" "" + Choice "93/93 Lines" "" + Choice "94/94 Lines" "" + Choice "95/95 Lines" "" + Choice "96/96 Lines" "" + Choice "97/97 Lines" "" + Choice "98/98 Lines" "" + Choice "99/99 Lines" "" + Choice "100/100 Lines" "" + Choice "101/101 Lines" "" + Choice "102/102 Lines" "" + Choice "103/103 Lines" "" + Choice "104/104 Lines" "" + Choice "105/105 Lines" "" + Choice "106/106 Lines" "" + Choice "107/107 Lines" "" + Choice "108/108 Lines" "" + Choice "109/109 Lines" "" + Choice "110/110 Lines" "" + Choice "111/111 Lines" "" + Choice "112/112 Lines" "" + Choice "113/113 Lines" "" + Choice "114/114 Lines" "" + Choice "115/115 Lines" "" + Choice "116/116 Lines" "" + Choice "117/117 Lines" "" + Choice "118/118 Lines" "" + Choice "119/119 Lines" "" + Choice "120/120 Lines" "" + Choice "121/121 Lines" "" + Choice "122/122 Lines" "" + Choice "123/123 Lines" "" + Choice "124/124 Lines" "" + Choice "125/125 Lines" "" + Choice "126/126 Lines" "" + Choice "127/127 Lines" "" + Choice "128/128 Lines" "" + Choice "129/129 Lines" "" + Choice "130/130 Lines" "" + Choice "131/131 Lines" "" + Choice "132/132 Lines" "" + Choice "133/133 Lines" "" + Choice "134/134 Lines" "" + Choice "135/135 Lines" "" + Choice "136/136 Lines" "" + Choice "137/137 Lines" "" + Choice "138/138 Lines" "" + Choice "139/139 Lines" "" + Choice "140/140 Lines" "" + Choice "141/141 Lines" "" + Choice "142/142 Lines" "" + Choice "143/143 Lines" "" + Choice "144/144 Lines" "" + Choice "145/145 Lines" "" + Choice "146/146 Lines" "" + Choice "147/147 Lines" "" + Choice "148/148 Lines" "" + Choice "149/149 Lines" "" + Choice "150/150 Lines" "" + Choice "151/151 Lines" "" + Choice "152/152 Lines" "" + Choice "153/153 Lines" "" + Choice "154/154 Lines" "" + Choice "155/155 Lines" "" + Choice "156/156 Lines" "" + Choice "157/157 Lines" "" + Choice "158/158 Lines" "" + Choice "159/159 Lines" "" + Choice "160/160 Lines" "" + Choice "161/161 Lines" "" + Choice "162/162 Lines" "" + Choice "163/163 Lines" "" + Choice "164/164 Lines" "" + Choice "165/165 Lines" "" + Choice "166/166 Lines" "" + Choice "167/167 Lines" "" + Choice "168/168 Lines" "" + Choice "169/169 Lines" "" + Choice "170/170 Lines" "" + Choice "171/171 Lines" "" + Choice "172/172 Lines" "" + Choice "173/173 Lines" "" + Choice "174/174 Lines" "" + Choice "175/175 Lines" "" + Choice "176/176 Lines" "" + Choice "177/177 Lines" "" + Choice "178/178 Lines" "" + Choice "179/179 Lines" "" + Choice "180/180 Lines" "" + Choice "181/181 Lines" "" + Choice "182/182 Lines" "" + Choice "183/183 Lines" "" + Choice "184/184 Lines" "" + Choice "185/185 Lines" "" + Choice "186/186 Lines" "" + Choice "187/187 Lines" "" + Choice "188/188 Lines" "" + Choice "189/189 Lines" "" + Choice "190/190 Lines" "" + Choice "191/191 Lines" "" + Choice "192/192 Lines" "" + Choice "193/193 Lines" "" + Choice "194/194 Lines" "" + Choice "195/195 Lines" "" + Choice "196/196 Lines" "" + Choice "197/197 Lines" "" + Choice "198/198 Lines" "" + Choice "199/199 Lines" "" + Choice "200/200 Lines" "" + Attribute CustomCustom3NumLines True "" + Attribute ParamCustomCustom3NumLines Lines "1 int 1 999" + + Option "Custom3NumColumns/Page Size Custom3 Number of Columns" PickOne AnySetup 10.0 + Choice "1/1 Column" "" + Choice "2/2 Columns" "" + Choice "3/3 Columns" "" + Choice "4/4 Columns" "" + Choice "5/5 Columns" "" + Choice "6/6 Columns" "" + Choice "7/7 Columns" "" + Choice "8/8 Columns" "" + Choice "9/9 Columns" "" + Choice "10/10 Columns" "" + Choice "11/11 Columns" "" + Choice "12/12 Columns" "" + Choice "13/13 Columns" "" + Choice "14/14 Columns" "" + Choice "15/15 Columns" "" + Choice "16/16 Columns" "" + Choice "17/17 Columns" "" + Choice "18/18 Columns" "" + Choice "19/19 Columns" "" + Choice "20/20 Columns" "" + Choice "21/21 Columns" "" + Choice "22/22 Columns" "" + Choice "23/23 Columns" "" + Choice "24/24 Columns" "" + Choice "25/25 Columns" "" + Choice "26/26 Columns" "" + Choice "27/27 Columns" "" + Choice "28/28 Columns" "" + Choice "29/29 Columns" "" + Choice "30/30 Columns" "" + Choice "31/31 Columns" "" + Choice "32/32 Columns" "" + Choice "33/33 Columns" "" + Choice "34/34 Columns" "" + Choice "35/35 Columns" "" + Choice "36/36 Columns" "" + Choice "37/37 Columns" "" + Choice "38/38 Columns" "" + Choice "39/39 Columns" "" + Choice "40/40 Columns" "" + Choice "41/41 Columns" "" + Choice "42/42 Columns" "" + Choice "43/43 Columns" "" + Choice "44/44 Columns" "" + Choice "45/45 Columns" "" + Choice "46/46 Columns" "" + Choice "47/47 Columns" "" + Choice "48/48 Columns" "" + Choice "49/49 Columns" "" + Choice "50/50 Columns" "" + Choice "51/51 Columns" "" + Choice "52/52 Columns" "" + Choice "53/53 Columns" "" + Choice "54/54 Columns" "" + Choice "55/55 Columns" "" + Choice "56/56 Columns" "" + Choice "57/57 Columns" "" + Choice "58/58 Columns" "" + Choice "59/59 Columns" "" + Choice "60/60 Columns" "" + Choice "61/61 Columns" "" + Choice "62/62 Columns" "" + Choice "63/63 Columns" "" + Choice "64/64 Columns" "" + Choice "65/65 Columns" "" + Choice "66/66 Columns" "" + Choice "67/67 Columns" "" + Choice "68/68 Columns" "" + Choice "69/69 Columns" "" + Choice "70/70 Columns" "" + Choice "71/71 Columns" "" + Choice "72/72 Columns" "" + Choice "73/73 Columns" "" + Choice "74/74 Columns" "" + Choice "75/75 Columns" "" + Choice "76/76 Columns" "" + Choice "77/77 Columns" "" + Choice "78/78 Columns" "" + Choice "79/79 Columns" "" + *Choice "80/80 Columns" "" + Choice "81/81 Columns" "" + Choice "82/82 Columns" "" + Choice "83/83 Columns" "" + Choice "84/84 Columns" "" + Choice "85/85 Columns" "" + Choice "86/86 Columns" "" + Choice "87/87 Columns" "" + Choice "88/88 Columns" "" + Choice "89/89 Columns" "" + Choice "90/90 Columns" "" + Choice "91/91 Columns" "" + Choice "92/92 Columns" "" + Choice "93/93 Columns" "" + Choice "94/94 Columns" "" + Choice "95/95 Columns" "" + Choice "96/96 Columns" "" + Choice "97/97 Columns" "" + Choice "98/98 Columns" "" + Choice "99/99 Columns" "" + Choice "100/100 Columns" "" + Choice "101/101 Columns" "" + Choice "102/102 Columns" "" + Choice "103/103 Columns" "" + Choice "104/104 Columns" "" + Choice "105/105 Columns" "" + Choice "106/106 Columns" "" + Choice "107/107 Columns" "" + Choice "108/108 Columns" "" + Choice "109/109 Columns" "" + Choice "110/110 Columns" "" + Choice "111/111 Columns" "" + Choice "112/112 Columns" "" + Choice "113/113 Columns" "" + Choice "114/114 Columns" "" + Choice "115/115 Columns" "" + Choice "116/116 Columns" "" + Choice "117/117 Columns" "" + Choice "118/118 Columns" "" + Choice "119/119 Columns" "" + Choice "120/120 Columns" "" + Choice "121/121 Columns" "" + Choice "122/122 Columns" "" + Choice "123/123 Columns" "" + Choice "124/124 Columns" "" + Choice "125/125 Columns" "" + Choice "126/126 Columns" "" + Choice "127/127 Columns" "" + Choice "128/128 Columns" "" + Choice "129/129 Columns" "" + Choice "130/130 Columns" "" + Choice "131/131 Columns" "" + Choice "132/132 Columns" "" + Choice "133/133 Columns" "" + Choice "134/134 Columns" "" + Choice "135/135 Columns" "" + Choice "136/136 Columns" "" + Choice "137/137 Columns" "" + Choice "138/138 Columns" "" + Choice "139/139 Columns" "" + Choice "140/140 Columns" "" + Choice "141/141 Columns" "" + Choice "142/142 Columns" "" + Choice "143/143 Columns" "" + Choice "144/144 Columns" "" + Choice "145/145 Columns" "" + Choice "146/146 Columns" "" + Choice "147/147 Columns" "" + Choice "148/148 Columns" "" + Choice "149/149 Columns" "" + Choice "150/150 Columns" "" + Choice "151/151 Columns" "" + Choice "152/152 Columns" "" + Choice "153/153 Columns" "" + Choice "154/154 Columns" "" + Choice "155/155 Columns" "" + Choice "156/156 Columns" "" + Choice "157/157 Columns" "" + Choice "158/158 Columns" "" + Choice "159/159 Columns" "" + Choice "160/160 Columns" "" + Choice "161/161 Columns" "" + Choice "162/162 Columns" "" + Choice "163/163 Columns" "" + Choice "164/164 Columns" "" + Choice "165/165 Columns" "" + Choice "166/166 Columns" "" + Choice "167/167 Columns" "" + Choice "168/168 Columns" "" + Choice "169/169 Columns" "" + Choice "170/170 Columns" "" + Choice "171/171 Columns" "" + Choice "172/172 Columns" "" + Choice "173/173 Columns" "" + Choice "174/174 Columns" "" + Choice "175/175 Columns" "" + Choice "176/176 Columns" "" + Choice "177/177 Columns" "" + Choice "178/178 Columns" "" + Choice "179/179 Columns" "" + Choice "180/180 Columns" "" + Choice "181/181 Columns" "" + Choice "182/182 Columns" "" + Choice "183/183 Columns" "" + Choice "184/184 Columns" "" + Choice "185/185 Columns" "" + Choice "186/186 Columns" "" + Choice "187/187 Columns" "" + Choice "188/188 Columns" "" + Choice "189/189 Columns" "" + Choice "190/190 Columns" "" + Choice "191/191 Columns" "" + Choice "192/192 Columns" "" + Choice "193/193 Columns" "" + Choice "194/194 Columns" "" + Choice "195/195 Columns" "" + Choice "196/196 Columns" "" + Choice "197/197 Columns" "" + Choice "198/198 Columns" "" + Choice "199/199 Columns" "" + Choice "200/200 Columns" "" + Attribute CustomCustom3NumColumns True "" + Attribute ParamCustomCustom3NumColumns Columns "1 int 1 999" + + + // Constraints + UIConstraints "*PageSize Letter *LetterAvailable False" + UIConstraints "*PageSize Legal *LegalAvailable False" + UIConstraints "*PageSize Tabloid *TabloidAvailable False" + UIConstraints "*PageSize Ledger *LedgerAvailable False" + UIConstraints "*PageSize A4 *A4Available False" + UIConstraints "*PageSize A3 *A3Available False" + UIConstraints "*PageSize FanFoldGerman *FanFoldGermanAvailable False" + UIConstraints "*PageSize FanFoldGermanLegal *FanFoldGermanLegalAvailable False" + UIConstraints "*PageSize 11x14Rotated *11x14RotatedAvailable False" + UIConstraints "*PageSize LegalRotated *LegalRotatedAvailable False" + UIConstraints "*PageSize Custom1 *Custom1Available False" + UIConstraints "*PageSize Custom2 *Custom2Available False" + UIConstraints "*PageSize Custom3 *Custom3Available False" + UIConstraints "*PageRegion Letter *LetterAvailable False" + UIConstraints "*PageRegion Legal *LegalAvailable False" + UIConstraints "*PageRegion Tabloid *TabloidAvailable False" + UIConstraints "*PageRegion Ledger *LedgerAvailable False" + UIConstraints "*PageRegion A4 *A4Available False" + UIConstraints "*PageRegion A3 *A3Available False" + UIConstraints "*PageRegion FanFoldGerman *FanFoldGermanAvailable False" + UIConstraints "*PageRegion FanFoldGermanLegal *FanFoldGermanLegalAvailable False" + UIConstraints "*PageRegion 11x14Rotated *11x14RotatedAvailable False" + UIConstraints "*PageRegion LegalRotated *LegalRotatedAvailable False" + UIConstraints "*PageRegion Custom1 *Custom1Available False" + UIConstraints "*PageRegion Custom2 *Custom2Available False" + UIConstraints "*PageRegion Custom3 *Custom3Available False" + + + ModelName "Generic Text-Only Printer" + Attribute "NickName" "" "Generic Text-Only Printer" + Attribute "ShortNickName" "" "Generic Text-Only Printer" + Attribute "1284DeviceID" "" "MFG:Generic;MDL:Text-Only Printer;DES:Generic Text-Only Printer;CLS:PRINTER;CMD:TXT;DRV:Dtextonly,R1,M0;" + PCFileName "textonly.ppd" + Attribute "Product" "" "(Generic Text-Only Printer)" + +} +} diff -Nru cups-filters-1.9.0/filter/foomatic-rip/foomatic-rip.1 cups-filters-1.10.0/filter/foomatic-rip/foomatic-rip.1 --- cups-filters-1.9.0/filter/foomatic-rip/foomatic-rip.1 2016-06-09 14:17:07.000000000 +0000 +++ cups-filters-1.10.0/filter/foomatic-rip/foomatic-rip.1 2016-07-15 22:49:52.000000000 +0000 @@ -159,14 +159,6 @@ supplying the \fB--debug\fR command line option. Default setting is \fB0\fR. .TP 10 -.B ps_accounting: 0|1 -\fRTurns on (\fB1\fR) or off (\fB0\fR) inserting PostScript code for page -accounting into PostScript jobs. The inserted PostScript code makes -Ghostscript generating accounting output on stderr and CUPS can this way -log each page which got printed. The code will only be inserted if CUPS -is the spooler. Default setting is \fB1\fR. - -.TP 10 .BI echo: \ [/] \fRSets the path to an \fBecho(1)\fR executable which supports \fB-n\fR. diff -Nru cups-filters-1.9.0/filter/foomatic-rip/foomatic-rip.1.in cups-filters-1.10.0/filter/foomatic-rip/foomatic-rip.1.in --- cups-filters-1.9.0/filter/foomatic-rip/foomatic-rip.1.in 2015-06-26 15:45:26.000000000 +0000 +++ cups-filters-1.10.0/filter/foomatic-rip/foomatic-rip.1.in 2016-06-13 18:05:54.000000000 +0000 @@ -159,14 +159,6 @@ supplying the \fB--debug\fR command line option. Default setting is \fB0\fR. .TP 10 -.B ps_accounting: 0|1 -\fRTurns on (\fB1\fR) or off (\fB0\fR) inserting PostScript code for page -accounting into PostScript jobs. The inserted PostScript code makes -Ghostscript generating accounting output on stderr and CUPS can this way -log each page which got printed. The code will only be inserted if CUPS -is the spooler. Default setting is \fB1\fR. - -.TP 10 .BI echo: \ [/] \fRSets the path to an \fBecho(1)\fR executable which supports \fB-n\fR. diff -Nru cups-filters-1.9.0/filter/gstopdf cups-filters-1.10.0/filter/gstopdf --- cups-filters-1.9.0/filter/gstopdf 1970-01-01 00:00:00.000000000 +0000 +++ cups-filters-1.10.0/filter/gstopdf 2016-06-28 21:48:21.000000000 +0000 @@ -0,0 +1,25 @@ +#!/bin/sh + +# gstopdf - Ghostscript-based PDF filter for CUPS +# +# Note: This is only a wrapper filter, the real work is done by gstoraster +# +# (C) 2012 Till Kamppeter +# +# Released under GPL 2 or later +# + +echo "DEBUG: gstopdf argv[$#] = $@" >&2 +echo "DEBUG: PPD: $PPD" >&2 + +if [ $# -lt 5 -o $# -gt 6 ]; then + echo "ERROR: gstopdf job-id user title copies options [file]" >&2 + exit 1 +fi + +# Read from given file. +if [ -n "$6" ]; then + exec <"$6" +fi + +OUTFORMAT=PDF $CUPS_SERVERBIN/filter/gstoraster "$1" "$2" "$3" "$4" "$5" diff -Nru cups-filters-1.9.0/filter/gstopxl cups-filters-1.10.0/filter/gstopxl --- cups-filters-1.9.0/filter/gstopxl 2016-06-09 14:17:07.000000000 +0000 +++ cups-filters-1.10.0/filter/gstopxl 2016-06-28 21:48:26.000000000 +0000 @@ -1,218 +1,25 @@ #!/bin/sh + +# gstopxl - Ghostscript-based PCL-XL filter for CUPS # +# Note: This is only a wrapper filter, the real work is done by gstoraster # -# CUPS PCL XL/PCL 6 filter script for Ghostscript. -# -# Copyright 2001-2005 by Easy Software Products. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# (C) 2012 Till Kamppeter # -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Released under GPL 2 or later # -# Set the library/font path... -GS_LIB="${CUPS_FONTPATH:=/usr/share/cups/fonts}" -export GS_LIB - -# Determine the PCL XL/PCL 6 driver to use... -if test "x$PPD" != x; then - colordevice=`grep '^*ColorDevice:' "$PPD" | awk -F: '{print $2}'` - case "$colordevice" in - *True* | *true*) - device="pxlcolor" - ;; - *) - device="pxlmono" - ;; - esac -else - device="pxlcolor" -fi - -# Apply PPD settings. - -ps_code= -ppd_opts= - -resolution= -eval "$(printf "%s" "$5" | sed -nEe 's/.*(^|[[:space:]])(printer-resolution|Resolution)=([0-9.]+(x[0-9.]+)?).*/resolution="${resolution:-\3}"/pi')" -if test -e "$PPD"; then - eval "$(sed -nEe 's/^\*DefaultResolution:[[:space:]]+([0-9.]+(x[0-9.]+)?).*/resolution="${resolution:-\1}"/p' "$PPD")" -fi -echo "DEBUG: Resolution: $resolution" >&2 -if test -n "$resolution"; then - ppd_opts="${ppd_opts:+$ppd_opts }-r$resolution" -fi - -pagesize= -eval "$(printf "%s" "$5" | sed -nEe 's/.*(^|[[:space:]])(media|PageSize)=([^[:space:]]+).*/pagesize="${pagesize:-\3}"/pi')" -if test -e "$PPD"; then - eval "$(sed -nEe 's/^\*DefaultPageSize:[[:space:]]+([^[:space:]]+).*/pagesize="${pagesize:-\1}"/p' "$PPD")" -fi -echo "DEBUG: Page size: $pagesize" >&2 -width= -height= -if test -n "$pagesize" && test -e "$PPD"; then - eval "$(sed -nEe 's|^\*PaperDimension[[:space:]]+'"$pagesize"'/[^:]+:[[:space:]]+"([^[:space:]]+)[[:space:]]+([^[:space:]]+)".*|width="\1"; height="\2"|p' "$PPD")" -fi -echo "DEBUG: Width: $width, height: $height" >&2 -if test -n "$width"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dDEVICEWIDTHPOINTS=$width" -fi -if test -n "$height"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dDEVICEHEIGHTPOINTS=$height" -fi - -bl_x= -bl_y= -tr_x= -tr_y= -if test -n "$pagesize" && test -e "$PPD"; then - eval "$(sed -nEe 's|^\*ImageableArea[[:space:]]+'"$pagesize"'/[^:]+:[[:space:]]+"([^[:space:]]+)[[:space:]]+([^[:space:]]+)[[:space:]]+([^[:space:]]+)[[:space:]]+([^[:space:]]+)".*|bl_x="\1"; bl_y="\2"; tr_x="\3"; tr_y="\4"|p' "$PPD")" -fi -echo "DEBUG: Absolute margins: $bl_x, $bl_y, $tr_x, $tr_y" >&2 -margin_l= -margin_b= -margin_r= -margin_t= -if test -n "$width" && test -n "$height" && \ - test -n "$bl_x" && test -n "$bl_y" && \ - test -n "$tr_x" && test -n "$tr_y"; then - margin_l="$bl_x" - margin_b="$bl_y" - margin_r="$(printf "scale=8; (%s)-(%s)\n" "$width" "$tr_x" | bc)" - margin_t="$(printf "scale=8; (%s)-(%s)\n" "$height" "$tr_y" | bc)" -fi -echo "DEBUG: Relative margins: $margin_l, $margin_b, $margin_r, $margin_t" >&2 -if test -n "$margin_l" && test -n "$margin_b" && \ - test -n "$margin_r" && test -n "$margin_t"; then - ps_code="${ps_code:+$ps_code }<>setpagedevice" -fi - -inputslot= -eval "$(printf "%s" "$5" | sed -nEe 's/.*(^|[[:space:]])(media-position|MediaPosition|media-source|MediaSource|InputSlot)=([^[:space:]]+).*/inputslot="${inputslot:-\3}"/pi')" -if test -e "$PPD"; then - eval "$(sed -nEe 's/^\*DefaultInputSlot:[[:space:]]+([^[:space:]]+).*/inputslot="${inputslot:-\1}"/p' "$PPD")" -fi -echo "DEBUG: InputSlot: $inputslot" >&2 -inputslot_val= -if test -n "$inputslot" && test -e "$PPD"; then - eval "$(sed -nEe 's|^\*InputSlot[[:space:]]+'"$inputslot"'/[^:]+:[[:space:]]+"[[:space:]]*<[[:space:]]*<[[:space:]]*/MediaPosition[[:space:]]*([0-9]+)[[:space:]]*>[[:space:]]*>[[:space:]]*setpagedevice[[:space:]]*".*|inputslot_val="\1"|p' "$PPD")" -else - if echo "$inputslot" | grep -qiE 'Default'; then - inputslot_val=0 - elif echo "$inputslot" | grep -qiE 'Auto'; then - inputslot_val=1 - elif echo "$inputslot" | grep -qiE 'Manual'; then - inputslot_val=2 - elif echo "$inputslot" | grep -qiE 'Multipurpose|ByPass'; then - inputslot_val=3 - elif echo "$inputslot" | grep -qiE 'Main|Upper|Top'; then - inputslot_val=4 - elif echo "$inputslot" | grep -qiE 'Alternat|Mid'; then - inputslot_val=5 - elif echo "$inputslot" | grep -qiE 'Large|Lower|Bottom'; then - inputslot_val=6 - fi -fi -echo "DEBUG: Value for MediaPosition: $inputslot_val" >&2 -if test -n "$inputslot_val"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dMediaPosition=$inputslot_val" -fi +echo "DEBUG: gstopxl argv[$#] = $@" >&2 +echo "DEBUG: PPD: $PPD" >&2 -colormodel= -eval "$(printf "%s" "$5" | sed -nEe 's/.*(^|[[:space:]])(pwg-raster-document-type|PwgRasterDocumentType|print-color-mode|PrintColorMode|color-space|ColorSpace|color-model|ColorModel)=([^[:space:]]+).*/colormodel="${colormodel:-\3}"/pi')" -if test -e "$PPD"; then - eval "$(sed -nEe 's/^\*DefaultColorModel:[[:space:]]+([^[:space:]]+).*/colormodel="${colormodel:-\1}"/p' "$PPD")" -fi -echo "DEBUG: ColorModel: $colormodel" >&2 -if echo "$colormodel" | grep -qiE 'gray|black|device1|mono'; then - device=pxlmono -fi -colormodel_val= -if test -n "$colormodel" && test -e "$PPD"; then - eval "$(sed -nEe 's|^\*ColorModel[[:space:]]+'"$colormodel"'/[^:]+:[[:space:]]+"[[:space:]]*<[[:space:]]*<[[:space:]]*/BitsPerPixel[[:space:]]*([0-9]*)[[:space:]]*>[[:space:]]*>[[:space:]]*setpagedevice[[:space:]]*".*|colormodel_val="\1"|p' "$PPD")" -fi -echo "DEBUG: Value for BitsPerPixel: $colormodel_val" >&2 -if test -n "$colormodel_val"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dBitsPerPixel=$colormodel_val" -fi - -duplex= -tumble= -eval "$(printf "%s" "$5" | sed -nEe 's/.*(^|[[:space:]])(Duplex|sides)=([^[:space:]]+).*/duplex="${duplex:-\3}"/pi')" -eval "$(printf "%s" "$5" | sed -nEe 's/.*(^|[[:space:]])(Tumble)=([^[:space:]]+).*/tumble="${tumble:-\3}"/pi')" -if test -e "$PPD"; then - eval "$(sed -nEe 's/^\*DefaultDuplex:[[:space:]]+([^[:space:]]+).*/duplex="${duplex:-\1}"/p' "$PPD")" -fi -echo "DEBUG: Duplex: $duplex" >&2 -echo "DEBUG: Tumble: $tumble" >&2 -duplex_val= -tumble_val= -if test -n "$duplex" && test -e "$PPD"; then - eval "$(sed -nEe 's|^\*Duplex[[:space:]]+'"$duplex"'/[^:]+:[[:space:]]+"[[:space:]]*<[[:space:]]*<[[:space:]]*/Duplex[[:space:]]*([^[:space:]]*)[[:space:]]*(/Tumble[[:space:]]*([^[:space:]]*)[[:space:]]*)?>[[:space:]]*>[[:space:]]*setpagedevice[[:space:]]*".*|duplex_val="\1"; tumble_val="\3"|p' "$PPD")" -else - if echo "$duplex" | grep -qiE 'None|Off|False|No|One'; then - duplex_val=false - elif echo "$duplex" | grep -qiE 'Duplex|On|True|Yes|Two'; then - duplex_val=true - if echo "$duplex" | grep -qiE 'DuplexTumble|short'; then - tumble_val=true - elif echo "$duplex" | grep -qiE 'DuplexNoTumble|long'; then - tumble_val=false - elif echo "$tumble" | grep -qiE 'On|True|Yes'; then - tumble_val=true - elif echo "$tumble" | grep -qiE 'Off|False|No'; then - tumble_val=false - fi - fi -fi -echo "DEBUG: Value for Duplex: $duplex_val; Value for Tumble: $tumble_val" >&2 -if test -n "$duplex_val"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dDuplex=$duplex_val" -fi -if test -n "$tumble_val"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dTumble=$tumble_val" +if [ $# -lt 5 -o $# -gt 6 ]; then + echo "ERROR: gstopxl job-id user title copies options [file]" >&2 + exit 1 fi - -echo "DEBUG: PPD options: $ppd_opts" >&2 -echo "DEBUG: PostScript code from options: $ps_code" >&2 - -# Options we use with Ghostscript... -gsopts="-dQUIET -dPARANOIDSAFER -dNOPAUSE -dBATCH -dNOINTERPOLATE" -gsopts="$gsopts -sDEVICE=$device -sstdout=%stderr" - -# See if we have a filename on the command-line... +# Read from given file. if [ -n "$6" ]; then - exec <"$6" + exec <"$6" fi -# We read the data into a temporary file as Ghostscript needs this to be -# able to also work with PDF input -tempfiles= -trap 'rm -f $tempfiles' 0 1 2 13 15 - -ifile=$(mktemp -t gstopxl.XXXXXX) -tempfiles="$tempfiles $ifile" - -cat >"$ifile" - -echo INFO: Starting GPL Ghostscript `/usr/bin/gs --version`... 1>&2 -echo DEBUG: Running /usr/bin/gs $gsopts $ppd_opts -sOUTPUTFILE="%stdout" -c "$ps_code" -f "$ifile" 1>&2 - -# Now run Ghostscript... -/usr/bin/gs $gsopts $ppd_opts -sOUTPUTFILE="%stdout" -c "$ps_code" -f "$ifile" - -# -# +OUTFORMAT=PXL $CUPS_SERVERBIN/filter/gstoraster "$1" "$2" "$3" "$4" "$5" diff -Nru cups-filters-1.9.0/filter/gstopxl.in cups-filters-1.10.0/filter/gstopxl.in --- cups-filters-1.9.0/filter/gstopxl.in 2015-06-26 15:45:26.000000000 +0000 +++ cups-filters-1.10.0/filter/gstopxl.in 1970-01-01 00:00:00.000000000 +0000 @@ -1,218 +0,0 @@ -#!/bin/sh -# -# -# CUPS PCL XL/PCL 6 filter script for Ghostscript. -# -# Copyright 2001-2005 by Easy Software Products. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# - -# Set the library/font path... -GS_LIB="${CUPS_FONTPATH:=/usr/share/cups/fonts}" -export GS_LIB - -# Determine the PCL XL/PCL 6 driver to use... -if test "x$PPD" != x; then - colordevice=`grep '^*ColorDevice:' "$PPD" | awk -F: '{print $2}'` - case "$colordevice" in - *True* | *true*) - device="pxlcolor" - ;; - *) - device="pxlmono" - ;; - esac -else - device="pxlcolor" -fi - -# Apply PPD settings. - -ps_code= -ppd_opts= - -resolution= -eval "$(printf "%s" "$5" | sed @SED_EXTENDED_REGEX_OPT@ 's/.*(^|[[:space:]])(printer-resolution|Resolution)=([0-9.]+(x[0-9.]+)?).*/resolution="${resolution:-\3}"/pi')" -if test -e "$PPD"; then - eval "$(sed @SED_EXTENDED_REGEX_OPT@ 's/^\*DefaultResolution:[[:space:]]+([0-9.]+(x[0-9.]+)?).*/resolution="${resolution:-\1}"/p' "$PPD")" -fi -echo "DEBUG: Resolution: $resolution" >&2 -if test -n "$resolution"; then - ppd_opts="${ppd_opts:+$ppd_opts }-r$resolution" -fi - -pagesize= -eval "$(printf "%s" "$5" | sed @SED_EXTENDED_REGEX_OPT@ 's/.*(^|[[:space:]])(media|PageSize)=([^[:space:]]+).*/pagesize="${pagesize:-\3}"/pi')" -if test -e "$PPD"; then - eval "$(sed @SED_EXTENDED_REGEX_OPT@ 's/^\*DefaultPageSize:[[:space:]]+([^[:space:]]+).*/pagesize="${pagesize:-\1}"/p' "$PPD")" -fi -echo "DEBUG: Page size: $pagesize" >&2 -width= -height= -if test -n "$pagesize" && test -e "$PPD"; then - eval "$(sed @SED_EXTENDED_REGEX_OPT@ 's|^\*PaperDimension[[:space:]]+'"$pagesize"'/[^:]+:[[:space:]]+"([^[:space:]]+)[[:space:]]+([^[:space:]]+)".*|width="\1"; height="\2"|p' "$PPD")" -fi -echo "DEBUG: Width: $width, height: $height" >&2 -if test -n "$width"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dDEVICEWIDTHPOINTS=$width" -fi -if test -n "$height"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dDEVICEHEIGHTPOINTS=$height" -fi - -bl_x= -bl_y= -tr_x= -tr_y= -if test -n "$pagesize" && test -e "$PPD"; then - eval "$(sed @SED_EXTENDED_REGEX_OPT@ 's|^\*ImageableArea[[:space:]]+'"$pagesize"'/[^:]+:[[:space:]]+"([^[:space:]]+)[[:space:]]+([^[:space:]]+)[[:space:]]+([^[:space:]]+)[[:space:]]+([^[:space:]]+)".*|bl_x="\1"; bl_y="\2"; tr_x="\3"; tr_y="\4"|p' "$PPD")" -fi -echo "DEBUG: Absolute margins: $bl_x, $bl_y, $tr_x, $tr_y" >&2 -margin_l= -margin_b= -margin_r= -margin_t= -if test -n "$width" && test -n "$height" && \ - test -n "$bl_x" && test -n "$bl_y" && \ - test -n "$tr_x" && test -n "$tr_y"; then - margin_l="$bl_x" - margin_b="$bl_y" - margin_r="$(printf "scale=8; (%s)-(%s)\n" "$width" "$tr_x" | bc)" - margin_t="$(printf "scale=8; (%s)-(%s)\n" "$height" "$tr_y" | bc)" -fi -echo "DEBUG: Relative margins: $margin_l, $margin_b, $margin_r, $margin_t" >&2 -if test -n "$margin_l" && test -n "$margin_b" && \ - test -n "$margin_r" && test -n "$margin_t"; then - ps_code="${ps_code:+$ps_code }<>setpagedevice" -fi - -inputslot= -eval "$(printf "%s" "$5" | sed @SED_EXTENDED_REGEX_OPT@ 's/.*(^|[[:space:]])(media-position|MediaPosition|media-source|MediaSource|InputSlot)=([^[:space:]]+).*/inputslot="${inputslot:-\3}"/pi')" -if test -e "$PPD"; then - eval "$(sed @SED_EXTENDED_REGEX_OPT@ 's/^\*DefaultInputSlot:[[:space:]]+([^[:space:]]+).*/inputslot="${inputslot:-\1}"/p' "$PPD")" -fi -echo "DEBUG: InputSlot: $inputslot" >&2 -inputslot_val= -if test -n "$inputslot" && test -e "$PPD"; then - eval "$(sed @SED_EXTENDED_REGEX_OPT@ 's|^\*InputSlot[[:space:]]+'"$inputslot"'/[^:]+:[[:space:]]+"[[:space:]]*<[[:space:]]*<[[:space:]]*/MediaPosition[[:space:]]*([0-9]+)[[:space:]]*>[[:space:]]*>[[:space:]]*setpagedevice[[:space:]]*".*|inputslot_val="\1"|p' "$PPD")" -else - if echo "$inputslot" | grep -qiE 'Default'; then - inputslot_val=0 - elif echo "$inputslot" | grep -qiE 'Auto'; then - inputslot_val=1 - elif echo "$inputslot" | grep -qiE 'Manual'; then - inputslot_val=2 - elif echo "$inputslot" | grep -qiE 'Multipurpose|ByPass'; then - inputslot_val=3 - elif echo "$inputslot" | grep -qiE 'Main|Upper|Top'; then - inputslot_val=4 - elif echo "$inputslot" | grep -qiE 'Alternat|Mid'; then - inputslot_val=5 - elif echo "$inputslot" | grep -qiE 'Large|Lower|Bottom'; then - inputslot_val=6 - fi -fi -echo "DEBUG: Value for MediaPosition: $inputslot_val" >&2 -if test -n "$inputslot_val"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dMediaPosition=$inputslot_val" -fi - -colormodel= -eval "$(printf "%s" "$5" | sed @SED_EXTENDED_REGEX_OPT@ 's/.*(^|[[:space:]])(pwg-raster-document-type|PwgRasterDocumentType|print-color-mode|PrintColorMode|color-space|ColorSpace|color-model|ColorModel)=([^[:space:]]+).*/colormodel="${colormodel:-\3}"/pi')" -if test -e "$PPD"; then - eval "$(sed @SED_EXTENDED_REGEX_OPT@ 's/^\*DefaultColorModel:[[:space:]]+([^[:space:]]+).*/colormodel="${colormodel:-\1}"/p' "$PPD")" -fi -echo "DEBUG: ColorModel: $colormodel" >&2 -if echo "$colormodel" | grep -qiE 'gray|black|device1|mono'; then - device=pxlmono -fi -colormodel_val= -if test -n "$colormodel" && test -e "$PPD"; then - eval "$(sed @SED_EXTENDED_REGEX_OPT@ 's|^\*ColorModel[[:space:]]+'"$colormodel"'/[^:]+:[[:space:]]+"[[:space:]]*<[[:space:]]*<[[:space:]]*/BitsPerPixel[[:space:]]*([0-9]*)[[:space:]]*>[[:space:]]*>[[:space:]]*setpagedevice[[:space:]]*".*|colormodel_val="\1"|p' "$PPD")" -fi -echo "DEBUG: Value for BitsPerPixel: $colormodel_val" >&2 -if test -n "$colormodel_val"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dBitsPerPixel=$colormodel_val" -fi - -duplex= -tumble= -eval "$(printf "%s" "$5" | sed @SED_EXTENDED_REGEX_OPT@ 's/.*(^|[[:space:]])(Duplex|sides)=([^[:space:]]+).*/duplex="${duplex:-\3}"/pi')" -eval "$(printf "%s" "$5" | sed @SED_EXTENDED_REGEX_OPT@ 's/.*(^|[[:space:]])(Tumble)=([^[:space:]]+).*/tumble="${tumble:-\3}"/pi')" -if test -e "$PPD"; then - eval "$(sed @SED_EXTENDED_REGEX_OPT@ 's/^\*DefaultDuplex:[[:space:]]+([^[:space:]]+).*/duplex="${duplex:-\1}"/p' "$PPD")" -fi -echo "DEBUG: Duplex: $duplex" >&2 -echo "DEBUG: Tumble: $tumble" >&2 -duplex_val= -tumble_val= -if test -n "$duplex" && test -e "$PPD"; then - eval "$(sed @SED_EXTENDED_REGEX_OPT@ 's|^\*Duplex[[:space:]]+'"$duplex"'/[^:]+:[[:space:]]+"[[:space:]]*<[[:space:]]*<[[:space:]]*/Duplex[[:space:]]*([^[:space:]]*)[[:space:]]*(/Tumble[[:space:]]*([^[:space:]]*)[[:space:]]*)?>[[:space:]]*>[[:space:]]*setpagedevice[[:space:]]*".*|duplex_val="\1"; tumble_val="\3"|p' "$PPD")" -else - if echo "$duplex" | grep -qiE 'None|Off|False|No|One'; then - duplex_val=false - elif echo "$duplex" | grep -qiE 'Duplex|On|True|Yes|Two'; then - duplex_val=true - if echo "$duplex" | grep -qiE 'DuplexTumble|short'; then - tumble_val=true - elif echo "$duplex" | grep -qiE 'DuplexNoTumble|long'; then - tumble_val=false - elif echo "$tumble" | grep -qiE 'On|True|Yes'; then - tumble_val=true - elif echo "$tumble" | grep -qiE 'Off|False|No'; then - tumble_val=false - fi - fi -fi -echo "DEBUG: Value for Duplex: $duplex_val; Value for Tumble: $tumble_val" >&2 -if test -n "$duplex_val"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dDuplex=$duplex_val" -fi -if test -n "$tumble_val"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dTumble=$tumble_val" -fi - - -echo "DEBUG: PPD options: $ppd_opts" >&2 -echo "DEBUG: PostScript code from options: $ps_code" >&2 - -# Options we use with Ghostscript... -gsopts="-dQUIET -dPARANOIDSAFER -dNOPAUSE -dBATCH -dNOINTERPOLATE" -gsopts="$gsopts -sDEVICE=$device -sstdout=%stderr" - -# See if we have a filename on the command-line... -if [ -n "$6" ]; then - exec <"$6" -fi - -# We read the data into a temporary file as Ghostscript needs this to be -# able to also work with PDF input -tempfiles= -trap 'rm -f $tempfiles' 0 1 2 13 15 - -ifile=$(mktemp -t gstopxl.XXXXXX) -tempfiles="$tempfiles $ifile" - -cat >"$ifile" - -echo INFO: Starting GPL Ghostscript `@CUPS_GHOSTSCRIPT@ --version`... 1>&2 -echo DEBUG: Running @CUPS_GHOSTSCRIPT@ $gsopts $ppd_opts -sOUTPUTFILE="%stdout" -c "$ps_code" -f "$ifile" 1>&2 - -# Now run Ghostscript... -@CUPS_GHOSTSCRIPT@ $gsopts $ppd_opts -sOUTPUTFILE="%stdout" -c "$ps_code" -f "$ifile" - -# -# diff -Nru cups-filters-1.9.0/filter/gstoraster.c cups-filters-1.10.0/filter/gstoraster.c --- cups-filters-1.9.0/filter/gstoraster.c 2016-05-13 01:42:40.000000000 +0000 +++ cups-filters-1.10.0/filter/gstoraster.c 2016-06-28 21:48:11.000000000 +0000 @@ -63,6 +63,12 @@ GS_DOC_TYPE_UNKNOWN } GsDocType; +typedef enum { + OUTPUT_FORMAT_RASTER, + OUTPUT_FORMAT_PDF, + OUTPUT_FORMAT_PXL +} OutFormatType; + #ifdef CUPS_RASTER_SYNCv1 typedef cups_page_header2_t gs_page_header; #else @@ -133,48 +139,57 @@ } static void -add_pdf_header_options(gs_page_header *h, cups_array_t *gs_args) +add_pdf_header_options(gs_page_header *h, cups_array_t *gs_args, + OutFormatType outformat, int pxlcolor) { int i; char tmpstr[1024]; /* Simple boolean, enumerated choice, numerical, and string parameters */ - if (h->MediaClass[0] |= '\0') { - snprintf(tmpstr, sizeof(tmpstr), "-sMediaClass=%s", h->MediaClass); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->MediaColor[0] |= '\0') { - snprintf(tmpstr, sizeof(tmpstr), "-sMediaColor=%s", h->MediaColor); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->MediaType[0] |= '\0') { - snprintf(tmpstr, sizeof(tmpstr), "-sMediaType=%s", h->MediaType); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->OutputType[0] |= '\0') { - snprintf(tmpstr, sizeof(tmpstr), "-sOutputType=%s", h->OutputType); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->AdvanceDistance) { - snprintf(tmpstr, sizeof(tmpstr), "-dAdvanceDistance=%d", - (unsigned)(h->AdvanceDistance)); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->AdvanceMedia) { - snprintf(tmpstr, sizeof(tmpstr), "-dAdvanceMedia=%d", - (unsigned)(h->AdvanceMedia)); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->Collate) { - cupsArrayAdd(gs_args, strdup("-dCollate")); - } - if (h->CutMedia) { - snprintf(tmpstr, sizeof(tmpstr), "-dCutMedia=%d", - (unsigned)(h->CutMedia)); - cupsArrayAdd(gs_args, strdup(tmpstr)); + if (outformat == OUTPUT_FORMAT_RASTER) { + if (h->MediaClass[0] |= '\0') { + snprintf(tmpstr, sizeof(tmpstr), "-sMediaClass=%s", h->MediaClass); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->MediaColor[0] |= '\0') { + snprintf(tmpstr, sizeof(tmpstr), "-sMediaColor=%s", h->MediaColor); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->MediaType[0] |= '\0') { + snprintf(tmpstr, sizeof(tmpstr), "-sMediaType=%s", h->MediaType); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->OutputType[0] |= '\0') { + snprintf(tmpstr, sizeof(tmpstr), "-sOutputType=%s", h->OutputType); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->AdvanceDistance) { + snprintf(tmpstr, sizeof(tmpstr), "-dAdvanceDistance=%d", + (unsigned)(h->AdvanceDistance)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->AdvanceMedia) { + snprintf(tmpstr, sizeof(tmpstr), "-dAdvanceMedia=%d", + (unsigned)(h->AdvanceMedia)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->Collate) { + cupsArrayAdd(gs_args, strdup("-dCollate")); + } + if (h->CutMedia) { + snprintf(tmpstr, sizeof(tmpstr), "-dCutMedia=%d", + (unsigned)(h->CutMedia)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } } - if (h->Duplex) { - cupsArrayAdd(gs_args, strdup("-dDuplex")); + if (outformat == OUTPUT_FORMAT_RASTER || + outformat == OUTPUT_FORMAT_PXL) { + /* PDF output is only for turning PostScript input data into PDF + not for sending PDF to a PDF printer (this is done by pdftopdf) + therefore we do not apply duplex/tumble here. */ + if (h->Duplex) { + cupsArrayAdd(gs_args, strdup("-dDuplex")); + } } if ((h->HWResolution[0] != 100) || (h->HWResolution[1] != 100)) snprintf(tmpstr, sizeof(tmpstr), "-r%dx%d", @@ -182,50 +197,90 @@ else snprintf(tmpstr, sizeof(tmpstr), "-r100x100"); cupsArrayAdd(gs_args, strdup(tmpstr)); - if (h->InsertSheet) { - cupsArrayAdd(gs_args, strdup("-dInsertSheet")); - } - if (h->Jog) { - snprintf(tmpstr, sizeof(tmpstr), "-dJog=%d", - (unsigned)(h->Jog)); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->LeadingEdge) { - snprintf(tmpstr, sizeof(tmpstr), "-dLeadingEdge=%d", - (unsigned)(h->LeadingEdge)); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->ManualFeed) { - cupsArrayAdd(gs_args, strdup("-dManualFeed")); - } - if (h->MediaPosition) { - snprintf(tmpstr, sizeof(tmpstr), "-dMediaPosition=%d", - (unsigned)(h->MediaPosition)); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->MediaWeight) { - snprintf(tmpstr, sizeof(tmpstr), "-dMediaWeight=%d", - (unsigned)(h->MediaWeight)); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->MirrorPrint) { - cupsArrayAdd(gs_args, strdup("-dMirrorPrint")); - } - if (h->NegativePrint) { - cupsArrayAdd(gs_args, strdup("-dNegativePrint")); - } - if (h->NumCopies != 1) { - snprintf(tmpstr, sizeof(tmpstr), "-dNumCopies=%d", - (unsigned)(h->NumCopies)); - cupsArrayAdd(gs_args, strdup(tmpstr)); + if (outformat == OUTPUT_FORMAT_RASTER) { + if (h->InsertSheet) { + cupsArrayAdd(gs_args, strdup("-dInsertSheet")); + } + if (h->Jog) { + snprintf(tmpstr, sizeof(tmpstr), "-dJog=%d", + (unsigned)(h->Jog)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->LeadingEdge) { + snprintf(tmpstr, sizeof(tmpstr), "-dLeadingEdge=%d", + (unsigned)(h->LeadingEdge)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->ManualFeed) { + cupsArrayAdd(gs_args, strdup("-dManualFeed")); + } } - if (h->Orientation) { - snprintf(tmpstr, sizeof(tmpstr), "-dOrientation=%d", - (unsigned)(h->Orientation)); - cupsArrayAdd(gs_args, strdup(tmpstr)); + if (outformat == OUTPUT_FORMAT_RASTER || + outformat == OUTPUT_FORMAT_PXL) { + if (h->MediaPosition) { + int mediapos; + if (outformat == OUTPUT_FORMAT_PXL) { + /* Convert PWG MediaPosition values to PXL-ones */ + if (h->MediaPosition == 1) /* Main */ + mediapos = 4; + else if (h->MediaPosition == 2) /* Alternate */ + mediapos = 5; + else if (h->MediaPosition == 3) /* Large Capacity */ + mediapos = 7; + else if (h->MediaPosition == 4) /* Manual */ + mediapos = 2; + else if (h->MediaPosition == 5) /* Envelope */ + mediapos = 6; + else if (h->MediaPosition == 11) /* Top */ + mediapos = 4; + else if (h->MediaPosition == 12) /* Middle */ + mediapos = 5; + else if (h->MediaPosition == 13) /* Bottom */ + mediapos = 7; + else if (h->MediaPosition == 19) /* Bypass */ + mediapos = 3; + else if (h->MediaPosition == 20) /* Tray 1 */ + mediapos = 3; + else if (h->MediaPosition == 21) /* Tray 2 */ + mediapos = 4; + else if (h->MediaPosition == 22) /* Tray 3 */ + mediapos = 5; + else if (h->MediaPosition == 23) /* Tray 4 */ + mediapos = 7; + else + mediapos = 0; + } else + mediapos = h->MediaPosition; + snprintf(tmpstr, sizeof(tmpstr), "-dMediaPosition=%d", + (unsigned)(mediapos)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } } - if (h->OutputFaceUp) { - cupsArrayAdd(gs_args, strdup("-dOutputFaceUp")); + if (outformat == OUTPUT_FORMAT_RASTER) { + if (h->MediaWeight) { + snprintf(tmpstr, sizeof(tmpstr), "-dMediaWeight=%d", + (unsigned)(h->MediaWeight)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->MirrorPrint) { + cupsArrayAdd(gs_args, strdup("-dMirrorPrint")); + } + if (h->NegativePrint) { + cupsArrayAdd(gs_args, strdup("-dNegativePrint")); + } + if (h->NumCopies != 1) { + snprintf(tmpstr, sizeof(tmpstr), "-dNumCopies=%d", + (unsigned)(h->NumCopies)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->Orientation) { + snprintf(tmpstr, sizeof(tmpstr), "-dOrientation=%d", + (unsigned)(h->Orientation)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->OutputFaceUp) { + cupsArrayAdd(gs_args, strdup("-dOutputFaceUp")); + } } if (h->PageSize[0] != 612) snprintf(tmpstr, sizeof(tmpstr), "-dDEVICEWIDTHPOINTS=%d", @@ -239,98 +294,131 @@ else snprintf(tmpstr, sizeof(tmpstr), "-dDEVICEHEIGHTPOINTS=792"); cupsArrayAdd(gs_args, strdup(tmpstr)); - if (h->Separations) { - cupsArrayAdd(gs_args, strdup("-dSeparations")); - } - if (h->TraySwitch) { - cupsArrayAdd(gs_args, strdup("-dTraySwitch")); - } - if (h->Tumble) { - cupsArrayAdd(gs_args, strdup("-dTumble")); - } - if (h->cupsMediaType) { - snprintf(tmpstr, sizeof(tmpstr), "-dcupsMediaType=%d", - (unsigned)(h->cupsMediaType)); + if (outformat == OUTPUT_FORMAT_RASTER) { + if (h->Separations) { + cupsArrayAdd(gs_args, strdup("-dSeparations")); + } + if (h->TraySwitch) { + cupsArrayAdd(gs_args, strdup("-dTraySwitch")); + } + } + if (outformat == OUTPUT_FORMAT_RASTER || + outformat == OUTPUT_FORMAT_PXL) { + /* PDF output is only for turning PostScript input data into PDF + not for sending PDF to a PDF printer (this is done by pdftopdf) + therefore we do not apply duplex/tumble here. */ + if (h->Tumble) { + cupsArrayAdd(gs_args, strdup("-dTumble")); + } + } + if (outformat == OUTPUT_FORMAT_RASTER) { + if (h->cupsMediaType) { + snprintf(tmpstr, sizeof(tmpstr), "-dcupsMediaType=%d", + (unsigned)(h->cupsMediaType)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->cupsBitsPerColor != 1) + snprintf(tmpstr, sizeof(tmpstr), "-dcupsBitsPerColor=%d", + (unsigned)(h->cupsBitsPerColor)); + else + snprintf(tmpstr, sizeof(tmpstr), "-dcupsBitsPerColor=1"); cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->cupsBitsPerColor != 1) - snprintf(tmpstr, sizeof(tmpstr), "-dcupsBitsPerColor=%d", - (unsigned)(h->cupsBitsPerColor)); - else - snprintf(tmpstr, sizeof(tmpstr), "-dcupsBitsPerColor=1"); - cupsArrayAdd(gs_args, strdup(tmpstr)); - if (h->cupsColorOrder != CUPS_ORDER_CHUNKED) - snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorOrder=%d", - (unsigned)(h->cupsColorOrder)); - else - snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorOrder=%d", - CUPS_ORDER_CHUNKED); - cupsArrayAdd(gs_args, strdup(tmpstr)); - if (h->cupsColorSpace != CUPS_CSPACE_K) - snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorSpace=%d", - (unsigned)(h->cupsColorSpace)); - else - snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorSpace=%d", - CUPS_CSPACE_K); - cupsArrayAdd(gs_args, strdup(tmpstr)); - if (h->cupsCompression) { - snprintf(tmpstr, sizeof(tmpstr), "-dcupsCompression=%d", - (unsigned)(h->cupsCompression)); + if (h->cupsColorOrder != CUPS_ORDER_CHUNKED) + snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorOrder=%d", + (unsigned)(h->cupsColorOrder)); + else + snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorOrder=%d", + CUPS_ORDER_CHUNKED); cupsArrayAdd(gs_args, strdup(tmpstr)); } - if (h->cupsRowCount) { - snprintf(tmpstr, sizeof(tmpstr), "-dcupsRowCount=%d", - (unsigned)(h->cupsRowCount)); + if (outformat == OUTPUT_FORMAT_RASTER) { + if (h->cupsColorSpace != CUPS_CSPACE_K) + snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorSpace=%d", + (unsigned)(h->cupsColorSpace)); + else + snprintf(tmpstr, sizeof(tmpstr), "-dcupsColorSpace=%d", + CUPS_CSPACE_K); cupsArrayAdd(gs_args, strdup(tmpstr)); } - if (h->cupsRowFeed) { - snprintf(tmpstr, sizeof(tmpstr), "-dcupsRowFeed=%d", - (unsigned)(h->cupsRowFeed)); - cupsArrayAdd(gs_args, strdup(tmpstr)); + + if (outformat == OUTPUT_FORMAT_PXL) { + if (h->cupsColorSpace == CUPS_CSPACE_W || + h->cupsColorSpace == CUPS_CSPACE_K || + h->cupsColorSpace == CUPS_CSPACE_WHITE || + h->cupsColorSpace == CUPS_CSPACE_GOLD || + h->cupsColorSpace == CUPS_CSPACE_SILVER || + h->cupsColorSpace == CUPS_CSPACE_SW || + h->cupsColorSpace == CUPS_CSPACE_ICC1 || + h->cupsColorSpace == CUPS_CSPACE_DEVICE1) + /* Monochrome color spaces -> use "pxlmono" device */ + pxlcolor = 0; + if (pxlcolor == 1) + cupsArrayAdd(gs_args, strdup("-sDEVICE=pxlcolor")); + else + cupsArrayAdd(gs_args, strdup("-sDEVICE=pxlmono")); } - if (h->cupsRowStep) { - snprintf(tmpstr, sizeof(tmpstr), "-dcupsRowStep=%d", - (unsigned)(h->cupsRowStep)); - cupsArrayAdd(gs_args, strdup(tmpstr)); + if (outformat == OUTPUT_FORMAT_RASTER) { + if (h->cupsCompression) { + snprintf(tmpstr, sizeof(tmpstr), "-dcupsCompression=%d", + (unsigned)(h->cupsCompression)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->cupsRowCount) { + snprintf(tmpstr, sizeof(tmpstr), "-dcupsRowCount=%d", + (unsigned)(h->cupsRowCount)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->cupsRowFeed) { + snprintf(tmpstr, sizeof(tmpstr), "-dcupsRowFeed=%d", + (unsigned)(h->cupsRowFeed)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->cupsRowStep) { + snprintf(tmpstr, sizeof(tmpstr), "-dcupsRowStep=%d", + (unsigned)(h->cupsRowStep)); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } } #ifdef CUPS_RASTER_SYNCv1 - if (h->cupsBorderlessScalingFactor != 1.0f) { - snprintf(tmpstr, sizeof(tmpstr), "-dcupsBorderlessScalingFactor=%.4f", - h->cupsBorderlessScalingFactor); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - for (i=0; i <= 15; i ++) - if (h->cupsInteger[i]) { - snprintf(tmpstr, sizeof(tmpstr), "-dcupsInteger%d=%d", - i, (unsigned)(h->cupsInteger[i])); + if (outformat == OUTPUT_FORMAT_RASTER) { + if (h->cupsBorderlessScalingFactor != 1.0f) { + snprintf(tmpstr, sizeof(tmpstr), "-dcupsBorderlessScalingFactor=%.4f", + h->cupsBorderlessScalingFactor); cupsArrayAdd(gs_args, strdup(tmpstr)); } - for (i=0; i <= 15; i ++) - if (h->cupsReal[i]) { - snprintf(tmpstr, sizeof(tmpstr), "-dcupsReal%d=%.4f", - i, h->cupsReal[i]); + for (i=0; i <= 15; i ++) + if (h->cupsInteger[i]) { + snprintf(tmpstr, sizeof(tmpstr), "-dcupsInteger%d=%d", + i, (unsigned)(h->cupsInteger[i])); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + for (i=0; i <= 15; i ++) + if (h->cupsReal[i]) { + snprintf(tmpstr, sizeof(tmpstr), "-dcupsReal%d=%.4f", + i, h->cupsReal[i]); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + for (i=0; i <= 15; i ++) + if (h->cupsString[i][0] != '\0') { + snprintf(tmpstr, sizeof(tmpstr), "-scupsString%d=%s", + i, h->cupsString[i]); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->cupsMarkerType[0] != '\0') { + snprintf(tmpstr, sizeof(tmpstr), "-scupsMarkerType=%s", + h->cupsMarkerType); cupsArrayAdd(gs_args, strdup(tmpstr)); } - for (i=0; i <= 15; i ++) - if (h->cupsString[i][0] != '\0') { - snprintf(tmpstr, sizeof(tmpstr), "-scupsString%d=%s", - i, h->cupsString[i]); + if (h->cupsRenderingIntent[0] != '\0') { + snprintf(tmpstr, sizeof(tmpstr), "-scupsRenderingIntent=%s", + h->cupsRenderingIntent); + cupsArrayAdd(gs_args, strdup(tmpstr)); + } + if (h->cupsPageSizeName[0] != '\0') { + snprintf(tmpstr, sizeof(tmpstr), "-scupsPageSizeName=%s", + h->cupsPageSizeName); cupsArrayAdd(gs_args, strdup(tmpstr)); } - if (h->cupsMarkerType[0] != '\0') { - snprintf(tmpstr, sizeof(tmpstr), "-scupsMarkerType=%s", - h->cupsMarkerType); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->cupsRenderingIntent[0] != '\0') { - snprintf(tmpstr, sizeof(tmpstr), "-scupsRenderingIntent=%s", - h->cupsRenderingIntent); - cupsArrayAdd(gs_args, strdup(tmpstr)); - } - if (h->cupsPageSizeName[0] != '\0') { - snprintf(tmpstr, sizeof(tmpstr), "-scupsPageSizeName=%s", - h->cupsPageSizeName); - cupsArrayAdd(gs_args, strdup(tmpstr)); } #endif /* CUPS_RASTER_SYNCv1 */ } @@ -540,6 +628,8 @@ int main (int argc, char **argv, char *envp[]) { + char *outformat_env = NULL; + OutFormatType outformat; char buf[BUFSIZ]; char *icc_profile = NULL; /*char **qualifier = NULL;*/ @@ -559,8 +649,9 @@ ppd_file_t *ppd = NULL; struct sigaction sa; cm_calibration_t cm_calibrate; + int pxlcolor = 1; #ifdef HAVE_CUPS_1_7 - int pwgraster; + int pwgraster = 0; ppd_attr_t *attr; #endif /* HAVE_CUPS_1_7 */ @@ -575,6 +666,26 @@ sa.sa_handler = SIG_IGN; sigaction(SIGPIPE, &sa, NULL); + /* Determine the output format via an environment variable set by a wrapper + script */ + outformat_env = getenv("OUTFORMAT"); + if (outformat_env == NULL || strcasestr(outformat_env, "raster")) + outformat = OUTPUT_FORMAT_RASTER; + else if (strcasestr(outformat_env, "pdf")) + outformat = OUTPUT_FORMAT_PDF; + else if (strcasestr(outformat_env, "xl")) + outformat = OUTPUT_FORMAT_PXL; + else { + fprintf(stderr, "ERROR: OUTFORMAT=\"%s\", cannot determine output format\n", + outformat_env); + goto out; + } + fprintf(stderr, "DEBUG: OUTFORMAT=\"%s\", so output format will be %s\n", + outformat_env, + (outformat == OUTPUT_FORMAT_RASTER ? "CUPS/PWG Raster" : + (outformat == OUTPUT_FORMAT_PDF ? "PDF" : + "PCL XL"))); + num_options = cupsParseOptions(argv[5], 0, &options); t = getenv("PPD"); @@ -649,7 +760,7 @@ gs_args = cupsArrayNew(NULL, NULL); if (!gs_args) { fprintf(stderr, "ERROR: Unable to allocate memory for Ghostscript arguments array\n"); - exit(1); + goto out; } /* Part of Ghostscript command line which is not dependent on the job and/or @@ -666,46 +777,99 @@ cupsArrayAdd(gs_args, strdup("-dNOMEDIAATTRS")); if (cm_disabled) cupsArrayAdd(gs_args, strdup("-dUseFastColor")); - cupsArrayAdd(gs_args, strdup("-sDEVICE=cups")); cupsArrayAdd(gs_args, strdup("-sstdout=%stderr")); cupsArrayAdd(gs_args, strdup("-sOutputFile=%stdout")); + /* Ghostscript output device */ + if (outformat == OUTPUT_FORMAT_RASTER) + cupsArrayAdd(gs_args, strdup("-sDEVICE=cups")); + else if (outformat == OUTPUT_FORMAT_PDF) + cupsArrayAdd(gs_args, strdup("-sDEVICE=pdfwrite")); + /* In case of PCL XL output we determine later whether we will have + to use the "pxlmono" or "pxlcolor" output device */ + + /* Special Ghostscript options for PDF output */ + if (outformat == OUTPUT_FORMAT_PDF) { + cupsArrayAdd(gs_args, strdup("-dCompatibilityLevel=1.3")); + cupsArrayAdd(gs_args, strdup("-dAutoRotatePages=/None")); + cupsArrayAdd(gs_args, strdup("-dAutoFilterColorImages=false")); + cupsArrayAdd(gs_args, strdup("-dNOPLATFONTS")); + cupsArrayAdd(gs_args, strdup("-dColorImageFilter=/FlateEncode")); + cupsArrayAdd(gs_args, strdup("-dPDFSETTINGS=/printer")); + cupsArrayAdd(gs_args, strdup("-dColorConversionStrategy=/LeaveColorUnchanged")); + } + if (ppd) { cupsRasterInterpretPPD(&h,ppd,num_options,options,0); #ifdef HAVE_CUPS_1_7 - if ((attr = ppdFindAttr(ppd,"PWGRaster",0)) != 0 && - (!strcasecmp(attr->value, "true") - || !strcasecmp(attr->value, "on") || - !strcasecmp(attr->value, "yes"))) + if (outformat == OUTPUT_FORMAT_RASTER) { - pwgraster = 1; - cupsRasterParseIPPOptions(&h, num_options, options, pwgraster, 0); + if ((attr = ppdFindAttr(ppd,"PWGRaster",0)) != 0 && + (!strcasecmp(attr->value, "true") || + !strcasecmp(attr->value, "on") || + !strcasecmp(attr->value, "yes"))) + { + pwgraster = 1; + cupsRasterParseIPPOptions(&h, num_options, options, pwgraster, 0); + } } #endif /* HAVE_CUPS_1_7 */ + if (outformat == OUTPUT_FORMAT_PXL) + { + if ((attr = ppdFindAttr(ppd,"ColorDevice",0)) != 0 && + (!strcasecmp(attr->value, "false") || + !strcasecmp(attr->value, "off") || + !strcasecmp(attr->value, "no"))) + /* Monochrome PCL XL printer, according to PPD */ + pxlcolor = 0; + } } else { #ifdef HAVE_CUPS_1_7 - pwgraster = 1; - t = cupsGetOption("media-class", num_options, options); - if (t == NULL) - t = cupsGetOption("MediaClass", num_options, options); - if (t != NULL) + if (outformat == OUTPUT_FORMAT_RASTER) { - if (strcasestr(t, "pwg")) - pwgraster = 1; - else - pwgraster = 0; + pwgraster = 1; + t = cupsGetOption("media-class", num_options, options); + if (t == NULL) + t = cupsGetOption("MediaClass", num_options, options); + if (t != NULL) + { + if (strcasestr(t, "pwg")) + pwgraster = 1; + else + pwgraster = 0; + } } cupsRasterParseIPPOptions(&h, num_options, options, pwgraster, 1); #else fprintf(stderr, "ERROR: No PPD file specified.\n"); - exit(1); + goto out; #endif /* HAVE_CUPS_1_7 */ } - /* setPDF specific options */ + if ((h.HWResolution[0] == 100) && (h.HWResolution[1] == 100)) { + /* No "Resolution" option */ + if (ppd && (attr = ppdFindAttr(ppd, "DefaultResolution", 0)) != NULL) { + /* "*DefaultResolution" keyword in the PPD */ + const char *p = attr->value; + h.HWResolution[0] = atoi(p); + if ((p = strchr(p, 'x')) != NULL) + h.HWResolution[1] = atoi(p); + else + h.HWResolution[1] = h.HWResolution[0]; + if (h.HWResolution[0] <= 0) + h.HWResolution[0] = 300; + if (h.HWResolution[1] <= 0) + h.HWResolution[1] = h.HWResolution[0]; + } else { + h.HWResolution[0] = 300; + h.HWResolution[1] = 300; + } + } + + /* set PDF-specific options */ if (doc_type == GS_DOC_TYPE_PDF) { parse_pdf_header_options(fp, &h); } @@ -715,7 +879,7 @@ h.Orientation = CUPS_ORIENT_0; /* get all the data from the header and pass it to ghostscript */ - add_pdf_header_options (&h, gs_args); + add_pdf_header_options (&h, gs_args, outformat, pxlcolor); /* CUPS font path */ if ((t = getenv("CUPS_FONTPATH")) == NULL) diff -Nru cups-filters-1.9.0/filter/imagetops cups-filters-1.10.0/filter/imagetops --- cups-filters-1.9.0/filter/imagetops 2016-01-19 22:12:43.000000000 +0000 +++ cups-filters-1.10.0/filter/imagetops 2016-06-28 20:52:14.000000000 +0000 @@ -32,4 +32,4 @@ exec <"$6" fi -`dirname $0`/imagetopdf "$1" "$2" "$3" "$4" "$5" | $PDF2PS - - +$CUPS_SERVERBIN/filter/imagetopdf "$1" "$2" "$3" "$4" "$5" | $PDF2PS - - diff -Nru cups-filters-1.9.0/filter/pdftops.c cups-filters-1.10.0/filter/pdftops.c --- cups-filters-1.9.0/filter/pdftops.c 2016-02-29 15:24:10.000000000 +0000 +++ cups-filters-1.10.0/filter/pdftops.c 2016-06-13 17:41:02.000000000 +0000 @@ -419,7 +419,7 @@ /* * Select the PDF renderer: Ghostscript (gs), Poppler (pdftops), * Adobe Reader (arcoread), Poppler with Cairo (pdftocairo), or - * Hybrid (hybrid, Poppler for Brother, Minolta, Konica Minolta, and + * Hybrid (hybrid, Poppler for Brother, Minolta, Konica Minolta, Dell, and * old HP LaserJets and Ghostscript otherwise) */ @@ -444,13 +444,14 @@ { if (make_model[0] && (!strncasecmp(make_model, "Brother", 7) || + !strncasecmp(make_model, "Dell", 4) || strcasestr(make_model, "Minolta") || (!strncasecmp(make_model, "Apple", 5) && (ptr = strcasestr(make_model, "LaserWriter")) && (ptr = strcasestr(ptr + 11, "12")) && (ptr = strcasestr(ptr + 2, "640"))))) { - fprintf(stderr, "DEBUG: Switching to Poppler's pdftops instead of Ghostscript for Brother, Minolta, Konica Minolta, and Apple LaserWriter 12/640 to work around bugs in the printer's PS interpreters\n"); + fprintf(stderr, "DEBUG: Switching to Poppler's pdftops instead of Ghostscript for Brother, Minolta, Konica Minolta, Dell, and Apple LaserWriter 12/640 to work around bugs in the printer's PS interpreters\n"); renderer = PDFTOPS; } else diff -Nru cups-filters-1.9.0/filter/pstopdf cups-filters-1.10.0/filter/pstopdf --- cups-filters-1.9.0/filter/pstopdf 2016-01-19 22:12:43.000000000 +0000 +++ cups-filters-1.10.0/filter/pstopdf 1970-01-01 00:00:00.000000000 +0000 @@ -1,232 +0,0 @@ -#!/bin/sh - -# This is a Postscript to PDF filter for CUPS -# -# (C) 2003 Robert Sander -# (C) 2008-2012 Till Kamppeter -# -# Released under GPL -# -# NO WARRANTY AT ALL -# - -set -e - -PS2PS=`which ps2ps` -GS=`which gs` - -PS2PS_OPTIONS="-dAutoRotatePages=/None -dAutoFilterColorImages=false \ - -dNOPLATFONTS -dPARANOIDSAFER -dNOINTERPOLATE -sstdout=%stderr" -PS2PDF_OPTIONS="-q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.3" -PS2PDF_OPTIONS="$PS2PDF_OPTIONS $PS2PS_OPTIONS" -PS2PDF_OPTIONS="$PS2PDF_OPTIONS -dColorImageFilter=/FlateEncode \ - -dPDFSETTINGS=/printer \ - -dColorConversionStrategy=/LeaveColorUnchanged" - -echo "DEBUG: pstopdf $# args: $@" >&2 -echo "DEBUG: PPD: $PPD" >&2 - -if [ $# -lt 5 -o $# -gt 6 ]; then - - echo "ERROR: $0 job-id user title copies options [file]" >&2 - exit 1 - -fi - -# Read from given file. -if [ -n "$6" ]; then - exec <"$6" -fi - -tempfiles= -trap 'rm -f $tempfiles' 0 1 2 13 15 - -infile=$(mktemp -t pstopdf.XXXXXX) -tempfiles="$tempfiles $infile" - -cat >"$infile" - -# Did CUPS already take care of the number of copies? If not, we have to do it - -donumcopies= -numcopies="$4" -if test -z "$numcopies"; then - numcopies=1 -fi -if test "$numcopies" -le "1"; then - donumcopies="-dDoNumCopies" -fi - -# Apply PPD settings. - -resolution= -eval "$(printf "%s" "$5" | sed -nre 's/.*(^|\s)Resolution=([0-9.]+(x[0-9.]+)?).*/resolution="${resolution:-\2}"/p')" -if test -e "$PPD"; then - eval "$(sed -nre 's/^\*DefaultResolution:\s*([0-9.]+(x[0-9.]+)?).*/resolution="${resolution:-\1}"/p' "$PPD")" -fi -echo "DEBUG: Resolution: $resolution" >&2 - -if test -n "$resolution"; then - # If the resolution is not symmetric, use the lower of the two, - # Ghostscript developers recommend to use square resolutions for the - # pdfwrite and ps2write output devices. - # See http://bugs.ghostscript.com/show_bug.cgi?id=690504 - xres= - yres= - eval "$(printf "%s" "$resolution" | sed -nre 's/.*(^|\s)([0-9]+)x([0-9]+).*/xres="\2"; yres="\3"/p')" - if test -n "$xres" && test -n "$yres"; then - if [ "$xres" -lt "$yres" ]; then - resolution=$xres - else - resolution=$yres - fi - fi -fi - -orientation= -width= -height= -bl_x= -bl_y= -tr_x= -tr_y= -margin_l= -margin_b= -margin_r= -margin_t= -pagesize= -unit= -customw= -customh= - -eval "$(printf "%s" "$5" | sed -nre 's/.*(^|\s)orientation-requested=3.*/orientation="${orientation:-0}"/p')" -eval "$(printf "%s" "$5" | sed -nre 's/.*(^|\s)orientation-requested=4.*/orientation="${orientation:-90}"/p')" -eval "$(printf "%s" "$5" | sed -nre 's/.*(^|\s)orientation-requested=5.*/orientation="${orientation:-270}"/p')" -eval "$(printf "%s" "$5" | sed -nre 's/.*(^|\s)orientation-requested=6.*/orientation="${orientation:-180}"/p')" -if printf "%s" "$5" | grep -qiE '(\s|^)landscape(=(1|on|yes|true))?(\s|$)'; then - if test -e "$PPD"; then - eval "$(sed -nre 's/^\*LandscapeOrientation:\s*Plus90.*/orientation="${orientation:-90}"/p' "$PPD")" - eval "$(sed -nre 's/^\*LandscapeOrientation:\s*Minus90.*/orientation="${orientation:-270}"/p' "$PPD")" - else - orientation="${orientation:-270}" - fi -fi -orientation="${orientation:-0}" -echo "DEBUG: Orientation requested: $orientation" >&2 - -eval "$(printf "%s" "$5" | sed -nre 's/.*(^|\s)(PageSize|PageRegion)=(\S+).*/pagesize="${pagesize:-\3}"/p')" -if test -e "$PPD"; then - eval "$(sed -nre 's/^\*DefaultPageSize:\s*(\S+).*/pagesize="${pagesize:-\1}"/p' "$PPD")" -fi -echo "DEBUG: Page size: $pagesize" >&2 - -eval "$(printf "%s" "$pagesize" | sed -nre 's/^Custom\.([0-9\.]+)x([0-9\.]+)(\S*)$/customw="\1"; customh="\2"; unit="\3"/p')" - -if test -n "$customw" && test -n "$customh"; then - echo "DEBUG: Custom page size: $customw x $customh $unit" >&2 - - if test "$unit" = "in"; then - width="$(printf "scale=0; (%s)*(72.0)/(1.00)\n" "$customw" | bc)" - height="$(printf "scale=0; (%s)*(72.0)/(1.00)\n" "$customh" | bc)" - elif test "$unit" = "cm"; then - width="$(printf "scale=0; (%s)*(72.0)/(2.54)\n" "$customw" | bc)" - height="$(printf "scale=0; (%s)*(72.0)/(2.54)\n" "$customh" | bc)" - elif test "$unit" = "mm"; then - width="$(printf "scale=0; (%s)*(72.0)/(25.4)\n" "$customw" | bc)" - height="$(printf "scale=0; (%s)*(72.0)/(25.4)\n" "$customh" | bc)" - else - width="$(printf "scale=0; (%s)/(1.00)\n" "$customw" | bc)" - height="$(printf "scale=0; (%s)/(1.00)\n" "$customh" | bc)" - fi - - if test -e "$PPD"; then - eval "$(sed -nre 's|^\*HWMargins:\s*(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*|bl_x="\1"; bl_y="\2"; tr_x="\3"; tr_y="\4"|p' "$PPD")" - - if test -n "$tr_x"; then - tr_x="$(printf "scale=8; (%s)-(%s)\n" "$width" "$tr_x" | bc)" - fi - if test -n "$tr_y"; then - tr_y="$(printf "scale=8; (%s)-(%s)\n" "$height" "$tr_y" | bc)" - fi - fi -elif test -n "$pagesize" && test -e "$PPD"; then - eval "$(sed -nre 's|^\*PaperDimension\s+'"$pagesize"'(/[^:]+\|):\s*"(\S+)\s+(\S+)".*|width="\2"; height="\3"|p' "$PPD")" - - eval "$(sed -nre 's|^\*ImageableArea\s+'"$pagesize"'(/[^:]+\|):\s*"(\S+)\s+(\S+)\s+(\S+)\s+(\S+)".*|bl_x="\2"; bl_y="\3"; tr_x="\4"; tr_y="\5"|p' "$PPD")" -fi - -test -n "$bl_x" || bl_x=0 -test -n "$bl_y" || bl_y=0 -test -n "$tr_x" || tr_x=$width -test -n "$tr_y" || tr_y=$height - -echo "DEBUG: Width: $width, height: $height, absolute margins: $bl_x, $bl_y, $tr_x, $tr_y" >&2 - -if test -n "$width" && test -n "$height" && \ - test -n "$bl_x" && test -n "$bl_y" && \ - test -n "$tr_x" && test -n "$tr_y"; then - margin_l="$bl_x" - margin_b="$bl_y" - margin_r="$(printf "scale=8; (%s)-(%s)\n" "$width" "$tr_x" | bc)" - margin_t="$(printf "scale=8; (%s)-(%s)\n" "$height" "$tr_y" | bc)" -fi -echo "DEBUG: Relative margins: $margin_l, $margin_b, $margin_r, $margin_t" >&2 - -if test "$orientation" = "90" || test "$orientation" = "270"; then - swap="$width" - width="$height" - height="$swap" -fi -if test "$orientation" = "90"; then - swap="$margin_l" - margin_l="$margin_b" - margin_b="$margin_r" - margin_r="$margin_t" - margin_t="$swap" -elif test "$orientation" = "180"; then - swap="$margin_l" - margin_l="$margin_r" - margin_r="$swap" - swap="$margin_t" - margin_t="$margin_b" - margin_b="$swap" -elif test "$orientation" = "270"; then - swap="$margin_l" - margin_l="$margin_t" - margin_t="$margin_r" - margin_r="$margin_b" - margin_b="$swap" -fi - -if test -n "$margin_l" && test -n "$margin_b" && \ - test -n "$margin_r" && test -n "$margin_t"; then - inject_ps="<>setpagedevice" -fi - -ppd_opts= -if test -n "$resolution"; then - ppd_opts="${ppd_opts:+$ppd_opts }-r$resolution" -fi -if test -n "$width"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dDEVICEWIDTHPOINTS=$width" -fi -if test -n "$height"; then - ppd_opts="${ppd_opts:+$ppd_opts }-dDEVICEHEIGHTPOINTS=$height" -fi -echo "DEBUG: PPD options: $ppd_opts" >&2 -echo "DEBUG: PostScript to be injected: $inject_ps" >&2 - -# DRM - -DRM_MATCH='^%.*Removing the following.*lines is illegal.*Digital Copyright Act' -if egrep -q "$DRM_MATCH" "$infile"; then - # This PS is DRM-infested. Normalize it with ps2ps first. - echo "DEBUG: Normalizing Adobe Reader PostScript with ps2ps" >&2 - - DRMFILTER="$PS2PS $PS2PS_OPTIONS $ppd_opts - -" -else - DRMFILTER=cat -fi - -echo "DEBUG: Running $DRMFILTER | $GS $PS2PDF_OPTIONS $donumcopies $ppd_opts -sOutputFile=- $OPTIONS -c $inject_ps .setpdfwrite -f -" >&2 -cat "$infile" | $DRMFILTER | $GS $PS2PDF_OPTIONS $donumcopies $ppd_opts -sOutputFile=- $OPTIONS -c "$inject_ps" .setpdfwrite -f - diff -Nru cups-filters-1.9.0/filter/rastertops.c cups-filters-1.10.0/filter/rastertops.c --- cups-filters-1.9.0/filter/rastertops.c 1970-01-01 00:00:00.000000000 +0000 +++ cups-filters-1.10.0/filter/rastertops.c 2016-07-08 19:56:58.000000000 +0000 @@ -0,0 +1,489 @@ +/* + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * @brief Convert PWG Raster to a PostScript file + * @file rastertops.c + * @author Pranjal Bhor (C) 2016 + * @author Neil 'Superna' Armstrong (C) 2010 + * @author Tobias Hoffmann (c) 2012 + * @author Till Kamppeter (c) 2014 + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * 'write_prolog()' - Writing the PostScript prolog for the file + */ + +void +writeProlog(cups_cspace_t mode, /* I - Color mode (gray or color) */ + int width, /* I - width of the image in pixels */ + int height) /* I - height of the image in pixels */ +{ + /* Document header... */ + printf("%%!PS-Adobe-3.0\n"); + printf("%%%%BoundingBox: %d %d %d %d\n", 0, 0, width, height); + printf("%%Creator: Cups-Filters\n"); + printf("%%LanguageLevel: 2\n"); + printf("%%DocumentData: Clean7Bit\n"); + printf("%%EndComments\n"); + printf("%%BeginProlog\n"); + printf("%%EndProlog\n"); + printf("\n"); + printf("%%Pages: (atend)\n"); +} + +/* + * 'writeStartPage()' - Write the basic page setup + */ + +void +writeStartPage(int page, /* I - Page to write */ + int width, /* I - Page width in points */ + int length) /* I - Page length in points */ +{ + printf("%%%%Page: %d %d\n", page, page); + printf("%%%%BeginPageSetup\n"); + printf("<< /PageSize[%d %d] >> setpagedevice\n", width, length); + printf("%%%%EndPageSetup\n"); +} + +/* + * 'find_bits()' - Finding the number of bits per color + */ + +int /* O - Exit status */ +find_bits(cups_cspace_t mode, /* I - Color space of data */ + int bpc) /* I - Original bits per color of data */ +{ + if (bpc == 1 && + (mode == CUPS_CSPACE_RGB || + mode == CUPS_CSPACE_ADOBERGB || + mode == CUPS_CSPACE_SRGB || + mode == CUPS_CSPACE_CMY)) + return 8; + + if (bpc == 16) + return 8; + + return bpc; +} + +/* + * 'writeImage()' - Write the information regarding the image + */ + +void /* O - Exit status */ +writeImage(int bpc, /* I - bits per color */ + int width, /* I - width of image */ + int height, /* I - height of image */ + cups_cspace_t mode) /* I - color model of image */ +{ + printf("gsave\n"); + + switch (mode) + { + case CUPS_CSPACE_RGB: + case CUPS_CSPACE_CMY: + case CUPS_CSPACE_SRGB: + case CUPS_CSPACE_ADOBERGB: + printf("/DeviceRGB setcolorspace\n"); + break; + + case CUPS_CSPACE_CMYK: + printf("/DeviceCMYK setcolorspace\n"); + break; + + default: + case CUPS_CSPACE_K: + case CUPS_CSPACE_W: + case CUPS_CSPACE_SW: + printf("/DeviceGray setcolorspace\n"); + break; + } + + if (bpc == 16) + printf("/Input currentfile /FlateDecode filter def\n"); + printf("%d %d scale\n",width, height); + printf("<< \n" + "/ImageType 1\n" + "/Width %d\n" + "/Height %d\n" + "/BitsPerComponent %d\n", width, height, find_bits(mode, bpc)); + + switch (mode) + { + case CUPS_CSPACE_RGB: + case CUPS_CSPACE_CMY: + case CUPS_CSPACE_SRGB: + case CUPS_CSPACE_ADOBERGB: + printf("/Decode [0 1 0 1 0 1]\n"); + break; + + case CUPS_CSPACE_CMYK: + printf("/Decode [0 1 0 1 0 1 0 1]\n"); + break; + + case CUPS_CSPACE_SW: + printf("/Decode [0 1]\n"); + break; + + default: + case CUPS_CSPACE_K: + case CUPS_CSPACE_W: + printf("/Decode [1 0]\n"); + break; + } + + if(bpc==16) + printf("/DataSource {3 string 0 1 2 {1 index exch Input read {pop}" + "if Input read pop put } for} bind\n"); + else + printf("/DataSource currentfile /FlateDecode filter\n"); + + printf("/ImageMatrix [%d 0 0 %d 0 %d]\n", width, -1*height, height); + printf(">> image\n"); +} + +/* + * 'convert_pixels()'- Convert 1 bpc to 8 bpc + */ + +void +convert_pixels(unsigned char *pixdata, /* I - Original pixel data */ + unsigned char *convertedpix, /* I - Buffer for converted data */ + int width) /* I - Width of data */ +{ + int j, k = 0; /* Variables for iteration */ + unsigned int mask; /* Variable for per byte iteration */ + unsigned char temp; /* temporary character */ + + for(j = 0; j < width; ++j) + { + temp = *(pixdata + j); + for (mask = 0x80; mask != 0; mask >>= 1) + { + if (mask!=0x80 && mask != 0x08) + { + if (temp & mask) + convertedpix[k] = 0xFF; + else + convertedpix[k] = 0; + ++k; + } + } + } +} + +/* + * 'write_flate()' - Write the image data in flate encoded format + */ + +int /* O - Error value */ +write_flate(cups_raster_t *ras, /* I - Image data */ + cups_page_header2_t header) /* I - Bytes Per Line */ +{ + int ret, /* Return value of this + function */ + flush, /* Check the end of image + data */ + curr_line=1, /* Maitining the working + line of pixels */ + alloc, + flag = 0; + unsigned have; /* Bytes available in + output buffer */ + z_stream strm; /* Structure required + by deflate */ + unsigned char *pixdata, + *convertedpix; + unsigned char in[header.cupsBytesPerLine * 6], /* Input data buffer */ + out[header.cupsBytesPerLine * 6]; /* Output data buffer */ + + /* allocate deflate state */ + strm.zalloc = Z_NULL; + strm.zfree = Z_NULL; + strm.opaque = Z_NULL; + ret = deflateInit(&strm, -1); + if (ret != Z_OK) + return ret; + + if(header.cupsBitsPerColor == 1 && + (header.cupsColorSpace == CUPS_CSPACE_RGB || + header.cupsColorSpace == CUPS_CSPACE_ADOBERGB || + header.cupsColorSpace == CUPS_CSPACE_SRGB)) + flag = 1; + + /* compress until end of file */ + do { + pixdata = malloc(header.cupsBytesPerLine); + cupsRasterReadPixels(ras, pixdata, header.cupsBytesPerLine); + if (flag) + { + convertedpix = malloc(header.cupsBytesPerLine * 6); + convert_pixels(pixdata,convertedpix, header.cupsBytesPerLine); + alloc = header.cupsBytesPerLine * 6; + } + else + { + convertedpix = malloc(header.cupsBytesPerLine); + memcpy(convertedpix, pixdata, header.cupsBytesPerLine); + alloc = header.cupsBytesPerLine; + } + + if(curr_line == header.cupsHeight) + flush = Z_FINISH; + else + flush = Z_NO_FLUSH; + curr_line++; + memcpy(in, convertedpix, alloc); + strm.avail_in = alloc; + strm.next_in = in; + + /* run deflate() on input until output buffer not full, finish + * compression if all of source has been read in */ + do { + strm.avail_out = alloc; + strm.next_out = out; + + /* Run the deflate algorithm on the data */ + ret = deflate(&strm, flush); + + /* check whether state is not clobbered */ + assert(ret != Z_STREAM_ERROR); + have = alloc - strm.avail_out; + if (fwrite(out, 1, have, stdout) != have) + { + (void)deflateEnd(&strm); + return Z_ERRNO; + } + } while (strm.avail_out == 0); + + /* all input will be used */ + assert(strm.avail_in == 0); + + /* done when last data in file processed */ + free(pixdata); + free(convertedpix); + } while (flush != Z_FINISH); + + /* stream will be complete */ + assert(ret == Z_STREAM_END); + + /* clean up and return */ + (void)deflateEnd(&strm); + return Z_OK; +} + +/* + * Report a zlib or i/o error + */ + +void +zerr(int ret) /* I - Return status of deflate */ +{ + fputs("zpipe: ", stderr); + switch (ret) { + case Z_ERRNO: + fputs("error in source data or output file\n", stderr); + break; + case Z_STREAM_ERROR: + fputs("invalid compression level\n", stderr); + break; + case Z_DATA_ERROR: + fputs("invalid or incomplete deflate data\n", stderr); + break; + case Z_MEM_ERROR: + fputs("out of memory\n", stderr); + break; + case Z_VERSION_ERROR: + fputs("zlib version mismatch!\n", stderr); + } +} + +/* + * 'writeEndPage()' - Show the current page. + */ + +void +writeEndPage() +{ + printf("\ngrestore\n"); + printf("showpage\n"); + printf("%%PageTrailer\n"); +} + +/* + * 'writeTrailer()' - Write the PostScript trailer. + */ + +void +writeTrailer(int pages) /* I - Number of pages */ +{ + printf("%%Trailer\n"); + printf("%%%%Pages: %d\n", pages); + printf("%%EOF\n"); +} + +/* + * 'main()' - Main entry and processing of driver. + */ + +int /* O - Exit status */ +main(int argc, /* I - Number of command-line arguments */ + char *argv[]) /* I - Command-line arguments */ +{ + FILE *input = NULL; /* File pointer to raster document */ + int fd, /* File descriptor for raster document */ + num_options, /* Number of options */ + count, /* count for writing the postscript */ + Canceled = 0, /* variable for job cancellation */ + Page = 0, /* variable for counting the pages */ + ret; /* Return value of deflate compression */ + ppd_file_t *ppd; /* PPD file */ + cups_raster_t *ras; /* Raster stream for printing */ + cups_page_header2_t header; /* Page header from file */ + cups_option_t *options; /* Options */ + + /* + * Make sure status messages are not buffered... + */ + setbuf(stderr, NULL); + + /* + * Check command-line... + */ + if (argc < 6 || argc > 7) + { + fprintf(stderr, "Usage: %s job-id user title copies options [file]\n", + "rastertops"); + return (1); + } + + num_options = cupsParseOptions(argv[5], 0, &options); + + /* + * Open the PPD file... + */ + ppd = ppdOpenFile(getenv("PPD")); + + if (ppd) + { + ppdMarkDefaults(ppd); + cupsMarkOptions(ppd, num_options, options); + } + else + { + ppd_status_t status; /* PPD error */ + int linenum; /* Line number */ + + fprintf(stderr, "DEBUG: The PPD file could not be opened.\n"); + status = ppdLastError(&linenum); + fprintf(stderr, "DEBUG: %s on line %d.\n", ppdErrorString(status), linenum); + } + + /* + * Open the page stream... + */ + if (argc == 7) + { + input = fopen(argv[6], "rb"); + if (input == NULL) fprintf(stderr, "Unable to open PWG Raster file"); + } + else + input = stdin; + + /* + * Get fd from file + */ + fd = fileno(input); + + /* + * Transform + */ + ras = cupsRasterOpen(fd, CUPS_RASTER_READ); + + /* + * Register a signal handler to eject the current page if the + * job is cancelled. + */ + Canceled = 0; + + + /* + * Process pages as needed... + */ + Page = 0; + count = 0; + + while (cupsRasterReadHeader2(ras, &header)) + { + /* + * Write the prolog for PS only once + */ + if (!count) + { + count++; + writeProlog(header.cupsColorSpace, header.cupsWidth, header.cupsHeight); + } + + /* + * Write a status message with the page number and number of copies. + */ + if (Canceled) + break; + + Page ++; + + fprintf(stderr, "PAGE: %d %d\n", Page, header.NumCopies); + fprintf(stderr, "INFO: Starting page %d.\n", Page); + + /* + * Write the starting of the page + */ + writeStartPage(Page, header.cupsWidth, header.cupsHeight); + + /* + * write the information regarding the image + */ + writeImage(header.cupsBitsPerColor, header.cupsWidth, header.cupsHeight, + header.cupsColorSpace); + + /* Write the compressed image data*/ + ret = write_flate(ras, header); + if (ret != Z_OK) + zerr(ret); + writeEndPage(); + } + writeTrailer(Page); + + return 0; +} diff -Nru cups-filters-1.9.0/filter/textonly cups-filters-1.10.0/filter/textonly --- cups-filters-1.9.0/filter/textonly 2015-06-26 15:45:26.000000000 +0000 +++ cups-filters-1.10.0/filter/textonly 1970-01-01 00:00:00.000000000 +0000 @@ -1,124 +0,0 @@ -#!/bin/bash -## Copyright (C) 2003-2006 Red Hat, Inc. -## Copyright (C) 2003-2006 Tim Waugh -## Changed on 2007/05/17, Opher Shachar, LADPC Ltd. -## Added support for page-ranges option. -## Added page accounting. - -## This program is free software; you can redistribute it and/or -## modify it under the terms of the GNU General Public License -## as published by the Free Software Foundation; either version 2 -## of the License, or (at your option) any later version. - -## This program is distributed in the hope that it will be useful, -## but WITHOUT ANY WARRANTY; without even the implied warranty of -## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -## GNU General Public License for more details. - -## You should have received a copy of the GNU General Public License -## along with this program; if not, write to the Free Software -## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -if [ $# == 0 ]; then - echo >&2 "ERROR: $0 job-id user title copies options [file]" - exit 1 -fi - -# Extract the papersize -SENDFF=`grep '^\*DefaultSendFF' "$PPD" | cut -d\ -f2` -COPIES=1 -if [ $# -ge 4 ]; then - COPIES="$4" -fi - -if [ $# -lt 6 ]; then - unset TMPFILE - trap -- 'rm -f "$TMPFILE"' EXIT - TMPFILE=$(mktemp ${TMPDIR:-/tmp}/textonly.XXXXXX) - cat > "$TMPFILE" -else - TMPFILE="$6" -fi - -PR=${5#*page-ranges=} -# Do options specify page-ranges? -if [[ "$PR" != "$5" ]]; then - PR=${PR%% *} -else - #unset PR - PR=1-999999 -fi - -if [[ "$PR" ]]; then - TMPFILE2=$(mktemp ${TMPDIR:-/tmp}/textonly2.XXXXXX) - pagenum=0 - EOF= - { - while [[ "$PR" ]]; do - pl=${PR%%,*} ;# take first subrange - PR=${PR#$pl};PR=${PR#,} ;# remove from range list - pu=${pl#*-} ;# extract upper and lower - pl=${pl%-*} ;# pages of subrange - # Allows interpreting 0-5,3-10 as 1-5,6-10 rejects 5-1 or 1- - (( pagenum >= pl )) && pl=$(( pagenum + 1 )) - (( pl > pu )) && continue - - # Loop reading pages until at or over lower page of subrange. - while read -d `echo -ne '\f'` -r; do - (( pagenum++ )) - (( pagenum == pl )) && break - done - # Did we reach lower page of subrange or EOF? - if (( pagenum < pl )); then - [[ ! "$REPLY" ]] && break ;# empty last page - we're done. - (( pagenum++ )) - EOF=y - fi - # Output page and report to page log - if (( pagenum == pl )); then - echo -n "${REPLY}" >>"$TMPFILE2" - # If EOF then page has no final FF - [[ ! "$EOF" ]] && echo -ne '\f' >>"$TMPFILE2" - echo "PAGE: $pagenum $COPIES" >&2 - fi - [[ "$EOF" ]] && break - # Is the current subrange a single page? - (( pagenum == pu )) && continue - while read -d `echo -ne '\f'` -r; do - (( pagenum++ )) - echo -ne "${REPLY}\f" >>"$TMPFILE2" - echo "PAGE: $pagenum $COPIES" >&2 - (( pagenum == pu )) && break - done - # Could be that we reached EOF before page boundry - if (( pagenum < pu )); then - if [[ "$REPLY" ]]; then - (( pagenum++ )) - echo -n "${REPLY}" >>"$TMPFILE2" - echo "PAGE: $pagenum $COPIES" >&2 - fi - break - fi - done - } <"$TMPFILE" -else - TMPFILE2="$TMPFILE" - pc=$(grep -co `echo -ne '\f'` "$TMPFILE2") - pc=$(( pc * $COPIES )) - echo "PAGE: $pc" >&2 -fi - -while [ "$COPIES" -gt 0 ]; do - # Just translate LF->CRLF at the moment, until the PPD has options added. - sed -e 's/$/'`echo -ne '\r'`'/g' "$TMPFILE2" - - if [ "$SENDFF" == "True" ] - then - echo -ne \\014 - fi - - COPIES=$(($COPIES - 1)) -done -# Cleanup -[[ "$TMPFILE" != "$TMPFILE2" ]] && rm -f "$TMPFILE2" -exit 0 diff -Nru cups-filters-1.9.0/filter/texttops cups-filters-1.10.0/filter/texttops --- cups-filters-1.9.0/filter/texttops 2016-01-19 22:12:43.000000000 +0000 +++ cups-filters-1.10.0/filter/texttops 2016-06-28 20:52:14.000000000 +0000 @@ -32,4 +32,4 @@ exec <"$6" fi -`dirname $0`/texttopdf "$1" "$2" "$3" "$4" "$5" | $PDF2PS - - +$CUPS_SERVERBIN/filter/texttopdf "$1" "$2" "$3" "$4" "$5" | $PDF2PS - - diff -Nru cups-filters-1.9.0/filter/texttotext.c cups-filters-1.10.0/filter/texttotext.c --- cups-filters-1.9.0/filter/texttotext.c 1970-01-01 00:00:00.000000000 +0000 +++ cups-filters-1.10.0/filter/texttotext.c 2016-07-15 19:18:16.000000000 +0000 @@ -0,0 +1,980 @@ +/* + * texttotext + * + * Filter to print text files on text-only printers. The filter has + * several configuration options controlled by a PPD file so that it + * should work with most printer models. + * + * Copyright 2007-2011 by Apple Inc. + * Copyright 1997-2006 by Easy Software Products. + * Copyright 2011-2016 by Till Kamppeter + * + * Distribution and use rights are outlined in the file "COPYING" + * which should have been included with this file. + */ + +/* + * Include necessary headers... + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Type definitions + */ + +typedef enum overlong_line_e { + TRUNCATE = 0, + WORDWRAP = 1, + WRAPATWIDTH = 2 +} overlong_line_t; + +typedef enum newline_char_e { + LF = 0, + CR = 1, + CRLF = 2 +} newline_char_t; + + +/* + * Local functions... + */ + +static int is_true(const char *value); +static int is_false(const char *value); +static int check_range(char *page_ranges, int even_pages, + int odd_pages, int page); +static void cancel_job(int sig); + + +/* + * Local globals... + */ + +static int job_canceled = 0; + + +/* + * 'main()' - Main entry for filter... + */ + +int /* O - Exit status */ +main(int argc, /* I - Number of command-line args */ + char *argv[]) /* I - Command-line arguments */ +{ + int i, j; /* Looping vars */ + char *p; + int exit_status = 0; /* Exit status */ + int fd = 0; /* Copy file descriptor */ + char *filename, /* Text file to convert */ + tempfile[1024]; /* Temporary file */ + char buffer[8192]; /* Copy buffer */ + int bytes; /* Bytes copied */ + int num_copies; /* Number of copies */ + ppd_file_t *ppd; /* PPD file */ + int num_options; /* Number of options */ + cups_option_t *options; /* Options */ + const char *val, *val2; /* Option value */ + ppd_attr_t *ppd_attr; /* Attribute taken from the PPD */ + int num_lines = 66, /* Lines per page */ + num_columns = 80; /* Characters per line */ + int page_left = 0, /* Page margins */ + page_right = 0, + page_top = 0, + page_bottom = 0; + int text_width, /* Width of the text area on the page */ + text_height; /* Height of the text area on the + page */ + char encoding[64]; /* The printer'a encoding, to which + the incoming UTF-8 is converted, + must be 1-byte-per-character */ + overlong_line_t overlong_lines = WRAPATWIDTH; + /* How to treat overlong lines */ + int tab_width = 8; /* Turn tabs to spaces with given + width */ + int pagination = 1; /* Paginate text to allow margins + and page management */ + int send_ff = 1; /* Send form-feed char at the end of + each page */ + newline_char_t newline_char = CRLF; /* Character to send at end of line */ + char *newline_char_str; + char *page_ranges = NULL; /* Selection of pages to print */ + int even_pages = 1; /* Print the even pages */ + int odd_pages = 1; /* Print the odd pages */ + int reverse_order = 0; /* Ouput pages in reverse order? */ + int collate = 1; /* Collate multiple copies? */ + int page_size; /* Number of bytes needed for a page, + to allocate the memory for the + output page buffer */ + char *out_page = NULL; /* Output page buffer */ + cups_array_t *page_array = NULL; /* Array to hold the output pages + for collated copies and reverse + output order */ + iconv_t cd; /* Conversion descriptor, describes + between which encodings iconv + should convert */ + char outbuf[4096]; /* Output buffer for iconv */ + char inbuf[2048]; /* Input buffer for iconv */ + size_t outsize; /* Space left in outbuf */ + size_t insize = 0; /* Bytes still to be converted in + inbuf */ + char *outptr = outbuf; /* Pointer for next converted + character to be dropped */ + char *inptr = inbuf; /* Pointer to next character to be + converted */ + size_t nread; /* Number of bytes read from file */ + size_t nconv; /* -1 on conversion error */ + int incomplete_char = 0; /* Was last character in input buffer + incomplete */ + int result = 0; /* Conversion result (-1 on error) */ + char *procptr, /* Pointer into conversion output + to indicate next byte to process + for output page creation */ + *destptr; /* Pointer into output page buffer + where next character will be put */ + int page, /* Number of current output page */ + line, column; /* Character coordiantes on output + page */ + int page_empty; /* Is the current output page still + empty (no visible characters)? */ + int previous_is_cr; /* Is the previous character processed + a Carriage Return? */ + int skip_rest_of_line = 0; /* Are we truncating an overlong + line? */ + int skip_spaces = 0; /* Are we skipping spaces at a line + break when word-wrapping? */ + char *wrapped_word = NULL; /* Section of a word wrapped over + to the next line */ + int num_pages = 0; /* Number of pages which get actually + printed */ +#if defined(HAVE_SIGACTION) && !defined(HAVE_SIGSET) + struct sigaction action; /* Actions for POSIX signals */ +#endif /* HAVE_SIGACTION && !HAVE_SIGSET */ + + /* + * Make sure status messages are not buffered... + */ + + setbuf(stderr, NULL); + + /* + * Ignore broken pipe signals... + */ + + signal(SIGPIPE, SIG_IGN); + + /* + * Make sure we have the right number of arguments for CUPS! + */ + + if (argc < 6 || argc > 7) + { + fprintf(stderr, "Usage: %s job user title copies options [file]\n", + argv[0]); + return (1); + } + + /* + * Register a signal handler to cleanly cancel a job. + */ + +#ifdef HAVE_SIGSET /* Use System V signals over POSIX to avoid bugs */ + sigset(SIGTERM, cancel_job); +#elif defined(HAVE_SIGACTION) + memset(&action, 0, sizeof(action)); + + sigemptyset(&action.sa_mask); + action.sa_handler = cancel_job; + sigaction(SIGTERM, &action, NULL); +#else + signal(SIGTERM, cancel_job); +#endif /* HAVE_SIGSET */ + + /* + * Copy stdin if needed... + */ + + if (argc == 6) + { + /* + * Copy stdin to a temp file... + */ + + if ((fd = cupsTempFd(tempfile, sizeof(tempfile))) < 0) + { + fprintf(stderr, "ERROR: Unable to copy input text file"); + goto error; + } + + fprintf(stderr, "DEBUG: sys5ippprinter - copying to temp print file \"%s\"\n", + tempfile); + + while ((bytes = fread(buffer, 1, sizeof(buffer), stdin)) > 0) + bytes = write(fd, buffer, bytes); + + close(fd); + + filename = tempfile; + } + else + { + /* + * Use the filename on the command-line... + */ + + filename = argv[6]; + tempfile[0] = '\0'; + } + + /* + * Number of copies + */ + + num_copies = atoi(argv[4]); + if (num_copies < 1) + num_copies = 1; + + /* + * Get the options from the fifth command line argument + */ + + num_options = cupsParseOptions(argv[5], 0, &options); + + /* + * Load the PPD file and mark options... + */ + + ppd = ppdOpenFile(getenv("PPD")); + if (ppd) + { + ppdMarkDefaults(ppd); + cupsMarkOptions(ppd, num_options, options); + } + + /* + * Parse the options + */ + + /* With the "PageSize"/"PageRegion" options we only determine the number + of lines and columns of a page, we do not use the geometry defined by + "PaperDimension" and "ImageableArea" in the PPD */ + if ((val = cupsGetOption("PageSize", num_options, options)) != NULL || + (val = cupsGetOption("PageRegion", num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "DefaultPageSize", NULL)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "DefaultPageRegion", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + fprintf(stderr, "DEBUG: PageSize: %s\n", val); + snprintf(buffer, sizeof(buffer), "Default%sNumLines", val); + if ((val2 = cupsGetOption(buffer + 7, num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, buffer, NULL)) != NULL) { + if (val2 == NULL) + val2 = ppd_attr->value; + if (!strncasecmp(val2, "Custom.", 7)) + val2 += 7; + num_lines = atoi(val2); + } + snprintf(buffer, sizeof(buffer), "Default%sNumColumns", val); + if ((val2 = cupsGetOption(buffer + 7, num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, buffer, NULL)) != NULL) { + if (val2 == NULL) + val2 = ppd_attr->value; + if (!strncasecmp(val2, "Custom.", 7)) + val2 += 7; + num_columns = atoi(val2); + } + if (num_lines <= 0) { + fprintf(stderr, "DEBUG: Invalid number of lines %d, using default: 66\n", + num_lines); + num_lines = 66; + } + if (num_columns <= 0) { + fprintf(stderr, "DEBUG: Invalid number of columns %d, using default: 80\n", + num_columns); + num_columns = 80; + } + } + + /* Direct specification of number of lines/columns, mainly for debugging + and development */ + if ((val = cupsGetOption("page-height", num_options, options)) != NULL) { + i = atoi(val); + if (i > 0) + num_lines = i; + else + fprintf(stderr, "DEBUG: Invalid number of lines %d, using default value: %d\n", + i, num_lines); + } + if ((val = cupsGetOption("page-width", num_options, options)) != NULL) { + i = atoi(val); + if (i > 0) + num_columns = i; + else + fprintf(stderr, "DEBUG: Invalid number of columns %d, using default value: %d\n", + i, num_columns); + } + + fprintf(stderr, "DEBUG: Lines per page: %d; Characters per line: %d\n", + num_lines, num_columns); + + if ((val = cupsGetOption("page-left", num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "Defaultpage-left", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + if (!strncasecmp(val, "Custom.", 7)) + val += 7; + page_left = atoi(val); + if (page_left < 0 || page_left > num_columns - 1) { + fprintf(stderr, "DEBUG: Invalid left margin %d, setting to 0.\n", + page_left); + page_left = 0; + } + } + if ((val = cupsGetOption("page-right", num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "Defaultpage-right", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + if (!strncasecmp(val, "Custom.", 7)) + val += 7; + page_right = atoi(val); + if (page_right < 0 || page_right > num_columns - page_left - 1) { + fprintf(stderr, "DEBUG: Invalid right margin %d, setting to 0.\n", + page_right); + page_right = 0; + } + } + if ((val = cupsGetOption("page-top", num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "Defaultpage-top", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + if (!strncasecmp(val, "Custom.", 7)) + val += 7; + page_top = atoi(val); + if (page_top < 0 || page_top > num_lines - 1) { + fprintf(stderr, "DEBUG: Invalid top margin %d, setting to 0.\n", + page_top); + page_top = 0; + } + } + if ((val = cupsGetOption("page-bottom", num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "Defaultpage-bottom", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + if (!strncasecmp(val, "Custom.", 7)) + val += 7; + page_bottom = atoi(val); + if (page_bottom < 0 || page_bottom > num_lines - page_top - 1) { + fprintf(stderr, "DEBUG: Invalid bottom margin %d, setting to 0.\n", + page_bottom); + page_bottom = 0; + } + } + fprintf(stderr, "DEBUG: Margins: Left (Columns): %d; Right (Columns): %d; Top (Lines): %d; Bottom (Lines): %d\n", + page_left, page_right, page_top, page_bottom); + + text_width = num_columns - page_left - page_right; + text_height = num_lines - page_top - page_bottom; + fprintf(stderr, "DEBUG: Text area: Lines per page: %d; Characters per line: %d\n", + text_height, text_width); + + strcpy(encoding, "ASCII//IGNORE"); + if ((val = cupsGetOption("PrinterEncoding", num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "DefaultPrinterEncoding", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + if (!strncasecmp(val, "Custom.", 7)) + val += 7; + if (val[0] != '\0') { + snprintf(encoding, sizeof(encoding), "%s//IGNORE", val); + for (p = encoding; *p; p ++) + *p = toupper(*p); + } + } + fprintf(stderr, "DEBUG: Output encoding: %s\n", encoding); + + if ((val = cupsGetOption("OverlongLines", num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "DefaultOverlongLines", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + if (!strcasecmp(val, "Truncate")) + overlong_lines = TRUNCATE; + else if (!strcasecmp(val, "WordWrap")) + overlong_lines = WORDWRAP; + else if (!strcasecmp(val, "WrapAtWidth")) + overlong_lines = WRAPATWIDTH; + else + fprintf(stderr, "DEBUG: Invalid value for OverlongLines: %s, using default value.\n", + val); + } + fprintf(stderr, "DEBUG: Handling of overlong lines: %s\n", + (overlong_lines == TRUNCATE ? "Truncate at maximum width" : + (overlong_lines == WORDWRAP ? "Word-wrap" : + "Wrap exactly at maximum width"))); + + if ((val = cupsGetOption("TabWidth", num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "DefaultTabWidth", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + if (!strncasecmp(val, "Custom.", 7)) + val += 7; + i = atoi(val); + if (i > 0) + tab_width = i; + else + fprintf(stderr, "DEBUG: Invalid tab width %d, using default value: %d\n", + i, tab_width); + } + fprintf(stderr, "DEBUG: Tab width: %d\n", tab_width); + + if ((val = cupsGetOption("Pagination", num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "DefaultPagination", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + if (is_true(val)) + pagination = 1; + else if (is_false(val)) + pagination = 0; + else + fprintf(stderr, "DEBUG: Invalid value for Pagination: %s, using default value.\n", + val); + } + fprintf(stderr, "DEBUG: Pagination (Print in defined pages): %s\n", + (pagination ? "Yes" : "No")); + + if ((val = cupsGetOption("SendFF", num_options, options)) != NULL || + (ppd_attr = ppdFindAttr(ppd, "DefaultSendFF", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + if (is_true(val)) + send_ff = 1; + else if (is_false(val)) + send_ff = 0; + else + fprintf(stderr, "DEBUG: Invalid value for SendFF: %s, using default value.\n", + val); + } + fprintf(stderr, "DEBUG: Send Form Feed character at end of page: %s\n", + (send_ff ? "Yes" : "No")); + + if ((val = cupsGetOption("NewlineCharacters", num_options, options)) != + NULL || + (ppd_attr = ppdFindAttr(ppd, "DefaultNewlineCharacters", NULL)) != NULL) { + if (val == NULL) + val = ppd_attr->value; + if (!strcasecmp(val, "LF")) + newline_char = LF; + else if (!strcasecmp(val, "CR")) + newline_char = CR; + else if (!strcasecmp(val, "CRLF")) + newline_char = CRLF; + else + fprintf(stderr, "DEBUG: Invalid value for NewlineCharacters: %s, using default value.\n", + val); + } + fprintf(stderr, "DEBUG: Characters sent to make printer start a new line: %s\n", + (newline_char == LF ? "Line Feed (LF)" : + (newline_char == CR ? "Carriage Return (CR)" : + "Carriage Return (CR) and Line Feed (LF)"))); + + if ((val = cupsGetOption("page-ranges", num_options, options)) != + NULL) { + if (val[0] != '\0') + page_ranges = strdup(val); + } + if (page_ranges) + fprintf(stderr, "DEBUG: Page selection: %s\n", page_ranges); + + if ((val = cupsGetOption("page-set", num_options, options)) != + NULL) { + if (!strcasecmp(val, "even")) { + even_pages = 1; + odd_pages = 0; + } else if (!strcasecmp(val, "odd")) { + even_pages = 0; + odd_pages = 1; + } else if (!strcasecmp(val, "all")) { + even_pages = 1; + odd_pages = 1; + } else + fprintf(stderr, "DEBUG: Invalid value for page-set: %s, using default value.\n", + val); + } + if (!even_pages || !odd_pages) + fprintf(stderr, "DEBUG: Print %s.\n", + (even_pages ? "only the even pages" : + (odd_pages ? "only the odd pages" : + "no pages"))); + + if ((val = cupsGetOption("output-order", num_options, options)) != + NULL) { + if (!strcasecmp(val, "reverse")) + reverse_order = 1; + else + fprintf(stderr, "DEBUG: Invalid value for OutputOrder: %s, using default value.\n", + val); + } + fprintf(stderr, "DEBUG: Print pages in reverse order: %s\n", + (reverse_order ? "Yes" : "No")); + + if ((val = cupsGetOption("Collate", num_options, options)) != NULL) { + if (is_true(val)) + collate = 1; + else if (is_false(val)) + collate = 0; + else + fprintf(stderr, "DEBUG: Invalid value for Collate: %s, using default value.\n", + val); + } + fprintf(stderr, "DEBUG: Collate copies: %s\n", + (collate ? "Yes" : "No")); + + /* Create a string to insert as the newline mark */ + if (newline_char == LF) + newline_char_str = "\n"; + else if (newline_char == CR) + newline_char_str = "\r"; + else if (newline_char == CRLF) + newline_char_str = "\r\n"; + + /* Size of the output page in bytes (only 1-byte-per-character supported) + in the worst case, no blank lines at top and bottom, no blank right + margin, 2 characters for newline (CR + LF) plus form feed plus closing + zero */ + page_size = (num_columns + 2) * num_lines + 2; + + /* Allocate output page buffer */ + out_page = calloc(page_size, sizeof(char)); + + /* Set conversion mode of iconv */ + cd = iconv_open(encoding, "UTF-8"); + if (cd == (iconv_t) -1) { + /* Something went wrong. */ + if (errno == EINVAL) + fprintf(stderr, "ERROR: Conversion from UTF-8 to %s not available\n", + encoding); + else + fprintf(stderr, "ERROR: Error setting up conversion from UTF-8 to %s\n", + encoding); + goto error; + } + + /* Open the input file */ + fd = open(filename, O_RDONLY); + if (fd < 0) { + fprintf(stderr, "ERROR: Unable to open input text file %s\n", filename); + goto error; + } + + /* Create an array to hold the output pages for collated copies or + reverse output order (only when printing paginated) */ + if (pagination && + ((num_copies != 1 && collate) || reverse_order)) { + /* Create page array */ + page_array = cupsArrayNew(NULL, NULL); + } + + /* Main loop for readin the input file, converting the encoding, formatting + the output, and printing the pages */ + destptr = out_page; + page_empty = 1; + page = 1; + line = 0; + column = 0; + previous_is_cr = 0; + insize = 0; + do { + /* Reset input pointer */ + inptr = inbuf; + + /* Mark the output buffer empty */ + outsize = sizeof(outbuf); + outptr = outbuf; + + /* Read from the input file */ + nread = read (fd, inbuf + insize, sizeof (inbuf) - insize); + if (nread == 0) { + /* When we come here the file is completely read. + This still could mean there are some unused + characters in the inbuf, meaning that the file + ends with an incomplete UTF-8 character. Log + this fact. */ + if (insize > 0 && incomplete_char) + fprintf(stderr, "DEBUG: Input text file ends with incomplete UTF-8 character sequence, file possibly incomplete, but printing the successfully read part anyway.\n"); + + /* Now write out the byte sequence to get into the + initial state if this is necessary. */ + iconv (cd, NULL, NULL, &outptr, &outsize); + } + + insize += nread; + + /* Convert the incoming UTF-8-encoded text to the printer's encoding */ + if (insize > 0) { /* Do we have data to convert? */ + /* Do the conversion. */ + nconv = iconv (cd, &inptr, &insize, &outptr, &outsize); + if (nconv == (size_t) -1) { + /* Not everything went right. It might only be + an unfinished byte sequence at the end of the + buffer. Or it is a real problem. */ + if (errno == EINVAL || errno == E2BIG) { + /* This is harmless. Simply move the unused + bytes to the beginning of the buffer so that + they can be used in the next round. */ + if (errno == EINVAL) + incomplete_char = 1; + memmove (inbuf, inptr, insize); + } else { + /* We found an illegal UTF-8 byte sequence here, + so error out at this point. */ + fprintf(stderr, "ERROR: Illegal UTF-8 sequence found. Input file perhaps not UTF-8-encoded\n"); + result = -1; + break; + } + } + } + + /* Process the output to generate the output pages */ + if (outptr == outbuf) /* End of input file */ + *(outptr ++) = '\0'; + for (procptr = outbuf; procptr < outptr; procptr ++) { + if ((column >= text_width && /* Current line is full */ + *procptr != '\n' && *procptr != '\r' && *procptr != '\f') || + /* Next character is not newline or + formfeed */ + (outbuf[0] == '\0' && column > 0)) { /* End of input file */ + if (overlong_lines == TRUNCATE && outbuf[0] != '\0') + skip_rest_of_line = 1; + else { + if (overlong_lines == WORDWRAP && outbuf[0] != '\0') { + if (*procptr > ' ') { + *destptr = '\0'; + for (p = destptr - 1, i = column - 1; *p != ' ' && i >= 0; + p --, i--); + if (i >= 0 && i < column - 1) { + wrapped_word = strdup(p + 1); + for (; *p == ' ' && i >= 0; p --, i--); + if (*p != ' ' && i >= 0) + destptr = p + 1; + else { + free(wrapped_word); + wrapped_word = NULL; + } + } + } else + skip_spaces = 1; + } + /* Remove trailing whitespace */ + while (destptr > out_page && *(destptr - 1) == ' ') + destptr --; + /* Put newline character(s) */ + for (j = 0; newline_char_str[j]; j ++) + *(destptr ++) = newline_char_str[j]; + /* Position cursor in next line */ + line ++; + column = 0; + } + } + if ((line >= text_height && /* Current page is full */ + *procptr != '\f') || /* Next character is not formfeed */ + outbuf[0] == '\0' ) { /* End of input file */ + /* Do we actually print this page? */ + if (!pagination || + check_range(page_ranges, even_pages, odd_pages, page)) { + /* Finalize the page */ + if (pagination) { + if (send_ff) { + if (page_empty) + destptr = out_page; /* Remove unneeded white space */ + /* Send Form Feed */ + *(destptr ++) = '\f'; + } else if (outbuf[0] != '\0') { + /* Fill up page with blank lines */ + for (i = 0; i < page_bottom; i ++) + for (j = 0; newline_char_str[j]; j ++) + *(destptr ++) = newline_char_str[j]; + } + } + /* Allow to handle the finished page as a C string */ + *(destptr ++) = '\0'; + /* Count pages which will actually get printed */ + num_pages ++; + if (!pagination) { + /* Send out the output page buffer content */ + printf("%s", out_page); + /* Log the page output (only once, when printing the first buffer + load) */ + if (num_pages == 1) + fprintf(stderr, "PAGE: 1 1\n"); + } else if ((num_copies == 1 || !collate) && !reverse_order) { + /* Send out the page */ + for (i = 0; i < num_copies; i ++) + printf("%s", out_page); + /* Log the page output */ + fprintf(stderr, "PAGE: %d %d\n", num_pages, num_copies); + } else { + /* Save the page in the page array */ + cupsArrayAdd(page_array, strdup(out_page)); + } + } + /* Reset for next page */ + destptr = out_page; + page_empty = 1; + line = 0; + column = 0; + page ++; + } + if (outbuf[0] == '\0') /* End of input file */ + break; + if (column == 0) { /* Start of new line */ + if (line == 0 && pagination) /* Start of new page */ + for (i = 0; i < page_top; i ++) + for (j = 0; newline_char_str[j]; j ++) + *(destptr ++) = newline_char_str[j]; + for (i = 0; i < page_left; i ++) + *(destptr ++) = ' '; + /* Did we wrap a word from the previous line? */ + if (wrapped_word) { + for (p = wrapped_word; *p != '\0'; p ++, column ++) + *(destptr ++) = *p; + free(wrapped_word); + wrapped_word = NULL; + page_empty = 0; + skip_spaces = 0; + } + } + if (*procptr == '\r' || *procptr == '\n') { /* CR or LF */ + /* Only write newline if we are not on the LF of a CR+LF */ + if (*procptr == '\r' || previous_is_cr == 0) { + /* Remove trailing whitespace */ + while (destptr > out_page && *(destptr - 1) == ' ') + destptr --; + /* Put newline character(s) */ + for (j = 0; newline_char_str[j]; j ++) + *(destptr ++) = newline_char_str[j]; + /* Position cursor in next line */ + line ++; + column = 0; + /* Finished truncating an overlong line */ + skip_rest_of_line = 0; + skip_spaces = 0; + } + if (*procptr == '\r') + previous_is_cr = 1; + else + previous_is_cr = 0; + } else { + previous_is_cr = 0; + if (*procptr == '\t') { /* Tab character */ + if (!skip_rest_of_line && !skip_spaces) { + *(destptr ++) = ' '; /* Always at least one space */ + column ++; + /* Add spaces to reach next multiple of the tab width */ + for (; column % tab_width != 0 && column < text_width; column ++) + *(destptr ++) = ' '; + } + } else if (*procptr == '\f') { /* Form feed */ + /* Skip to end of page */ + if (send_ff) + /* Mark page full */ + line = text_height; + else if (pagination) + /* Fill page with newlines */ + for (; line < text_height; line ++) + for (j = 0; newline_char_str[j]; j ++) + *(destptr ++) = newline_char_str[j]; + column = 0; + /* Finished truncating an overlong line */ + skip_rest_of_line = 0; + skip_spaces = 0; + } else if (*procptr == ' ') { /* Space */ + if (!skip_rest_of_line && !skip_spaces) { + *(destptr ++) = *procptr; + column ++; + } + } else if (*procptr > ' ' || *procptr < '\0') { /* Regular character */ + if (!skip_rest_of_line) { + *(destptr ++) = *procptr; + column ++; + page_empty = 0; + skip_spaces = 0; + } + } + } + } + } while (outbuf[0] != '\0'); /* End of input file */ + + close(fd); + + if (iconv_close (cd) != 0) + fprintf (stderr, "DEBUG: Error closing iconv encoding conversion session\n"); + + /* Error out on an illegal UTF-8 sequence in the input file */ + if (result < 0) + goto error; + + /* Print out the page array if we created one */ + if (pagination && + ((num_copies != 1 && collate) || reverse_order)) { + /* If we print collated copies, the outer loop (i) goes through the + copies, if we do not collate, the inner loop (j) goes through the + copies. The other loop only runs for one cycle. */ + for (i = 0; i < (collate ? num_copies : 1); i ++) + for (page = (reverse_order ? num_pages : 1); + (reverse_order ? (page >= 1) : (page <= num_pages)); + page += (reverse_order ? -1 : 1)) { + p = (char *)cupsArrayIndex(page_array, page - 1); + for (j = 0; j < (collate ? 1 : num_copies); j ++) + printf("%s", p); + fprintf(stderr, "PAGE: %d %d\n", page, (collate ? 1 : num_copies)); + } + /* Clean up */ + for (page = 0; page < num_pages; page ++) { + p = (char *)cupsArrayIndex(page_array, page); + free(p); + } + cupsArrayDelete(page_array); + } + + /* + * Cleanup and exit... + */ + + error: + + free(page_ranges); + free(out_page); + + if (tempfile[0]) + unlink(tempfile); + + return (exit_status); +} + + +/* + * 'is_true()' - Check option value for boolean true + */ + +static int is_true(const char *value) +{ + if (!value) + return 0; + return (strcasecmp(value, "yes") == 0) || + (strcasecmp(value, "on") == 0) || + (strcasecmp(value, "true") == 0) || + (strcasecmp(value, "1") == 0); +} + + +/* + * 'is_false()' - Check option value for boolean false + */ + +static int is_false(const char *value) +{ + if (!value) + return 0; + return (strcasecmp(value, "no") == 0) || + (strcasecmp(value, "off") == 0) || + (strcasecmp(value, "false") == 0) || + (strcasecmp(value, "0") == 0); +} + + +/* + * 'check_range()' - Check to see if the current page is selected for + * printing. + */ + +static int /* O - 1 if selected, 0 otherwise */ +check_range(char *page_ranges, /* I - Selection of pages to print */ + int even_pages, /* I - Print the even pages */ + int odd_pages, /* I - Print the odd pages */ + int page) /* I - Page number */ +{ + const char *range; /* Pointer into range string */ + int lower, upper; /* Lower and upper page numbers */ + + /* + * See if we only print even or odd pages... + */ + + if (!odd_pages && (page & 1)) + return (0); + + if (!even_pages && !(page & 1)) + return (0); + + /* + * page-ranges option + */ + + if (!page_ranges || page_ranges[0] == '\0') + return (1); /* No range, print all pages... */ + + for (range = page_ranges; *range != '\0';) + { + if (*range == '-') + { + lower = 1; + range ++; + upper = (int)strtol(range, (char **)&range, 10); + } + else + { + lower = (int)strtol(range, (char **)&range, 10); + + if (*range == '-') + { + range ++; + if (!isdigit(*range & 255)) + upper = 65535; + else + upper = (int)strtol(range, (char **)&range, 10); + } + else + upper = lower; + } + + if (page >= lower && page <= upper) + return (1); + + if (*range == ',') + range ++; + else + break; + } + + return (0); +} + + +/* + * 'cancel_job()' - Flag the job as canceled. + */ + +static void +cancel_job(int sig) /* I - Signal number (unused) */ +{ + (void)sig; + + job_canceled = 1; +} + + +/* + * End + */ diff -Nru cups-filters-1.9.0/INSTALL cups-filters-1.10.0/INSTALL --- cups-filters-1.9.0/INSTALL 2016-06-09 14:12:25.000000000 +0000 +++ cups-filters-1.10.0/INSTALL 2016-07-15 22:46:54.000000000 +0000 @@ -1,5 +1,5 @@ -INSTALL - OpenPrinting CUPS Filters v1.9.0 - 2016-06-09 -------------------------------------------------------- +INSTALL - OpenPrinting CUPS Filters v1.10.0 - 2016-07-15 +-------------------------------------------------------- This file describes how to compile and install OpenPrinting CUPS Filters from source code. For more information on OpenPrinting CUPS diff -Nru cups-filters-1.9.0/Makefile.am cups-filters-1.10.0/Makefile.am --- cups-filters-1.9.0/Makefile.am 2016-03-03 19:52:25.000000000 +0000 +++ cups-filters-1.10.0/Makefile.am 2016-07-14 17:36:02.000000000 +0000 @@ -474,12 +474,11 @@ # ====================== pkgfilter_SCRIPTS = \ filter/imagetops \ - filter/pstopdf \ - filter/textonly \ filter/texttops if ENABLE_GHOSTSCRIPT pkgfilter_SCRIPTS += \ - filter/gstopxl + filter/gstopxl \ + filter/gstopdf endif if ENABLE_BRAILLE nodist_pkgfilter_SCRIPTS = \ @@ -495,13 +494,15 @@ commandtoescpx \ commandtopclx \ sys5ippprinter \ + texttotext \ pdftops \ pdftoraster \ rastertoescpx \ rastertopclx \ texttopdf \ urftopdf \ - rastertopdf + rastertopdf \ + rastertops if ENABLE_IJS pkgfilter_PROGRAMS += \ pdftoijs @@ -669,6 +670,16 @@ $(LIBQPDF_LIBS) \ libcupsfilters.la +rastertops_SOURCES = \ + filter/rastertops.c +rastertops_CFLAGS = \ + $(CUPS_CFLAGS) \ + -I$(srcdir)/cupsfilters/ +rastertops_LDADD = \ + $(CUPS_LIBS) \ + -lz \ + libcupsfilters.la + pdftoijs_SOURCES = \ filter/pdftoijs.cxx \ filter/PDFError.h @@ -691,6 +702,13 @@ sys5ippprinter_LDADD = $(STRCASESTR) $(CUPS_LIBS) sys5ippprinter_DEPENDENCIES = $(STRCASESTR) +texttotext_SOURCES = \ + filter/texttotext.c +EXTRA_texttotext_SOURCES = filter/strcasestr.c +texttotext_CFLAGS = $(CUPS_CFLAGS) +texttotext_LDADD = $(STRCASESTR) $(CUPS_LIBS) +texttotext_DEPENDENCIES = $(STRCASESTR) + pdftops_SOURCES = \ filter/common.c \ filter/common.h \ @@ -853,8 +871,7 @@ ppd/Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd \ ppd/Generic-PDF_Printer-PDF.ppd \ ppd/HP-Color_LaserJet_CM3530_MFP-PDF.ppd \ - ppd/Ricoh-PDF_Printer-PDF.ppd \ - ppd/textonly.ppd + ppd/Ricoh-PDF_Printer-PDF.ppd if ENABLE_IJS ppd_DATA += \ ppd/HP-PhotoSmart_Pro_B8300-hpijs-pdftoijs.ppd diff -Nru cups-filters-1.9.0/Makefile.in cups-filters-1.10.0/Makefile.in --- cups-filters-1.9.0/Makefile.in 2016-06-09 14:16:56.000000000 +0000 +++ cups-filters-1.10.0/Makefile.in 2016-07-15 22:49:41.000000000 +0000 @@ -126,12 +126,14 @@ pkgfilter_PROGRAMS = pdftoopvp$(EXEEXT) pdftopdf$(EXEEXT) \ bannertopdf$(EXEEXT) commandtoescpx$(EXEEXT) \ commandtopclx$(EXEEXT) sys5ippprinter$(EXEEXT) \ - pdftops$(EXEEXT) pdftoraster$(EXEEXT) rastertoescpx$(EXEEXT) \ - rastertopclx$(EXEEXT) texttopdf$(EXEEXT) urftopdf$(EXEEXT) \ - rastertopdf$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \ + texttotext$(EXEEXT) pdftops$(EXEEXT) pdftoraster$(EXEEXT) \ + rastertoescpx$(EXEEXT) rastertopclx$(EXEEXT) \ + texttopdf$(EXEEXT) urftopdf$(EXEEXT) rastertopdf$(EXEEXT) \ + rastertops$(EXEEXT) $(am__EXEEXT_1) $(am__EXEEXT_2) \ $(am__EXEEXT_3) $(am__EXEEXT_4) @ENABLE_GHOSTSCRIPT_TRUE@am__append_7 = \ -@ENABLE_GHOSTSCRIPT_TRUE@ filter/gstopxl +@ENABLE_GHOSTSCRIPT_TRUE@ filter/gstopxl \ +@ENABLE_GHOSTSCRIPT_TRUE@ filter/gstopdf @ENABLE_IJS_TRUE@am__append_8 = \ @ENABLE_IJS_TRUE@ pdftoijs @@ -174,7 +176,7 @@ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = libcupsfilters.pc libfontembed.pc filter/gstopxl \ +CONFIG_CLEAN_FILES = libcupsfilters.pc libfontembed.pc \ utils/cups-browsed utils/cups-browsed.conf \ filter/foomatic-rip/foomatic-rip.1 \ filter/braille/drivers/index/indexv4.sh \ @@ -442,6 +444,12 @@ rastertopdf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(rastertopdf_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am_rastertops_OBJECTS = rastertops-rastertops.$(OBJEXT) +rastertops_OBJECTS = $(am_rastertops_OBJECTS) +rastertops_DEPENDENCIES = $(am__DEPENDENCIES_1) libcupsfilters.la +rastertops_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(rastertops_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am_serial_OBJECTS = serial-serial.$(OBJEXT) serial_OBJECTS = $(am_serial_OBJECTS) serial_DEPENDENCIES = $(am__DEPENDENCIES_1) @@ -510,6 +518,11 @@ texttopdf_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(texttopdf_CFLAGS) \ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +am_texttotext_OBJECTS = texttotext-texttotext.$(OBJEXT) +texttotext_OBJECTS = $(am_texttotext_OBJECTS) +texttotext_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(texttotext_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ am_ttfread_OBJECTS = main.$(OBJEXT) ttfread_OBJECTS = $(am_ttfread_OBJECTS) ttfread_DEPENDENCIES = libfontembed.la @@ -585,13 +598,14 @@ $(pdftops_SOURCES) $(EXTRA_pdftops_SOURCES) \ $(pdftoraster_SOURCES) $(rastertoescpx_SOURCES) \ $(rastertopclx_SOURCES) $(rastertopdf_SOURCES) \ - $(serial_SOURCES) $(sys5ippprinter_SOURCES) \ - $(EXTRA_sys5ippprinter_SOURCES) $(test1284_SOURCES) \ - $(test_analyze_SOURCES) $(test_pdf_SOURCES) \ - $(test_pdf1_SOURCES) $(test_pdf2_SOURCES) $(test_ps_SOURCES) \ - $(testcmyk_SOURCES) $(testdither_SOURCES) $(testimage_SOURCES) \ - $(testrgb_SOURCES) $(texttopdf_SOURCES) $(ttfread_SOURCES) \ - $(urftopdf_SOURCES) + $(rastertops_SOURCES) $(serial_SOURCES) \ + $(sys5ippprinter_SOURCES) $(EXTRA_sys5ippprinter_SOURCES) \ + $(test1284_SOURCES) $(test_analyze_SOURCES) \ + $(test_pdf_SOURCES) $(test_pdf1_SOURCES) $(test_pdf2_SOURCES) \ + $(test_ps_SOURCES) $(testcmyk_SOURCES) $(testdither_SOURCES) \ + $(testimage_SOURCES) $(testrgb_SOURCES) $(texttopdf_SOURCES) \ + $(texttotext_SOURCES) $(EXTRA_texttotext_SOURCES) \ + $(ttfread_SOURCES) $(urftopdf_SOURCES) DIST_SOURCES = $(libcupsfilters_la_SOURCES) $(libfontembed_la_SOURCES) \ $(am__libphpcups_la_SOURCES_DIST) $(bannertopdf_SOURCES) \ $(EXTRA_bannertopdf_SOURCES) $(beh_SOURCES) \ @@ -603,12 +617,13 @@ $(pdftopdf_SOURCES) $(pdftops_SOURCES) \ $(EXTRA_pdftops_SOURCES) $(pdftoraster_SOURCES) \ $(rastertoescpx_SOURCES) $(rastertopclx_SOURCES) \ - $(rastertopdf_SOURCES) $(serial_SOURCES) \ + $(rastertopdf_SOURCES) $(rastertops_SOURCES) $(serial_SOURCES) \ $(sys5ippprinter_SOURCES) $(EXTRA_sys5ippprinter_SOURCES) \ $(test1284_SOURCES) $(test_analyze_SOURCES) \ $(test_pdf_SOURCES) $(test_pdf1_SOURCES) $(test_pdf2_SOURCES) \ $(test_ps_SOURCES) $(testcmyk_SOURCES) $(testdither_SOURCES) \ $(testimage_SOURCES) $(testrgb_SOURCES) $(texttopdf_SOURCES) \ + $(texttotext_SOURCES) $(EXTRA_texttotext_SOURCES) \ $(ttfread_SOURCES) $(urftopdf_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ @@ -837,7 +852,6 @@ $(top_srcdir)/filter/braille/filters/imagetobrf.in \ $(top_srcdir)/filter/braille/filters/texttobrf.in \ $(top_srcdir)/filter/foomatic-rip/foomatic-rip.1.in \ - $(top_srcdir)/filter/gstopxl.in \ $(top_srcdir)/utils/cups-browsed.conf.in \ $(top_srcdir)/utils/cups-browsed.in AUTHORS COPYING ChangeLog \ INSTALL NEWS README compile config.guess config.sub depcomp \ @@ -979,7 +993,6 @@ RCSTART = @RCSTART@ RCSTOP = @RCSTOP@ SED = @SED@ -SED_EXTENDED_REGEX_OPT = @SED_EXTENDED_REGEX_OPT@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRCASESTR = @STRCASESTR@ @@ -1436,8 +1449,7 @@ # ====================== # Simple filter binaries # ====================== -pkgfilter_SCRIPTS = filter/imagetops filter/pstopdf filter/textonly \ - filter/texttops $(am__append_7) +pkgfilter_SCRIPTS = filter/imagetops filter/texttops $(am__append_7) @ENABLE_BRAILLE_TRUE@nodist_pkgfilter_SCRIPTS = \ @ENABLE_BRAILLE_TRUE@ filter/braille/drivers/generic/brftoembosser \ @ENABLE_BRAILLE_TRUE@ filter/braille/drivers/index/imageubrltoindexv3 \ @@ -1602,6 +1614,18 @@ $(LIBQPDF_LIBS) \ libcupsfilters.la +rastertops_SOURCES = \ + filter/rastertops.c + +rastertops_CFLAGS = \ + $(CUPS_CFLAGS) \ + -I$(srcdir)/cupsfilters/ + +rastertops_LDADD = \ + $(CUPS_LIBS) \ + -lz \ + libcupsfilters.la + pdftoijs_SOURCES = \ filter/pdftoijs.cxx \ filter/PDFError.h @@ -1626,6 +1650,13 @@ sys5ippprinter_CFLAGS = $(CUPS_CFLAGS) sys5ippprinter_LDADD = $(STRCASESTR) $(CUPS_LIBS) sys5ippprinter_DEPENDENCIES = $(STRCASESTR) +texttotext_SOURCES = \ + filter/texttotext.c + +EXTRA_texttotext_SOURCES = filter/strcasestr.c +texttotext_CFLAGS = $(CUPS_CFLAGS) +texttotext_LDADD = $(STRCASESTR) $(CUPS_LIBS) +texttotext_DEPENDENCIES = $(STRCASESTR) pdftops_SOURCES = \ filter/common.c \ filter/common.h \ @@ -1775,8 +1806,8 @@ ppd_DATA = ppd/Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd \ ppd/Generic-PDF_Printer-PDF.ppd \ ppd/HP-Color_LaserJet_CM3530_MFP-PDF.ppd \ - ppd/Ricoh-PDF_Printer-PDF.ppd ppd/textonly.ppd \ - $(am__append_13) $(am__append_14) + ppd/Ricoh-PDF_Printer-PDF.ppd $(am__append_13) \ + $(am__append_14) # ========= # Scripting @@ -1847,8 +1878,6 @@ cd $(top_builddir) && $(SHELL) ./config.status $@ libfontembed.pc: $(top_builddir)/config.status $(srcdir)/libfontembed.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ -filter/gstopxl: $(top_builddir)/config.status $(top_srcdir)/filter/gstopxl.in - cd $(top_builddir) && $(SHELL) ./config.status $@ utils/cups-browsed: $(top_builddir)/config.status $(top_srcdir)/utils/cups-browsed.in cd $(top_builddir) && $(SHELL) ./config.status $@ utils/cups-browsed.conf: $(top_builddir)/config.status $(top_srcdir)/utils/cups-browsed.conf.in @@ -2236,6 +2265,10 @@ @rm -f rastertopdf$(EXEEXT) $(AM_V_CXXLD)$(rastertopdf_LINK) $(rastertopdf_OBJECTS) $(rastertopdf_LDADD) $(LIBS) +rastertops$(EXEEXT): $(rastertops_OBJECTS) $(rastertops_DEPENDENCIES) $(EXTRA_rastertops_DEPENDENCIES) + @rm -f rastertops$(EXEEXT) + $(AM_V_CCLD)$(rastertops_LINK) $(rastertops_OBJECTS) $(rastertops_LDADD) $(LIBS) + serial$(EXEEXT): $(serial_OBJECTS) $(serial_DEPENDENCIES) $(EXTRA_serial_DEPENDENCIES) @rm -f serial$(EXEEXT) $(AM_V_CCLD)$(serial_LINK) $(serial_OBJECTS) $(serial_LDADD) $(LIBS) @@ -2288,6 +2321,10 @@ @rm -f texttopdf$(EXEEXT) $(AM_V_CCLD)$(texttopdf_LINK) $(texttopdf_OBJECTS) $(texttopdf_LDADD) $(LIBS) +texttotext$(EXEEXT): $(texttotext_OBJECTS) $(texttotext_DEPENDENCIES) $(EXTRA_texttotext_DEPENDENCIES) + @rm -f texttotext$(EXEEXT) + $(AM_V_CCLD)$(texttotext_LINK) $(texttotext_OBJECTS) $(texttotext_LDADD) $(LIBS) + ttfread$(EXEEXT): $(ttfread_OBJECTS) $(ttfread_DEPENDENCIES) $(EXTRA_ttfread_DEPENDENCIES) @rm -f ttfread$(EXEEXT) $(AM_V_CCLD)$(LINK) $(ttfread_OBJECTS) $(ttfread_LDADD) $(LIBS) @@ -2531,6 +2568,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rastertopclx-pcl-common.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rastertopclx-rastertopclx.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rastertopdf-rastertopdf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rastertops-rastertops.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/serial-serial.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sfnt.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sfnt_subset.Plo@am__quote@ @@ -2554,6 +2592,8 @@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texttopdf-pdfutils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texttopdf-textcommon.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texttopdf-texttopdf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texttotext-strcasestr.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texttotext-texttotext.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/urftopdf-urftopdf.Po@am__quote@ .c.o: @@ -3242,6 +3282,20 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rastertopclx_CFLAGS) $(CFLAGS) -c -o rastertopclx-rastertopclx.obj `if test -f 'filter/rastertopclx.c'; then $(CYGPATH_W) 'filter/rastertopclx.c'; else $(CYGPATH_W) '$(srcdir)/filter/rastertopclx.c'; fi` +rastertops-rastertops.o: filter/rastertops.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rastertops_CFLAGS) $(CFLAGS) -MT rastertops-rastertops.o -MD -MP -MF $(DEPDIR)/rastertops-rastertops.Tpo -c -o rastertops-rastertops.o `test -f 'filter/rastertops.c' || echo '$(srcdir)/'`filter/rastertops.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/rastertops-rastertops.Tpo $(DEPDIR)/rastertops-rastertops.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='filter/rastertops.c' object='rastertops-rastertops.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rastertops_CFLAGS) $(CFLAGS) -c -o rastertops-rastertops.o `test -f 'filter/rastertops.c' || echo '$(srcdir)/'`filter/rastertops.c + +rastertops-rastertops.obj: filter/rastertops.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rastertops_CFLAGS) $(CFLAGS) -MT rastertops-rastertops.obj -MD -MP -MF $(DEPDIR)/rastertops-rastertops.Tpo -c -o rastertops-rastertops.obj `if test -f 'filter/rastertops.c'; then $(CYGPATH_W) 'filter/rastertops.c'; else $(CYGPATH_W) '$(srcdir)/filter/rastertops.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/rastertops-rastertops.Tpo $(DEPDIR)/rastertops-rastertops.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='filter/rastertops.c' object='rastertops-rastertops.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(rastertops_CFLAGS) $(CFLAGS) -c -o rastertops-rastertops.obj `if test -f 'filter/rastertops.c'; then $(CYGPATH_W) 'filter/rastertops.c'; else $(CYGPATH_W) '$(srcdir)/filter/rastertops.c'; fi` + serial-serial.o: backend/serial.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(serial_CFLAGS) $(CFLAGS) -MT serial-serial.o -MD -MP -MF $(DEPDIR)/serial-serial.Tpo -c -o serial-serial.o `test -f 'backend/serial.c' || echo '$(srcdir)/'`backend/serial.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/serial-serial.Tpo $(DEPDIR)/serial-serial.Po @@ -3536,6 +3590,34 @@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(texttopdf_CFLAGS) $(CFLAGS) -c -o texttopdf-texttopdf.obj `if test -f 'filter/texttopdf.c'; then $(CYGPATH_W) 'filter/texttopdf.c'; else $(CYGPATH_W) '$(srcdir)/filter/texttopdf.c'; fi` +texttotext-texttotext.o: filter/texttotext.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(texttotext_CFLAGS) $(CFLAGS) -MT texttotext-texttotext.o -MD -MP -MF $(DEPDIR)/texttotext-texttotext.Tpo -c -o texttotext-texttotext.o `test -f 'filter/texttotext.c' || echo '$(srcdir)/'`filter/texttotext.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/texttotext-texttotext.Tpo $(DEPDIR)/texttotext-texttotext.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='filter/texttotext.c' object='texttotext-texttotext.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(texttotext_CFLAGS) $(CFLAGS) -c -o texttotext-texttotext.o `test -f 'filter/texttotext.c' || echo '$(srcdir)/'`filter/texttotext.c + +texttotext-texttotext.obj: filter/texttotext.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(texttotext_CFLAGS) $(CFLAGS) -MT texttotext-texttotext.obj -MD -MP -MF $(DEPDIR)/texttotext-texttotext.Tpo -c -o texttotext-texttotext.obj `if test -f 'filter/texttotext.c'; then $(CYGPATH_W) 'filter/texttotext.c'; else $(CYGPATH_W) '$(srcdir)/filter/texttotext.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/texttotext-texttotext.Tpo $(DEPDIR)/texttotext-texttotext.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='filter/texttotext.c' object='texttotext-texttotext.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(texttotext_CFLAGS) $(CFLAGS) -c -o texttotext-texttotext.obj `if test -f 'filter/texttotext.c'; then $(CYGPATH_W) 'filter/texttotext.c'; else $(CYGPATH_W) '$(srcdir)/filter/texttotext.c'; fi` + +texttotext-strcasestr.o: filter/strcasestr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(texttotext_CFLAGS) $(CFLAGS) -MT texttotext-strcasestr.o -MD -MP -MF $(DEPDIR)/texttotext-strcasestr.Tpo -c -o texttotext-strcasestr.o `test -f 'filter/strcasestr.c' || echo '$(srcdir)/'`filter/strcasestr.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/texttotext-strcasestr.Tpo $(DEPDIR)/texttotext-strcasestr.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='filter/strcasestr.c' object='texttotext-strcasestr.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(texttotext_CFLAGS) $(CFLAGS) -c -o texttotext-strcasestr.o `test -f 'filter/strcasestr.c' || echo '$(srcdir)/'`filter/strcasestr.c + +texttotext-strcasestr.obj: filter/strcasestr.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(texttotext_CFLAGS) $(CFLAGS) -MT texttotext-strcasestr.obj -MD -MP -MF $(DEPDIR)/texttotext-strcasestr.Tpo -c -o texttotext-strcasestr.obj `if test -f 'filter/strcasestr.c'; then $(CYGPATH_W) 'filter/strcasestr.c'; else $(CYGPATH_W) '$(srcdir)/filter/strcasestr.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/texttotext-strcasestr.Tpo $(DEPDIR)/texttotext-strcasestr.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='filter/strcasestr.c' object='texttotext-strcasestr.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(texttotext_CFLAGS) $(CFLAGS) -c -o texttotext-strcasestr.obj `if test -f 'filter/strcasestr.c'; then $(CYGPATH_W) 'filter/strcasestr.c'; else $(CYGPATH_W) '$(srcdir)/filter/strcasestr.c'; fi` + main.o: fontembed/main.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT main.o -MD -MP -MF $(DEPDIR)/main.Tpo -c -o main.o `test -f 'fontembed/main.c' || echo '$(srcdir)/'`fontembed/main.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po diff -Nru cups-filters-1.9.0/mime/cupsfilters.convs cups-filters-1.10.0/mime/cupsfilters.convs --- cups-filters-1.9.0/mime/cupsfilters.convs 2016-03-03 19:52:25.000000000 +0000 +++ cups-filters-1.10.0/mime/cupsfilters.convs 2016-06-24 19:48:21.000000000 +0000 @@ -34,13 +34,13 @@ # CUPS file conversion rules for PostScript input when we are working with # the PDF printing workflow. General PostScript input should be converted to -# PDF, so that pdftopdf is doing the page management on PDF data and the +# PDF (see cupsfilters-ghostscript.convs as this is done by Ghostscript), so +# that pdftopdf is doing the page management on PDF data and the # renderer/driver part renders PDF. An exception is made for PostScript # coming from the Adobe Reader. As this PostScript cannot be converted to PDF # if it comes from an encrypted PDF file, we simply override pstopdf and the # PDF workflow. -application/postscript application/pdf 0 pstopdf application/vnd.adobe-reader-postscript application/vnd.cups-postscript 66 pstops application/pdf application/vnd.cups-pdf 66 pdftopdf diff -Nru cups-filters-1.9.0/mime/cupsfilters-ghostscript.convs cups-filters-1.10.0/mime/cupsfilters-ghostscript.convs --- cups-filters-1.9.0/mime/cupsfilters-ghostscript.convs 2016-03-03 19:52:25.000000000 +0000 +++ cups-filters-1.10.0/mime/cupsfilters-ghostscript.convs 2016-06-28 21:47:45.000000000 +0000 @@ -15,5 +15,6 @@ # Ghostscript-based filters... # +application/postscript application/pdf 0 gstopdf application/vnd.cups-pdf application/vnd.cups-raster 99 gstoraster application/vnd.cups-postscript application/vnd.cups-raster 175 gstoraster diff -Nru cups-filters-1.9.0/NEWS cups-filters-1.10.0/NEWS --- cups-filters-1.9.0/NEWS 2016-06-09 14:11:43.000000000 +0000 +++ cups-filters-1.10.0/NEWS 2016-07-15 22:46:06.000000000 +0000 @@ -1,5 +1,59 @@ -NEWS - OpenPrinting CUPS Filters v1.9.0 - 2016-06-09 ----------------------------------------------------- +NEWS - OpenPrinting CUPS Filters v1.10.0 - 2016-07-15 +----------------------------------------------------- + +CHANGES IN V1.10.0 + + - texttotext: Added new filter for text-only printers written + in C, to use the CUPS library to access the print queue's + PPD file, with a lot of options to fit practically all + printer models amd paper sizes, support for CUPS' page + management options, and support for configuring the print + queue and controlling the options by the PPD file. The PPD + is now generated on-the-fly by cupsfilters.drv. + - textonly: Removed the old script-based filter and its PPD + for text-only printers. + - rastertops: Added new filter to turn PWG Raster into + PostScript, in preparation for MuPDF support. Thanks to + Pranjal Bhor for contributing this as part of his Google + Summer of Code project. + - gstoraster, gstopxl, gstopdf, pstopdf: Integrated + functionality of script-based filters pstopdf and gstopxl + into gstoraster filter as script-based filters cannot access + the print queue's PPD file with current CUPS due to change + of PPD file permissions. To make gstoraster always produce + the correct output format (CUPS/PWG Raster, PDF, PCL-XL) it + is called via new wrapper scripts (gstopdf, gstopxl) which + set an environment variable telling the format. The old + filter scripts got removed. + - imagetops, texttops: Do not use $0 in the wrapper scripts, + when CUPS calls filters, it passes the queue name as $0, not + path and name of the called filter. + - cups-browsed: When creating local queues for discovered IPP + network printers always create PPD files and if the + information supplied by the printer via IPP is insufficient + use information from the DNS-SD entry or default values + suitable for most printers. Use System V interface scripts + only on explicit request in cups-browsed.conf. This change + is to address the fact that System V interface script + support is removed from CUPS 2.2.x and later for security + reasons. + - pstopdf: Make the filter only get installed if Ghostscript is + present and also moved its conversion rules into the + cupsfilters-ghostscript.convs file. + - cups-browsed: Fixed crash when trying to get debugg logging + both to the terminal and into a file. + - libcupsfilters: Fixed crash of pdftoraster when the color + space is an RGB space (3 colors) with 1 bit color + depth. Here we need to add one bit to the pixels (to get 4 + bits per pixel) to align the pixels with the bytes. + - cups-browsed: From cups-browsed.service removed the unneeded + "Wants=cups.service" as we have "Requires=cups.service" + (Debian bug #827455, #827457). + - foomatic-rip: Updated man page for removed page logging + facility. + - pdftops: Also added Dell to the list of manufacturers whose + printers need Poppler's PostScript to work around their + PostScript interpreter bugs (Debian bug #827040). CHANGES IN V1.9.0 diff -Nru cups-filters-1.9.0/ppd/pxlcolor.ppd cups-filters-1.10.0/ppd/pxlcolor.ppd --- cups-filters-1.9.0/ppd/pxlcolor.ppd 2016-01-19 22:12:43.000000000 +0000 +++ cups-filters-1.10.0/ppd/pxlcolor.ppd 2016-06-28 21:47:20.000000000 +0000 @@ -123,20 +123,20 @@ *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: Default *InputSlot Default/Default: "<>setpagedevice" -*InputSlot Auto/Automatically Select: "<>setpagedevice" -*InputSlot MultiPurpose/Tray 1: "<>setpagedevice" -*InputSlot Upper/Tray 2: "<>setpagedevice" -*InputSlot Lower/Tray 3: "<>setpagedevice" -*InputSlot LargeCapacity/Tray 4: "<>setpagedevice" -*InputSlot Manual/Manual Feed: "<>setpagedevice" -*InputSlot Envelope/Envelope Feed: "<>setpagedevice" +*InputSlot Auto/Automatically Select: "<>setpagedevice" +*InputSlot MultiPurpose/Tray 1: "<>setpagedevice" +*InputSlot Upper/Tray 2: "<>setpagedevice" +*InputSlot Lower/Tray 3: "<>setpagedevice" +*InputSlot LargeCapacity/Tray 4: "<>setpagedevice" +*InputSlot Manual/Manual Feed: "<>setpagedevice" +*InputSlot Envelope/Envelope Feed: "<>setpagedevice" *CloseUI: *InputSlot *OpenUI *ColorModel/Output Mode: PickOne *OrderDependency: 10 AnySetup *ColorModel *DefaultColorModel: RGB -*ColorModel RGB/Color: "<>setpagedevice" -*ColorModel Gray/Grayscale: "<>setpagedevice" +*ColorModel RGB/Color: "<>setpagedevice" +*ColorModel Gray/Grayscale: "<>setpagedevice" *CloseUI: *ColorModel *OpenUI *Resolution/Output Resolution: PickOne diff -Nru cups-filters-1.9.0/ppd/pxlmono.ppd cups-filters-1.10.0/ppd/pxlmono.ppd --- cups-filters-1.9.0/ppd/pxlmono.ppd 2016-01-19 22:12:43.000000000 +0000 +++ cups-filters-1.10.0/ppd/pxlmono.ppd 2016-06-28 21:47:20.000000000 +0000 @@ -123,13 +123,13 @@ *OrderDependency: 10 AnySetup *InputSlot *DefaultInputSlot: Default *InputSlot Default/Default: "<>setpagedevice" -*InputSlot Auto/Automatically Select: "<>setpagedevice" -*InputSlot MultiPurpose/Tray 1: "<>setpagedevice" -*InputSlot Upper/Tray 2: "<>setpagedevice" -*InputSlot Lower/Tray 3: "<>setpagedevice" -*InputSlot LargeCapacity/Tray 4: "<>setpagedevice" -*InputSlot Manual/Manual Feed: "<>setpagedevice" -*InputSlot Envelope/Envelope Feed: "<>setpagedevice" +*InputSlot Auto/Automatically Select: "<>setpagedevice" +*InputSlot MultiPurpose/Tray 1: "<>setpagedevice" +*InputSlot Upper/Tray 2: "<>setpagedevice" +*InputSlot Lower/Tray 3: "<>setpagedevice" +*InputSlot LargeCapacity/Tray 4: "<>setpagedevice" +*InputSlot Manual/Manual Feed: "<>setpagedevice" +*InputSlot Envelope/Envelope Feed: "<>setpagedevice" *CloseUI: *InputSlot *OpenUI *Resolution/Output Resolution: PickOne diff -Nru cups-filters-1.9.0/ppd/textonly.ppd cups-filters-1.10.0/ppd/textonly.ppd --- cups-filters-1.9.0/ppd/textonly.ppd 2015-06-26 15:45:26.000000000 +0000 +++ cups-filters-1.10.0/ppd/textonly.ppd 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -*PPD-Adobe: "4.3" -*% -*% Text-only printer definition -*% -*FormatVersion: "4.3" -*FileVersion: "1.1" -*LanguageVersion: English -*LanguageEncoding: ISOLatin1 -*PCFileName: "TEXTONLY.PPD" -*Manufacturer: "Generic" -*Product: "(Generic)" -*cupsVersion: 1.0 -*cupsManualCopies: True -*cupsModelNumber: 2 -*cupsFilter: "text/plain 0 textonly" -*cupsFilter2: "text/plain text/plain 0 textonly" -*ModelName: "Generic text-only printer" -*ShortNickName: "Generic text-only printer" -*NickName: "Generic text-only printer" -*PSVersion: "(2017.000) 0" -*LanguageLevel: "2" -*ColorDevice: False -*DefaultColorSpace: Gray -*FileSystem: False -*Throughput: "8" -*LandscapeOrientation: Plus90 -*VariablePaperSize: False -*TTRasterizer: Type42 -*DefaultImageableArea: Letter -*ImageableArea Letter/US Letter: "18 36 594 756" -*DefaultPaperDimension: Letter -*PaperDimension Letter/Letter: "612 792" -*OpenUI *PageSize/Media Size: PickOne -*OrderDependency: 10 AnySetup *PageSize -*DefaultPageSize: Letter -*PageSize Letter/Letter: "<>setpagedevice" -*CloseUI: *PageSize -*OpenUI *PageRegion: PickOne -*OrderDependency: 10 AnySetup *PageRegion -*DefaultPageRegion: Letter -*PageRegion Letter/Letter: "<>setpagedevice" -*CloseUI: *PageRegion - -*OpenUI *SendFF: Boolean -*DefaultSendFF: False -*SendFF True/True: "" -*SendFF False/False: "" -*CloseUI: *SendFF diff -Nru cups-filters-1.9.0/README cups-filters-1.10.0/README --- cups-filters-1.9.0/README 2016-06-09 14:12:05.000000000 +0000 +++ cups-filters-1.10.0/README 2016-07-15 22:46:25.000000000 +0000 @@ -1,5 +1,5 @@ -README - OpenPrinting CUPS Filters v1.9.0 - 2016-06-09 ------------------------------------------------------- +README - OpenPrinting CUPS Filters v1.10.0 - 2016-07-15 +------------------------------------------------------- Looking for compile instructions? Read the file "INSTALL.txt" instead... @@ -1270,6 +1270,175 @@ License: GNU General Public License version 3 or any newer version +TEXTTOTEXT +========== + +This is a special filter for text-only printers (e. g. line printers, +daisy-wheel printers, POS printers, ...) or for using printers in +their text mode (e. g. dot-matrix printers or otherwise unsupported +printers). It takes plain text (UTF-8-encoded as this is standard with +CUPS) and not PDF as input. + +The texttotext filter replaces the former textonly filter. + +It is for the following use cases: + +- Using text-only printers, like line printers or daisy-wheel + printers. Note that only text can get printed in the way the printer + is designed. No support for graphics printing tricks like ASCII art + or printing pixels with the period character. + +- Fast and less resource-consuming text printing with dot-matrix + printers using the printer's text mode instead of converting the + text to PDF and printing the PDF in the printer's graphics mode, + which is slow, loud, and consumes much more ink. + +- POS printing. POS printers often print only text on roll paper. This + filter has a non-paginated mode which prints continuously, ignoring + page height definitions. + +The filter has the following features: + +- Conversion of UTF-8 to most printer's encodings. + +- To each page size a number of lines and columns is assigned, after that + you only need to select the size of the paper in use. + +- At end of page you can optionally send a Form Feed or let the filter fill + up the rest of the page with blank lines. + +- New lines can be initiated by Line Feed, Carriage Return, or both. + +- Adjustable margins. + +- Adjustable width for tab stops. + +- Pagination can be turned off for roll paper or continuous printing in + general. + +- Wrapping or truncation of long lines + +- Support for most of CUPS' page management options (only with + pagination turned on): page-ranges, page-set, output-order, collate, + multiple copies. + +Setting up the printer + +In the printer setup tool select the "Generic Text-Only Printer" (with +lpadmin use "-m drv:///cupsfilters.drv/textonly.ppd"), then under the +"Installable Options" adjust the following: + +- Which page sizes to use and how many lines and columns the printer + is capable to print on them. The default setting for lines and + columns assume 6 lines per inch and 10 columns per inch. + +- Whether to send a Form Feed character after each page. Sending a + Form Feed is highly recommended to get the content of each page + exactly onto the desired sheet. If the printer does not support Form + Feed characters, turn them off and make sure that you have adjusted + the correct number of lines for each page size, as the printer is + advancing pages by filling up the rest of the paper with blank + lines. + +- How the printer advancs to a new line. Most printers require both + Crriage Return and Line Feed (the DOS/Windows standard), but some + would also work with either Carriage Return or Line Feed. + +- The printer's encoding: Most text and dot-matrix printers (usually + older devices) do not understand CUPS' standard encoding UTF-8 but + instead, the use a simpler encoding (where each character is + represented by one byte). ASCII should always work, but does not + support letters with accents. So check the printer's manual what is + supported. You cannot only use the encodings suggested by the PPD + file, but any one-byte-per-character encoding which the "iconv" + utility supports (see "iconv --list" for a list of encodings). + +Also note that text-only and dot-matrix printers often have a DIP +switch block which allows for some hardware configuration, like +newline characters, length of page, input encoding, ... + +Options of the texttotext filter: + +To be usually used when sending a job: + +PageSize: Paper format to be used. Make sure that the number of lines +and columns printable on each paper size are correctly adjusted with +the appropriate setup option. The page height is ignore when +pagination is turned off. Possible values: Letter, Legal, Tabloid, +Ledger, A4, A3, FanFoldGerman, FanFoldGermanLegal, 11x14Rotated, +LegalRotated, Custom1, Custom2, Custom3 + +OverLongLines: What to do with lines longer that the width of the +page: Truncate: Simply drop the extra characters; WrapAtWidth +(default): Continue the line in the next line on the paper; WordWrap: +As WrapAtWidth, but do not cut in the middle of a word. + +TabWidth: Width of a tab stop. Can be any positive number. + +Pagination: On: Text is divided in pages depending on the page size +selection, with each page having the user-selected margins, +recommended for sheet paper; Off: Text is printed continuously, +ignoring page breaks and the height and upper and lower margins of the +destination page size, recommended for roll paper, POS, long lists on +continuous paper, ... Note that with pagination turned off, multiple +copies, collate, page-ranges, page-set, and output-order are not +supported and therefore ignored. + +page-left, page-right, page-top, page-bottom: Width of the margins +left blank, counted in lines or columns. Top and bottom margins are +ignored when pagination is turned off. Can be any positive number or +zero for no margin. + +To be usually used when setting up the printer: + +PrinterEncoding: The printer's character encoding (code page). Any +encoding which the iconv utility can generate (see "iconv --list") and +which uses only one byte per character can be used. This should +support practically any printer which is capable of printing +text. ASCII is the default setting. See the printer's manual for the +correct encoding to use. + +NewlineCharacters: The characters sent on the end of a line, LineFeed +(LF), Crriage Return (CR), or both Carriage Return and Line Feed +(CRLF). Default is CRLF as most printers require this. + +SendFF: On: Send a Form Feed after each page, so that printer changes +to the next sheet. Off: Do not send Form Feeds. To advance to the next +page blank lines are printed to fill up the page (requires the number +of limes for the selected page size correctly being set). When +pagination is off, Form Feeds are never sent. + +LetterAvailable, LegalAvailable, TabloidAvailable, LedgerAvailable, +A4Available, A3Available, FanFoldGermanAvailable, +FanFoldGermanLegalAvailable, 11x14RotatedAvailable, +LegalRotatedAvailable, Custom1Available, Custom2Available, +Custom3Available: On: Paper of this size is available; Off: This paper +size is not available. + +LetterNumLines, LegalNumLines, TabloidNumLines, LedgerNumLines, +A4NumLines, A3NumLines, FanFoldGermanNumLines, +FanFoldGermanLegalNumLines, 11x14RotatedNumLines, +LegalRotatedNumLines, Custom1NumLines, Custom2NumLines, +Custom3NumLines: Maximum number of text lines fitting on the paper +size. Default value is selected assuming 6 lines per inch. Can be any +positive number. + +LetterNumColumns, LegalNumColumns, TabloidNumColumns, +LedgerNumColumns, A4NumColumns, A3NumColumns, FanFoldGermanNumColumns, +FanFoldGermanLegalNumColumns, 11x14RotatedNumColumns, +LegalRotatedNumColumns, Custom1NumColumns, Custom2NumColumns, +Custom3NumColumns: Maximum number of columns (characters) fitting on +the paper size. Default value is selected assuming 10 characters per +inch. Can be any positive number. + +Standard CUPS options supported: + +page-ranges, page set, output-order, collate + +Note that these options and multiple copies are ignored when +pagination is turned off. + + BEH - Backend Error Handler wrapper backend =========================================== diff -Nru cups-filters-1.9.0/utils/cups-browsed.c cups-filters-1.10.0/utils/cups-browsed.c --- cups-filters-1.9.0/utils/cups-browsed.c 2016-05-24 02:29:49.000000000 +0000 +++ cups-filters-1.10.0/utils/cups-browsed.c 2016-06-29 13:01:58.000000000 +0000 @@ -262,9 +262,8 @@ /* Ways how to set up a queue for an IPP network printer */ typedef enum ipp_queue_type_e { - PPD_AUTO, - PPD_ONLY, - PPD_NEVER + PPD_YES, + PPD_NO } ipp_queue_type_t; /* Ways how we can do load balancing on remote queues with the same name */ @@ -334,7 +333,7 @@ static ip_based_uris_t IPBasedDeviceURIs = IP_BASED_URIS_NO; static unsigned int CreateRemoteRawPrinterQueues = 0; static unsigned int CreateIPPPrinterQueues = 0; -static ipp_queue_type_t IPPPrinterQueueType = PPD_AUTO; +static ipp_queue_type_t IPPPrinterQueueType = PPD_YES; static load_balancing_type_t LoadBalancingType = QUEUE_ON_CLIENT; static const char *DefaultOptions = NULL; static int in_shutdown = 0; @@ -371,7 +370,9 @@ to set up local queues for non-CUPS printer broadcasts that is disabled in create_local_queue() for older CUPS <= 1.5.4. Accordingly the following function is also disabled here for CUPS < 1.6. */ -char *_ppdCreateFromIPP(char *buffer, size_t bufsize, ipp_t *response); +char *_ppdCreateFromIPP(char *buffer, size_t bufsize, + ipp_t *response, const char *make_model, + const char *pdl, int color, int duplex); #endif /* HAVE_CUPS_1_6 */ /* @@ -499,6 +500,8 @@ vfprintf(stderr, format, arglist); fflush(stderr); } + va_end(arglist); + va_start(arglist, format); if (debug_logfile) { fprintf(lfp, "%s ", buf); vfprintf(lfp, format, arglist); @@ -2666,6 +2669,7 @@ int color, int duplex, const char *make_model, + const char *make_model_no_spaces, int is_cups_queue) { remote_printer_t *p; @@ -2817,8 +2821,10 @@ p->num_duplicates = 0; p->model = NULL; - /* Request printer properties and try to generate a PPD file for the - printer (mainly IPP Everywhere printers) */ + /* Request printer properties via IPP to generate a PPD file for the + printer (mainly IPP Everywhere printers) + If we work with Systen V interface scripts use this info to set + option defaults. */ uri_status = httpSeparateURI(HTTP_URI_CODING_ALL, uri, scheme, sizeof(scheme), userpass, sizeof(userpass), @@ -2852,13 +2858,20 @@ } } - if (IPPPrinterQueueType == PPD_NEVER || !_ppdCreateFromIPP(buffer, sizeof(buffer), response)) { - if (IPPPrinterQueueType == PPD_AUTO || IPPPrinterQueueType == PPD_ONLY) { - debug_printf("Unable to create PPD file: %s\n", strerror(errno)); - if (IPPPrinterQueueType == PPD_ONLY) - goto fail; + if (IPPPrinterQueueType == PPD_YES) { + if (!_ppdCreateFromIPP(buffer, sizeof(buffer), response, make_model, + pdl, color, duplex)) { + if (errno != 0) + debug_printf("Unable to create PPD file: %s\n", strerror(errno)); + else + debug_printf("Unable to create PPD file: Printer has no supported PDL.\n"); + goto fail; + } else { + debug_printf("Created temporary IPP Everywhere PPD: %s\n", buffer); + p->ppd = strdup(buffer); + p->ifscript = NULL; } - + } else if (IPPPrinterQueueType == PPD_NO) { p->ppd = NULL; /* Find default page size of the printer */ @@ -2966,7 +2979,7 @@ p->num_options = cupsAddOption("output-format-default", strdup(pdl), p->num_options, &(p->options)); p->num_options = cupsAddOption("make-and-model-default", - strdup(make_model), + strdup(make_model_no_spaces), p->num_options, &(p->options)); if ((cups_serverbin = getenv("CUPS_SERVERBIN")) == NULL) @@ -3005,10 +3018,6 @@ close(fd); p->ifscript = strdup(tempfile); - } else { - debug_printf("Created temporary IPP Everywhere PPD: %s\n", buffer); - p->ppd = strdup(buffer); - p->ifscript = NULL; } /*p->model = "drv:///sample.drv/laserjet.ppd"; @@ -3650,8 +3659,9 @@ void *txt) { char uri[HTTP_MAX_URI]; - char *remote_queue = NULL, *remote_host = NULL, *pdl = NULL; - int color = 0, duplex = 0; + char *remote_queue = NULL, *remote_host = NULL, *pdl = NULL, + *make_model = NULL; + int color = 1, duplex = 1; #ifdef HAVE_AVAHI char *fields[] = { "product", "usb_MDL", "ty", NULL }, **f; AvahiStringList *entry = NULL; @@ -3745,7 +3755,12 @@ avahi_string_list_get_pair(entry, &key, &value, NULL); if (key && value && !strcasecmp(key, *f) && strlen(value) >= 3) { free (remote_queue); - remote_queue = remove_bad_chars(value, 0); + if (!strcasecmp(key, "product")) { + make_model = strdup(value + 1); + make_model[strlen(make_model) - 1] = '\0'; + } else + make_model = strdup(value); + remote_queue = remove_bad_chars(make_model, 0); break; } } @@ -3827,6 +3842,7 @@ free (remote_host); free (pdl); free (remote_queue); + free (make_model); return NULL; } } @@ -3840,6 +3856,7 @@ free (remote_host); free (pdl); free (remote_queue); + free (make_model); return NULL; } @@ -3859,6 +3876,7 @@ free (backup_queue_name); free (pdl); free (remote_queue); + free (make_model); if (p) { return p; } else { @@ -3942,13 +3960,14 @@ discovered printer */ p = create_local_queue (local_queue_name, uri, remote_host, ip, name ? name : "", type, domain, pdl, color, duplex, - remote_queue, is_cups_queue); + make_model, remote_queue, is_cups_queue); } free (backup_queue_name); free (remote_host); free (pdl); free (remote_queue); + free (make_model); if (p) debug_printf("Bonjour IDs: Service name: \"%s\", " @@ -5460,7 +5479,7 @@ strncpy(line, value, sizeof(line))) || cupsFileGetConf(fp, line, sizeof(line), &value, &linenum)) { if (linenum < 0) { - /* We are still readin options from the command line ("-o ..."), + /* We are still reading options from the command line ("-o ..."), separate key (line) and value (value) */ value = line; while (*value && !isspace(*value) && !(*value == '=')) @@ -5711,11 +5730,13 @@ CreateIPPPrinterQueues = 0; } else if (!strcasecmp(line, "IPPPrinterQueueType") && value) { if (!strncasecmp(value, "Auto", 4)) - IPPPrinterQueueType = PPD_AUTO; + IPPPrinterQueueType = PPD_YES; else if (!strncasecmp(value, "PPD", 3)) - IPPPrinterQueueType = PPD_ONLY; + IPPPrinterQueueType = PPD_YES; else if (!strncasecmp(value, "NoPPD", 5)) - IPPPrinterQueueType = PPD_NEVER; + IPPPrinterQueueType = PPD_NO; + else if (!strncasecmp(value, "Interface", 9)) + IPPPrinterQueueType = PPD_NO; } else if (!strcasecmp(line, "LoadBalancing") && value) { if (!strncasecmp(value, "QueueOnClient", 13)) LoadBalancingType = QUEUE_ON_CLIENT; @@ -5864,7 +5885,7 @@ /* Queue found, add to our list */ p = create_local_queue (name, printer->device_uri, - "", "", "", "", "", NULL, 0, 0, NULL, 1); + "", "", "", "", "", NULL, 0, 0, NULL, NULL, 1); if (p) { /* Mark as unconfirmed, if no Avahi report of this queue appears in a certain time frame, we will remove the queue */ @@ -6692,7 +6713,11 @@ char * /* O - PPD filename or NULL on error */ _ppdCreateFromIPP(char *buffer, /* I - Filename buffer */ size_t bufsize, /* I - Size of filename buffer */ - ipp_t *response) /* I - Get-Printer-Attributes response */ + ipp_t *response, /* I - Get-Printer-Attributes response */ + const char *make_model, /* I - Make and model from DNS-SD */ + const char *pdl, /* I - List of PDLs from DNS-SD */ + int color, /* I - Color printer? (from DNS-SD) */ + int duplex) /* I - Duplex printer? (from DNS-SD) */ { cups_file_t *fp; /* PPD file */ ipp_attribute_t *attr, /* xxx-supported */ @@ -6713,7 +6738,10 @@ int xres, yres; /* Resolution values */ struct lconv *loc = localeconv(); /* Locale data */ - + char filter_path[1024]; + /* Path to filter executable */ + const char *cups_serverbin;/* CUPS_SERVERBIN environment + variable */ /* * Range check input... @@ -6748,6 +6776,8 @@ if ((attr = ippFindAttribute(response, "printer-make-and-model", IPP_TAG_TEXT)) != NULL) strlcpy(make, ippGetString(attr, 0, NULL), sizeof(make)); + else if (make_model && make_model[0] != '\0') + strlcpy(make, make_model, sizeof(make)); else strlcpy(make, "Unknown Printer", sizeof(make)); @@ -6763,12 +6793,12 @@ model = make; cupsFilePrintf(fp, "*Manufacturer: \"%s\"\n", make); - cupsFilePrintf(fp, "*ModelName: \"%s\"\n", model); - cupsFilePrintf(fp, "*Product: \"(%s)\"\n", model); - cupsFilePrintf(fp, "*NickName: \"%s\"\n", model); - cupsFilePrintf(fp, "*ShortNickName: \"%s\"\n", model); + cupsFilePrintf(fp, "*ModelName: \"%s %s\"\n", make, model); + cupsFilePrintf(fp, "*Product: \"(%s %s)\"\n", make, model); + cupsFilePrintf(fp, "*NickName: \"%s %s\"\n", make, model); + cupsFilePrintf(fp, "*ShortNickName: \"%s %s\"\n", make, model); - if ((attr = ippFindAttribute(response, "color-supported", IPP_TAG_BOOLEAN)) != NULL && ippGetBoolean(attr, 0)) + if (((attr = ippFindAttribute(response, "color-supported", IPP_TAG_BOOLEAN)) != NULL && ippGetBoolean(attr, 0)) || color) cupsFilePuts(fp, "*ColorDevice: True\n"); else cupsFilePuts(fp, "*ColorDevice: False\n"); @@ -6781,38 +6811,64 @@ * Filters... */ - if ((attr = ippFindAttribute(response, "document-format-supported", IPP_TAG_MIMETYPE)) != NULL) + int formatfound = 0; + if (((attr = ippFindAttribute(response, "document-format-supported", IPP_TAG_MIMETYPE)) != NULL) || (pdl && pdl[0] != '\0')) { - int formatfound = 0; - - for (i = 0, count = ippGetCount(attr); i < count; i ++) + const char *format = pdl; + i = 0; + count = ippGetCount(attr); + while ((attr && i < count) || /* Go through formats in attribute */ + (!attr && pdl && pdl[0] != '\0' && format[0] != '\0')) + /* Go through formats in pdl string (from DNS-SD record) */ { - const char *format = ippGetString(attr, i, NULL); - /* PDL */ -#if 0 - if (!_cups_strcasecmp(format, "application/pdf")) - cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 10 -\"\n"); - else if (!_cups_strcasecmp(format, "application/postscript")) - cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-postscript application/postscript 10 -\"\n"); - else if (_cups_strcasecmp(format, "application/octet-stream") && _cups_strcasecmp(format, "application/vnd.hp-pcl") && _cups_strcasecmp(format, "text/plain")) - cupsFilePrintf(fp, "*cupsFilter2: \"%s %s 10 -\"\n", format, format); -#endif - /* For now cups-filters only supports these PPD files with PWG Raster - and PostScript, so create a PPD only for these formats */ - if (!_cups_strcasecmp(format, "image/pwg-raster")) { - cupsFilePuts(fp, "*cupsFilter2: \"image/pwg-raster image/pwg-raster 10 -\"\n"); + /* Pick next format from attribute */ + if (attr) format = ippGetString(attr, i, NULL); + if (!_cups_strncasecmp(format, "application/pdf", 15)) { + cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/pdf 0 -\"\n"); + formatfound = 1; + } else if (!_cups_strncasecmp(format, "application/postscript", 22)) { + /* We put a high cost factor here as if a printer supports also + another format, like PCL, we prefer it, as many PostScript + printers have bugs in their PostScript interpreters */ + cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-postscript application/postscript 100 -\"\n"); formatfound = 1; - } else if (!_cups_strcasecmp(format, "application/postscript")) { - cupsFilePuts(fp, "*cupsFilter2: \"application/vnd.cups-postscript application/postscript 10 -\"\n"); + } else if (!_cups_strncasecmp(format, "application/vnd.hp-pclxl", 24)) { + /* Check whether the gstopxl filter and ghostscript is installed, + otherwise ignore the PCL-XL support of the printer */ + if ((cups_serverbin = getenv("CUPS_SERVERBIN")) == NULL) + cups_serverbin = CUPS_SERVERBIN; + snprintf(filter_path, sizeof(filter_path), "%s/filter/gstopxl", + cups_serverbin); + if (access(filter_path, X_OK) == 0 && + access(CUPS_GHOSTSCRIPT, X_OK) == 0) { + cupsFilePrintf(fp, "*cupsFilter2: \"application/vnd.cups-pdf application/vnd.hp-pclxl 10 gstopxl\"\n"); + formatfound = 1; + } + } else if (!_cups_strncasecmp(format, "application/vnd.hp-pcl", 22)) { + cupsFilePrintf(fp, "*cupsFilter2: \"application/vnd.cups-raster application/vnd.hp-pcl 10 rastertopclx\"\n"); + formatfound = 1; + } else if (!_cups_strncasecmp(format, "image/pwg-raster", 16)) { + cupsFilePuts(fp, "*cupsFilter2: \"image/pwg-raster image/pwg-raster 0 -\"\n"); formatfound = 1; } - } - if (formatfound == 0) { - debug_printf("No data format suitable for PPD auto-generation supported by the printer, not generating PPD\n"); - unlink(buffer); - return(NULL); + if (attr) + /* Next format in attribute */ + i ++; + else { + /* Find the next format in the string pdl, if there is none left, + go to the terminating zero */ + while (!isspace(*format) && *format != ',' && *format != '\0') + format ++; + while ((isspace(*format) || *format == ',') && *format != '\0') + format ++; + } } } + if (formatfound == 0) { + debug_printf("No data format suitable for PPD auto-generation supported by the printer, not generating PPD\n"); + unlink(buffer); + return(NULL); + } /* * PageSize/PageRegion/ImageableArea/PaperDimension @@ -6879,11 +6935,8 @@ cupsFilePrintf(fp, "*OpenUI *PageSize: PickOne\n" "*OrderDependency: 10 AnySetup *PageSize\n" "*DefaultPageSize: %s\n", ppdname); - if (ippGetCount(attr) == 0) { - debug_printf("No page sizes reported as supported by the printer, not generating PPD\n"); - unlink(buffer); - return(NULL); - } + if (ippGetCount(attr) == 0) + goto default_page_sizes; for (i = 0, count = ippGetCount(attr); i < count; i ++) { media_size = ippGetCollection(attr, i); @@ -6960,9 +7013,71 @@ } } } else { - debug_printf("No page sizes reported as supported by the printer, not generating PPD\n"); - unlink(buffer); - return(NULL); + default_page_sizes: + cupsFilePrintf(fp, + "*%% Printer did not supply page size info via IPP, using defaults\n" + "*OpenUI *PageSize: PickOne\n" + "*OrderDependency: 10 AnySetup *PageSize\n" + "*DefaultPageSize: Letter\n" + "*PageSize Letter/US Letter: \"<>setpagedevice\"\n" + "*PageSize Legal/US Legal: \"<>setpagedevice\"\n" + "*PageSize Executive/Executive: \"<>setpagedevice\"\n" + "*PageSize Tabloid/Tabloid: \"<>setpagedevice\"\n" + "*PageSize A3/A3: \"<>setpagedevice\"\n" + "*PageSize A4/A4: \"<>setpagedevice\"\n" + "*PageSize A5/A5: \"<>setpagedevice\"\n" + "*PageSize B5/JIS B5: \"<>setpagedevice\"\n" + "*PageSize EnvISOB5/Envelope B5: \"<>setpagedevice\"\n" + "*PageSize Env10/Envelope #10 : \"<>setpagedevice\"\n" + "*PageSize EnvC5/Envelope C5: \"<>setpagedevice\"\n" + "*PageSize EnvDL/Envelope DL: \"<>setpagedevice\"\n" + "*PageSize EnvMonarch/Envelope Monarch: \"<>setpagedevice\"\n" + "*CloseUI: *PageSize\n" + "*OpenUI *PageRegion: PickOne\n" + "*OrderDependency: 10 AnySetup *PageRegion\n" + "*DefaultPageRegion: Letter\n" + "*PageRegion Letter/US Letter: \"<>setpagedevice\"\n" + "*PageRegion Legal/US Legal: \"<>setpagedevice\"\n" + "*PageRegion Executive/Executive: \"<>setpagedevice\"\n" + "*PageRegion Tabloid/Tabloid: \"<>setpagedevice\"\n" + "*PageRegion A3/A3: \"<>setpagedevice\"\n" + "*PageRegion A4/A4: \"<>setpagedevice\"\n" + "*PageRegion A5/A5: \"<>setpagedevice\"\n" + "*PageRegion B5/JIS B5: \"<>setpagedevice\"\n" + "*PageRegion EnvISOB5/Envelope B5: \"<>setpagedevice\"\n" + "*PageRegion Env10/Envelope #10 : \"<>setpagedevice\"\n" + "*PageRegion EnvC5/Envelope C5: \"<>setpagedevice\"\n" + "*PageRegion EnvDL/Envelope DL: \"<>setpagedevice\"\n" + "*PageRegion EnvMonarch/Envelope Monarch: \"<>setpagedevice\"\n" + "*CloseUI: *PageSize\n" + "*DefaultImageableArea: Letter\n" + "*ImageableArea Letter/US Letter: \"18 12 594 780\"\n" + "*ImageableArea Legal/US Legal: \"18 12 594 996\"\n" + "*ImageableArea Executive/Executive: \"18 12 504 744\"\n" + "*ImageableArea Tabloid/Tabloid: \"18 12 774 1212\"\n" + "*ImageableArea A3/A3: \"18 12 824 1179\"\n" + "*ImageableArea A4/A4: \"18 12 577 830\"\n" + "*ImageableArea A5/A5: \"18 12 402 583\"\n" + "*ImageableArea B5/JIS B5: \"18 12 498 717\"\n" + "*ImageableArea EnvISOB5/Envelope B5: \"18 12 481 697\"\n" + "*ImageableArea Env10/Envelope #10 : \"18 12 279 672\"\n" + "*ImageableArea EnvC5/Envelope C5: \"18 12 441 637\"\n" + "*ImageableArea EnvDL/Envelope DL: \"18 12 294 612\"\n" + "*ImageableArea EnvMonarch/Envelope Monarch: \"18 12 261 528\"\n" + "*DefaultPaperDimension: Letter\n" + "*PaperDimension Letter/US Letter: \"612 792\"\n" + "*PaperDimension Legal/US Legal: \"612 1008\"\n" + "*PaperDimension Executive/Executive: \"522 756\"\n" + "*PaperDimension Tabloid/Tabloid: \"792 1224\"\n" + "*PaperDimension A3/A3: \"842 1191\"\n" + "*PaperDimension A4/A4: \"595 842\"\n" + "*PaperDimension A5/A5: \"420 595\"\n" + "*PaperDimension B5/JIS B5: \"516 729\"\n" + "*PaperDimension EnvISOB5/Envelope B5: \"499 709\"\n" + "*PaperDimension Env10/Envelope #10 : \"297 684\"\n" + "*PaperDimension EnvC5/Envelope C5: \"459 649\"\n" + "*PaperDimension EnvDL/Envelope DL: \"312 624\"\n" + "*PaperDimension EnvMonarch/Envelope Monarch: \"279 540\"\n"); } /* @@ -7105,6 +7220,8 @@ if ((attr = ippFindAttribute(response, "pwg-raster-document-type-supported", IPP_TAG_KEYWORD)) == NULL) attr = ippFindAttribute(response, "print-color-mode-supported", IPP_TAG_KEYWORD); + cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n" + "*OrderDependency: 10 AnySetup *ColorModel\n"); if (attr && ippGetCount(attr) > 0) { const char *default_color = NULL; /* Default */ @@ -7116,30 +7233,21 @@ if (!strcmp(keyword, "black_1") || !strcmp(keyword, "bi-level") || !strcmp(keyword, "process-bi-level")) { - if (!default_color) - cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n" - "*OrderDependency: 10 AnySetup *ColorModel\n"); - cupsFilePuts(fp, "*ColorModel FastGray/Fast Grayscale: \"<>setpagedevice\"\n"); + cupsFilePuts(fp, "*ColorModel FastGray/Fast Grayscale: \"<>setpagedevice\"\n"); if (!default_color) default_color = "FastGray"; } else if (!strcmp(keyword, "sgray_8") || !strcmp(keyword, "monochrome") || !strcmp(keyword, "process-monochrome")) { - if (!default_color) - cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n" - "*OrderDependency: 10 AnySetup *ColorModel\n"); - cupsFilePuts(fp, "*ColorModel Gray/Grayscale: \"<>setpagedevice\"\n"); + cupsFilePuts(fp, "*ColorModel Gray/Grayscale: \"<>setpagedevice\"\n"); if (!default_color || !strcmp(default_color, "FastGray")) default_color = "Gray"; } else if (!strcmp(keyword, "srgb_8") || !strcmp(keyword, "color")) { - if (!default_color) - cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n" - "*OrderDependency: 10 AnySetup *ColorModel\n"); - cupsFilePuts(fp, "*ColorModel RGB/Color: \"<>setpagedevice\"\n"); + cupsFilePuts(fp, "*ColorModel RGB/Color: \"<>setpagedevice\"\n"); default_color = "RGB"; } @@ -7148,15 +7256,23 @@ if (default_color) { cupsFilePrintf(fp, "*DefaultColorModel: %s\n", default_color); - cupsFilePuts(fp, "*CloseUI: *ColorModel\n"); + } + } else { + cupsFilePrintf(fp, "*DefaultColorModel: Gray\n"); + cupsFilePuts(fp, "*ColorModel FastGray/Fast Grayscale: \"<>setpagedevice\"\n"); + cupsFilePuts(fp, "*ColorModel Gray/Grayscale: \"<>setpagedevice\"\n"); + if (color) { + /* Color printer according to DNS-SD (or unknown) */ + cupsFilePuts(fp, "*ColorModel RGB/Color: \"<>setpagedevice\"\n"); } } + cupsFilePuts(fp, "*CloseUI: *ColorModel\n"); /* * Duplex... */ - if ((attr = ippFindAttribute(response, "sides-supported", IPP_TAG_KEYWORD)) != NULL && ippContainsString(attr, "two-sided-long-edge")) + if (((attr = ippFindAttribute(response, "sides-supported", IPP_TAG_KEYWORD)) != NULL && ippContainsString(attr, "two-sided-long-edge")) || duplex) { cupsFilePuts(fp, "*OpenUI *Duplex/2-Sided Printing: PickOne\n" "*OrderDependency: 10 AnySetup *Duplex\n" diff -Nru cups-filters-1.9.0/utils/cups-browsed.conf.5 cups-filters-1.10.0/utils/cups-browsed.conf.5 --- cups-filters-1.9.0/utils/cups-browsed.conf.5 2016-05-24 02:11:05.000000000 +0000 +++ cups-filters-1.10.0/utils/cups-browsed.conf.5 2016-06-28 16:51:49.000000000 +0000 @@ -449,19 +449,18 @@ If cups-browsed is automatically creating print queues for native IPP network printers ("CreateIPPPrinterQueues Yes"), the type of queue to be created can be selected by the "IPPPrinterQueueType" -directive. The "PPD" setting makes always queues with PPD file -being created and no queue if the printer does not supply sufficient -information for creating a PPD. With "NoPPD" the queue is always -created with a System V interface script as filter, also when -creatig a PPD would be possible. "Auto" (the default) lets a PPD -being created if the printer supplies sufficient information and a -System V interface script otherwise. +directive. The "PPD" (default) setting makes queues with PPD file +being created. With "Interface" or "NoPPD" the queue is created with +a System V interface script (Not supported with CUPS 2.2.x or +later). "Auto" is for backward compatibility and also lets queues +with PPD get created. .PP .nf .fam C - IPPPrinterQueueType Auto IPPPrinterQueueType PPD IPPPrinterQueueType NoPPD + IPPPrinterQueueType Interface + IPPPrinterQueueType Auto .fam T .fi diff -Nru cups-filters-1.9.0/utils/cups-browsed.conf.in cups-filters-1.10.0/utils/cups-browsed.conf.in --- cups-filters-1.9.0/utils/cups-browsed.conf.in 2016-05-24 02:10:59.000000000 +0000 +++ cups-filters-1.10.0/utils/cups-browsed.conf.in 2016-06-28 16:51:49.000000000 +0000 @@ -318,17 +318,16 @@ # If cups-browsed is automatically creating print queues for native # IPP network printers ("CreateIPPPrinterQueues Yes"), the type of # queue to be created can be selected by the "IPPPrinterQueueType" -# directive. The "PPD" setting makes always queues with PPD file -# being created and no queue if the printer does not supply sufficient -# information for creating a PPD. With "NoPPD" the queue is always -# created with a System V interface script as filter, also when -# creatig a PPD would be possible. "Auto" (the default) lets a PPD -# being created if the printer supplies sufficient information and a -# System V interface script otherwise. +# directive. The "PPD" (default) setting makes queues with PPD file +# being created. With "Interface" or "NoPPD" the queue is created with +# a System V interface script (Not supported with CUPS 2.2.x or +# later). "Auto" is for backward compatibility and also lets queues +# with PPD get created. -# IPPPrinterQueueType Auto # IPPPrinterQueueType PPD # IPPPrinterQueueType NoPPD +# IPPPrinterQueueType Interface +# IPPPrinterQueueType Auto # The LoadBalancing directive switches between two methods of handling diff -Nru cups-filters-1.9.0/utils/cups-browsed.service cups-filters-1.10.0/utils/cups-browsed.service --- cups-filters-1.9.0/utils/cups-browsed.service 2016-05-23 18:07:46.000000000 +0000 +++ cups-filters-1.10.0/utils/cups-browsed.service 2016-06-16 13:46:43.000000000 +0000 @@ -2,7 +2,7 @@ Description=Make remote CUPS printers available locally Requires=cups.service After=cups.service avahi-daemon.service -Wants=cups.service avahi-daemon.service +Wants=avahi-daemon.service [Service] ExecStart=/usr/sbin/cups-browsed