From: Michael Sweet Date: Tue, 28 Nov 2017 17:59:45 +0000 (-0500) Subject: Add support for finishings-col (Issue #5180) X-Git-Tag: v2.3b1~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f63d6cdafa4052f52fa15e8fc97650c558d45b4;p=thirdparty%2Fcups.git Add support for finishings-col (Issue #5180) - cups/ppd-cache.c: Look for cupsFinishingTemplate option, finishings-col-database attribute. Add finishings-col with finishing-template. - cups/ppd-private.h: Add array of finishing-template names. - scheduler/printers.c: Add finishings-col-database. --- diff --git a/CHANGES.md b/CHANGES.md index 0b370e110d..a7a90062cd 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,4 +1,4 @@ -CHANGES - 2.3b1 - 2017-11-27 +CHANGES - 2.3b1 - 2017-11-28 ============================ @@ -41,4 +41,5 @@ Changes in CUPS v2.3b1 when available (Issue #5168) - The cups-driverd program incorrectly stopped scanning PPDs as soon as a loop was seen (Issue #5170) +- IPP Everywhere PPDs now support finishing templates (Issue #5180) diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c index 925028790e..042ba73cc4 100644 --- a/cups/ppd-cache.c +++ b/cups/ppd-cache.c @@ -69,7 +69,8 @@ _cupsConvertOptions( *media_type, /* media-type value */ *collate_str, /* multiple-document-handling value */ *color_attr_name, /* Supported color attribute */ - *mandatory; /* Mandatory attributes */ + *mandatory, /* Mandatory attributes */ + *finishing_template; /* Finishing template */ int num_finishings = 0, /* Number of finishing values */ finishings[10]; /* Finishing enum values */ ppd_choice_t *choice; /* Marked choice */ @@ -136,6 +137,8 @@ _cupsConvertOptions( if (strcmp(mandatory, "copies") && strcmp(mandatory, "destination-uris") && strcmp(mandatory, "finishings") && + strcmp(mandatory, "finishings-col") && + strcmp(mandatory, "finishing-template") && strcmp(mandatory, "job-account-id") && strcmp(mandatory, "job-accounting-user-id") && strcmp(mandatory, "job-password") && @@ -358,10 +361,16 @@ _cupsConvertOptions( * Map finishing options... */ - num_finishings = _ppdCacheGetFinishingValues(pc, num_options, options, (int)(sizeof(finishings) / sizeof(finishings[0])), finishings); - if (num_finishings > 0) + if ((finishing_template = cupsGetOption("cupsFinishingTemplate", num_options, options)) == NULL) + finishing_template = cupsGetOption("finishing-template", num_options, options); + + if (finishing_template) { - ippAddIntegers(request, IPP_TAG_JOB, IPP_TAG_ENUM, "finishings", num_finishings, finishings); + ipp_t *fin_col = ippNew(); /* finishings-col value */ + + ippAddString(fin_col, IPP_TAG_JOB, IPP_TAG_KEYWORD, "finishing-template", NULL, finishing_template); + ippAddCollection(request, IPP_TAG_JOB, "finishings-col", fin_col); + ippDelete(fin_col); if (copies != finishings_copies && (keyword = cupsGetOption("job-impressions", num_options, options)) != NULL) { @@ -372,6 +381,23 @@ _cupsConvertOptions( ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-pages-per-set", atoi(keyword) / finishings_copies); } } + else + { + num_finishings = _ppdCacheGetFinishingValues(pc, num_options, options, (int)(sizeof(finishings) / sizeof(finishings[0])), finishings); + if (num_finishings > 0) + { + ippAddIntegers(request, IPP_TAG_JOB, IPP_TAG_ENUM, "finishings", num_finishings, finishings); + + if (copies != finishings_copies && (keyword = cupsGetOption("job-impressions", num_options, options)) != NULL) + { + /* + * Send job-pages-per-set attribute to apply finishings correctly... + */ + + ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-pages-per-set", atoi(keyword) / finishings_copies); + } + } + } return (copies); } @@ -863,6 +889,13 @@ _ppdCacheCreateWithFile( cupsArrayAdd(pc->finishings, finishings); } + else if (!_cups_strcasecmp(line, "FinishingTemplate")) + { + if (!pc->templates) + pc->templates = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0, (cups_acopy_func_t)_cupsStrAlloc, (cups_afree_func_t)_cupsStrFree); + + cupsArrayAdd(pc->templates, value); + } else if (!_cups_strcasecmp(line, "MaxCopies")) pc->max_copies = atoi(value); else if (!_cups_strcasecmp(line, "ChargeInfoURI")) @@ -958,7 +991,8 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */ *media_type, /* MediaType option */ *output_bin, /* OutputBin option */ *color_model, /* ColorModel option */ - *duplex; /* Duplex option */ + *duplex, /* Duplex option */ + *ppd_option; /* Other PPD option */ ppd_choice_t *choice; /* Current InputSlot/MediaType */ pwg_map_t *map; /* Current source/type map */ ppd_attr_t *ppd_attr; /* Current PPD preset attribute */ @@ -1695,8 +1729,6 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */ * No IPP mapping data, try to map common/standard PPD keywords... */ - ppd_option_t *ppd_option; /* PPD option */ - pc->finishings = cupsArrayNew3((cups_array_func_t)pwg_compare_finishings, NULL, NULL, 0, NULL, (cups_afree_func_t)pwg_free_finishings); if ((ppd_option = ppdFindOption(ppd, "StapleLocation")) != NULL) @@ -1798,6 +1830,14 @@ _ppdCacheCreateWithPPD(ppd_file_t *ppd) /* I - PPD file */ } } + if ((ppd_option = ppdFindOption(ppd, "cupsFinishingTemplate")) != NULL) + { + pc->templates = cupsArrayNew3((cups_array_func_t)strcmp, NULL, NULL, 0, (cups_acopy_func_t)_cupsStrAlloc, (cups_afree_func_t)_cupsStrFree); + + for (choice = ppd_option->choices, i = ppd_option->num_choices; i > 0; choice ++, i --) + cupsArrayAdd(pc->templates, (void *)choice->choice); + } + /* * Max copies... */ @@ -2730,7 +2770,7 @@ _ppdCacheWriteFile( pwg_map_t *map; /* Current map */ _pwg_finishings_t *f; /* Current finishing option */ cups_option_t *option; /* Current option */ - const char *value; /* Filter/pre-filter value */ + const char *value; /* String value */ char newfile[1024]; /* New filename */ @@ -2878,6 +2918,9 @@ _ppdCacheWriteFile( cupsFilePutChar(fp, '\n'); } + for (value = (const char *)cupsArrayFirst(pc->templates); value; value = (const char *)cupsArrayNext(pc->templates)) + cupsFilePutConf(fp, "FinishingTemplate", value); + /* * Max copies... */ @@ -4036,8 +4079,8 @@ _ppdCreateFromIPP(char *buffer, /* I - Filename buffer */ cupsFilePrintf(fp, "*OpenUI *cupsFinishingTemplate/%s: PickOne\n", _cupsLangString(lang, _("Finishing Preset"))); cupsFilePuts(fp, "*OrderDependency: 10 AnySetup *cupsFinishingTemplate\n"); - cupsFilePuts(fp, "*DefaultcupsFinishingTemplate: None\n"); - cupsFilePrintf(fp, "*cupsFinishingTemplate None/%s: \"\"\n", _cupsLangString(lang, _("None"))); + cupsFilePuts(fp, "*DefaultcupsFinishingTemplate: none\n"); + cupsFilePrintf(fp, "*cupsFinishingTemplate none/%s: \"\"\n", _cupsLangString(lang, _("None"))); templates = cupsArrayNew((cups_array_func_t)strcmp, NULL); count = ippGetCount(attr); diff --git a/cups/ppd-private.h b/cups/ppd-private.h index e7c0d6e5f8..6cd1683277 100644 --- a/cups/ppd-private.h +++ b/cups/ppd-private.h @@ -139,6 +139,7 @@ struct _ppd_cache_s /**** PPD cache and PWG conversion data ****/ *prefilters; /* cupsPreFilter values */ int single_file; /* cupsSingleFile value */ cups_array_t *finishings; /* cupsIPPFinishings values */ + cups_array_t *templates; /* cupsFinishingTemplate values */ int max_copies, /* cupsMaxCopies value */ account_id, /* cupsJobAccountId value */ accounting_user_id; /* cupsJobAccountingUserId value */ diff --git a/doc/help/cupspm.epub b/doc/help/cupspm.epub index 331d9be1d7..e857f988bc 100644 Binary files a/doc/help/cupspm.epub and b/doc/help/cupspm.epub differ diff --git a/doc/help/cupspm.html b/doc/help/cupspm.html index ba52cad6a6..b07dadb00e 100644 --- a/doc/help/cupspm.html +++ b/doc/help/cupspm.html @@ -6291,15 +6291,21 @@ are server-oriented...

IPP operations

Constants

+ + + + + + @@ -6315,32 +6321,52 @@ are server-oriented...

+ + + + + + + + + + + + + + + + + + + +
IPP_OP_ALLOCATE_PRINTER_RESOURCES Allocate-Printer-Resources: Use resources for a printer.
IPP_OP_CANCEL_CURRENT_JOB Cancel-Current-Job: Cancel the current job
IPP_OP_CANCEL_JOB Cancel-Job: Cancel a job
IPP_OP_CANCEL_JOBS Cancel-Jobs: Cancel all jobs (administrative)
IPP_OP_CANCEL_MY_JOBS Cancel-My-Jobs: Cancel a user's jobs
IPP_OP_CANCEL_RESOURCE Cancel-Resource: Uninstall a resource.
IPP_OP_CANCEL_SUBSCRIPTION  CUPS 1.2/macOS 10.5  Cancel-Subscription: Cancel a subscription
IPP_OP_CLOSE_JOB Close-Job: Close a job and start printing
IPP_OP_CREATE_JOB Create-Job: Create an empty print job
IPP_OP_CREATE_JOB_SUBSCRIPTIONS  CUPS 1.2/macOS 10.5  Create-Job-Subscriptions: Create one of more job subscriptions
IPP_OP_CREATE_PRINTER Create-Printer: Create a new service.
IPP_OP_CREATE_PRINTER_SUBSCRIPTIONS  CUPS 1.2/macOS 10.5  Create-Printer-Subscriptions: Create one or more printer subscriptions
IPP_OP_CREATE_RESOURCE Create-Resource: Create a new (empty) resource.
IPP_OP_CREATE_RESOURCE_SUBSCRIPTIONS Create-Resource-Subscriptions: Create event subscriptions for a resource.
IPP_OP_CREATE_SYSTEM_SUBSCRIPTIONS Create-System-Subscriptions: Create event subscriptions for a system.
IPP_OP_CUPS_ADD_MODIFY_CLASS CUPS-Add-Modify-Class: Add or modify a class
IPP_OP_CUPS_ADD_MODIFY_PRINTER CUPS-Add-Modify-Printer: Add or modify a printer
IPP_OP_CUPS_AUTHENTICATE_JOB  CUPS 1.2/macOS 10.5  CUPS-Authenticate-Job: Authenticate a job
IPP_OP_CUPS_INVALID Invalid operation name for ippOpValue
IPP_OP_CUPS_MOVE_JOB CUPS-Move-Job: Move a job to a different printer
IPP_OP_CUPS_SET_DEFAULT CUPS-Set-Default: Set the default printer
IPP_OP_DEALLOCATE_PRINTER_RESOURCES Deallocate-Printer-Resources: Stop using resources for a printer.
IPP_OP_DELETE_PRINTER Delete-Printer: Delete an existing service.
IPP_OP_DISABLE_ALL_PRINTERS Disable-All-Printers: Stop accepting new jobs on all services.
IPP_OP_DISABLE_PRINTER Disable-Printer: Reject new jobs for a printer
IPP_OP_ENABLE_ALL_PRINTERS Enable-All-Printers: Start accepting new jobs on all services.
IPP_OP_ENABLE_PRINTER Enable-Printer: Accept new jobs for a printer
IPP_OP_GET_JOBS Get-Jobs: Get a list of jobs
IPP_OP_GET_JOB_ATTRIBUTES Get-Job-Attribute: Get information about a job
IPP_OP_GET_NOTIFICATIONS  CUPS 1.2/macOS 10.5  Get-Notifications: Get notification events
IPP_OP_GET_PRINTERS Get-Printers: Get a list of services.
IPP_OP_GET_PRINTER_ATTRIBUTES Get-Printer-Attributes: Get information about a printer
IPP_OP_GET_PRINTER_SUPPORTED_VALUES Get-Printer-Supported-Values: Get supported values
IPP_OP_GET_SUBSCRIPTIONS  CUPS 1.2/macOS 10.5  Get-Subscriptions: Get list of subscriptions
IPP_OP_GET_SUBSCRIPTION_ATTRIBUTES  CUPS 1.2/macOS 10.5  Get-Subscription-Attributes: Get subscription information
IPP_OP_GET_SYSTEM_ATTRIBUTES Get-System-Attributes: Get system object attributes.
IPP_OP_GET_SYSTEM_SUPPORTED_VALUES Get-System-Supported-Values: Get supported values for system object attributes.
IPP_OP_HOLD_JOB Hold-Job: Hold a job for printing
IPP_OP_HOLD_NEW_JOBS Hold-New-Jobs: Hold new jobs
IPP_OP_IDENTIFY_PRINTER Identify-Printer: Make the printer beep, flash, or display a message for identification
IPP_OP_INSTALL_RESOURCE Install-Resource: Install a resource.
IPP_OP_PAUSE_ALL_PRINTERS Pause-All-Printers: Stop all services immediately.
IPP_OP_PAUSE_ALL_PRINTERS_AFTER_CURRENT_JOB Pause-All-Printers-After-Current-Job: Stop all services after processing the current jobs.
IPP_OP_PAUSE_PRINTER Pause-Printer: Stop a printer
IPP_OP_PAUSE_PRINTER_AFTER_CURRENT_JOB Pause-Printer-After-Current-Job: Stop printer after the current job
IPP_OP_PRINT_JOB Print-Job: Print a single file
IPP_OP_PROMOTE_JOB Promote-Job: Promote a job to print sooner
IPP_OP_REGISTER_OUTPUT_DEVICE Register-Output-Device: Register a remote service.
IPP_OP_RELEASE_HELD_NEW_JOBS Release-Held-New-Jobs: Release new jobs that were previously held
IPP_OP_RELEASE_JOB Release-Job: Release a job for printing
IPP_OP_RENEW_SUBSCRIPTION  CUPS 1.2/macOS 10.5  Renew-Subscription: Renew a printer subscription
IPP_OP_RESTART_JOB  DEPRECATED  Restart-Job: Reprint a job
IPP_OP_RESTART_SYSTEM Restart-System: Restart all services.
IPP_OP_RESUME_ALL_PRINTERS Resume-All-Printers: Start job processing on all services.
IPP_OP_RESUME_JOB Resume-Job: Resume the current job
IPP_OP_RESUME_PRINTER Resume-Printer: Start a printer
IPP_OP_SCHEDULE_JOB_AFTER Schedule-Job-After: Schedule a job to print after another
IPP_OP_SEND_DOCUMENT Send-Document: Add a file to a job
IPP_OP_SEND_RESOURCE_DATA Send-Resource-Data: Upload the data for a resource.
IPP_OP_SET_JOB_ATTRIBUTES Set-Job-Attributes: Set job values
IPP_OP_SET_PRINTER_ATTRIBUTES Set-Printer-Attributes: Set printer values
IPP_OP_SET_RESOURCE_ATTRIBUTES Set-Resource-Attributes: Set resource object attributes.
IPP_OP_SET_SYSTEM_ATTRIBUTES Set-System-Attributes: Set system object attributes.
IPP_OP_SHUTDOWN_ALL_PRINTERS Shutdown-All-Printers: Shutdown all services.
IPP_OP_SHUTDOWN_ONE_PRINTER Shutdown-One-Printer: Shutdown a service.
IPP_OP_STARTUP_ALL_PRINTERS Startup-All-Printers: Startup all services.
IPP_OP_STARTUP_ONE_PRINTER Startup-One-Printer: Start a service.
IPP_OP_SUSPEND_CURRENT_JOB Suspend-Current-Job: Suspend the current job
IPP_OP_VALIDATE_JOB Validate-Job: Validate job values prior to submission
@@ -6461,6 +6487,7 @@ are server-oriented...

IPP_TAG_DATE Date/time value IPP_TAG_DEFAULT Default value IPP_TAG_DELETEATTR Delete-attribute value + IPP_TAG_DOCUMENT Document group IPP_TAG_END End-of-attributes IPP_TAG_ENUM Enumeration value IPP_TAG_EVENT_NOTIFICATION Event group @@ -6477,8 +6504,10 @@ are server-oriented...

IPP_TAG_PRINTER Printer group IPP_TAG_RANGE Range value IPP_TAG_RESOLUTION Resolution value + IPP_TAG_RESOURCE Resource group IPP_TAG_STRING Octet string value IPP_TAG_SUBSCRIPTION Subscription group + IPP_TAG_SYSTEM System group IPP_TAG_TEXT Text value IPP_TAG_TEXTLANG Text-with-language value IPP_TAG_UNKNOWN Unknown value diff --git a/doc/help/spec-ppd.html b/doc/help/spec-ppd.html index 06f5769a84..dd2c07a15b 100644 --- a/doc/help/spec-ppd.html +++ b/doc/help/spec-ppd.html @@ -419,6 +419,7 @@ div.contents ul.subcontents li {
  • cupsFax
  • cupsFilter
  • cupsFilter2
  • +
  • cupsFinishingTemplate
  • cupsFlipDuplex
  • cupsIPPFinishings
  • cupsIPPReason
  • @@ -491,6 +492,7 @@ LINE-END = CR / LF / CR LF

    CUPS supports several methods of auto-configuration via PPD keywords.

    +

    macOS 10.5APAutoSetupTool

    *APAutoSetupTool: "/LibraryPrinters/vendor/filename"

    @@ -506,6 +508,7 @@ LINE-END = CR / LF / CR LF *APAutoSetupTool: "/Library/Printers/vendor/Tools/autosetuptool" +

    macOS 10.2/CUPS 1.4?MainKeyword

    *?MainKeyword: "
    @@ -535,6 +538,7 @@ LINE-END = CR / LF / CR LF *CloseUI: OptionDuplex +

    macOS 10.4/CUPS 1.5OIDMainKeyword

    *?OIDMainKeyword: ".n.n.n..."
    @@ -566,6 +570,7 @@ LINE-END = CR / LF / CR LF +

    DeprecatedcupsColorProfile

    *cupsColorProfile Resolution/MediaType: "density gamma m00 m01 m02 m10 m11 m12 m20 m21 m22"

    @@ -642,6 +647,7 @@ f(x) = density * x gamma *cupsICCQualifier3: Resolution +

    macOS 10.4Custom Color Matching Support

    *APSupportsCustomColorMatching: true
    @@ -743,6 +749,7 @@ f(x) = density * x gamma +

    CUPS 1.4/macOS 10.6cupsUIConstraints

    *cupsUIConstraints resolver: "*Keyword1 *Keyword2 ..."
    @@ -773,6 +780,7 @@ f(x) = density * x gamma *cupsUIConstraints photo: "*OutputMode Photo *MediaType Transparency *Resolution 1200dpi" +

    CUPS 1.4/macOS 10.6cupsUIResolver

    *cupsUIResolver resolver: "*Keyword1 OptionKeyword1 *Keyword2 OptionKeyword2 ..."

    @@ -990,6 +998,7 @@ option value is "1234" then CUPS will output the string "@PJL SET PASSCODE=1234"

    The resulting dictionary sets the page device attributes that are sent to your raster driver in the page header.

    +

    Custom Page Size Code

    There are many possible implementations of the CustomPageSize code. For CUPS raster drivers, the following code is recommended:

    @@ -1003,6 +1012,7 @@ option value is "1234" then CUPS will output the string "@PJL SET PASSCODE=1234" *CustomPageSize True: "pop pop pop <</PageSize[5 -2 roll]/ImagingBBox null>>setpagedevice" +

    Supported PostScript Operators

    CUPS supports the following PostScript operators in addition to the usual PostScript number, string (literal and hex-encoded), boolean, null, and name values:

    @@ -1062,6 +1072,7 @@ PRE B { +

    Supported Page Device Attributes

    Table 2 shows the supported page device attributes along with PostScript code examples.

    @@ -1333,6 +1344,7 @@ PRE B {

    The CUPS media keywords allow drivers to specify alternate custom page size limits based on up to two options.

    +

    CUPS 1.4/macOS 10.6cupsMediaQualifier2

    *cupsMediaQualifier2: MainKeyword

    @@ -1352,6 +1364,7 @@ custom page size limits.

    *cupsMinSize ..Photo: "300 300" +

    CUPS 1.4/macOS 10.6cupsMediaQualifier3

    *cupsMediaQualifier3: MainKeyword

    @@ -1371,6 +1384,7 @@ custom page size limits.

    *cupsMinSize ..Photo: "300 300" +

    CUPS 1.4/macOS 10.6cupsMinSize

    *cupsMinSize .Qualifier2.Qualifier3: "width length"
    @@ -1394,6 +1408,7 @@ are used to identify options to use for matching.

    *cupsMinSize ..Photo: "300 300" +

    CUPS 1.4/macOS 10.6cupsMaxSize

    *cupsMaxSize .Qualifier2.Qualifier3: "width length"
    @@ -1531,6 +1546,7 @@ will be ignored.

    Also see the related APDuplexRequiresFlippedMargin keyword.

    +

    CUPS 1.4/macOS 10.6cupsCommands

    *cupsCommands: "name name2 ... nameN"

    @@ -1562,6 +1578,7 @@ printing is selected. The default value is false.

    *cupsEvenDuplex: true +

    cupsFax

    *cupsFax: boolean

    @@ -1574,6 +1591,7 @@ printing is selected. The default value is false.

    *cupsFax: true +

    cupsFilter

    *cupsFilter: "source/type cost program"

    @@ -1596,6 +1614,7 @@ the special filter program "-" may be specified.

    *cupsFilter: "application/vnd.cups-postscript 0 -" +

    CUPS 1.5cupsFilter2

    *cupsFilter2: "source/type destination/type cost program"

    @@ -1621,6 +1640,26 @@ the special filter program "-" may be specified.

    *cupsFilter2: "application/vnd.cups-postscript application/postscript 0 -" + +

    CUPS 2.3cupsFinishingTemplate

    + +

    *cupsFinishingTemplate name/text: ""

    + +

    This option keyword specifies a finishing template (preset) that applies zero or more finishing processes to a job. Unlike cupsIPPFinishings, only one template can be selected by the user. PPD files also generally apply a constraint between this option and other finishing options like Booklet, FoldType, PunchMedia, and StapleWhen.

    + +

    Examples:

    + +
    +*cupsFinishingTemplate none/None: ""
    +*cupsFinishingTemplate fold/Letter Fold: ""
    +*cupsFinishingTemplate punch/2/3-Hole Punch: ""
    +*cupsFinishingTemplate staple/Corner Staple: ""
    +*cupsFinishingTemplate staple-dual/Double Staple: ""
    +*cupsFinishingTemplate staple-and-fold/Corner Staple and Letter Fold: ""
    +*cupsFinishingTemplate staple-and-punch/Corner Staple and 2/3-Hole Punch: ""
    +
    + +

    DeprecatedcupsFlipDuplex

    *cupsFlipDuplex: boolean

    @@ -1656,6 +1695,7 @@ Ghostscript can use:

    *cupsFlipDuplex: true +

    CUPS 1.3/macOS 10.5cupsIPPFinishings

    *cupsIPPFinishings number/text: "*Option Choice ..."

    @@ -1672,6 +1712,7 @@ values to PPD options and choices.

    *cupsIPPFinishings 21/staple-bottom-left: "*StapleLocation SingleLandscape" +

    CUPS 1.3/macOS 10.5cupsIPPReason

    *cupsIPPReason reason/Reason Text: "optional URIs"

    @@ -1712,6 +1753,7 @@ http://www.vendor.com/help" *End +

    CUPS 1.5cupsIPPSupplies

    *cupsIPPSupplies: boolean

    @@ -1813,6 +1855,7 @@ hardware. The default value is false.

    *cupsManualCopies: true +

    CUPS 1.4/macOS 10.6cupsMarkerName

    *cupsMarkerName/Name Text: ""

    @@ -1827,6 +1870,7 @@ generated by the driver to human readable text.

    *cupsMarkerName cyanToner/Cyan Toner: "" +

    CUPS 1.4/macOS 10.6cupsMarkerNotice

    *cupsMarkerNotice: "disclaimer text"

    @@ -1841,6 +1885,7 @@ are approximate".

    *cupsMarkerNotice: "Supply levels are approximate." +

    CUPS 1.6/macOS 10.8cupsMaxCopies

    *cupsMaxCopies: integer

    @@ -1854,6 +1899,7 @@ are approximate".

    *cupsMaxCopies: 99 +

    cupsModelNumber

    *cupsModelNumber: number

    @@ -1885,6 +1931,7 @@ assumed.

    *cupsPJLCharset: "UTF-8" +

    CUPS 1.4/macOS 10.6cupsPJLDisplay

    *cupsPJLDisplay: "what"

    @@ -1904,6 +1951,7 @@ to use "@PJL RDYMSG DISPLAY". The default is "job".

    *cupsPJLDisplay: "none" +

    CUPS 1.2/macOS 10.5cupsPortMonitor

    *cupsPortMonitor urischeme/Descriptive Text: "port monitor"

    @@ -1936,6 +1984,7 @@ to disable the port monitor for the given URI scheme.

    *cupsPortMonitor usb/USB Status Monitor: "epson-usb" +

    CUPS 1.3/macOS 10.5cupsPreFilter

    *cupsPreFilter: "source/type cost program"

    @@ -1979,6 +2028,7 @@ before the filter that accepts the given MIME type.

    *CloseUI: *cupsPrintQuality +

    CUPS 1.5cupsSingleFile

    *cupsSingleFile: Boolean

    @@ -1995,6 +2045,7 @@ before the filter that accepts the given MIME type.

    *cupsSingleFile: True +

    CUPS 1.4/macOS 10.6cupsSNMPSupplies

    *cupsSNMPSupplies: boolean

    @@ -2010,6 +2061,7 @@ the standard SNMP Printer MIB OIDs for supply levels. The default value is *cupsSNMPSupplies: False +

    cupsVersion

    *cupsVersion: major.minor

    @@ -2068,6 +2120,7 @@ in order to be usable with all applications.

    *APDialogExtension: "/Library/Printers/vendor/options.plugin" +

    macOS 10.4APDuplexRequiresFlippedMargin

    *APDuplexRequiresFlippedMargin: boolean

    @@ -2150,6 +2203,7 @@ and the Tumble page attribute.

    Also see the related cupsBackSide keyword.

    +

    APHelpBook

    *APHelpBook: "bundle URL"

    @@ -2165,6 +2219,7 @@ looking up IPP reason codes for this printer driver. The *APHelpBook: "file:///Library/Printers/vendor/Help.bundle" +

    macOS 10.6APICADriver

    *APICADriver: boolean

    @@ -2179,6 +2234,7 @@ Architecture (ICA) driver for scanning. The default is False.

    *APScanAppBundleID: "com.apple.ImageCaptureApp" +

    macOS 10.3APPrinterIconPath

    *APPrinterIconPath: "/Library/Printers/vendor/filename.icns"

    @@ -2193,6 +2249,7 @@ displaying the printer. The file must be in the Apple icon format.

    *APPrinterIconPath: "/Library/Printers/vendor/Icons/filename.icns" +

    macOS 10.4APPrinterLowInkTool

    *APPrinterLowInkTool: "/Library/Printers/vendor/program"

    @@ -2210,6 +2267,7 @@ Technical Note TN2144 for more information.

    *APPrinterLowInkTool: "/Library/Printers/vendor/Tools/lowinktool" +

    macOS 10.5APPrinterPreset

    *APPrinterPreset name/text: "*Option Choice ..."

    @@ -2280,6 +2338,7 @@ choice (*MainKeyword OptionKeyword) or a preset identifier and value *fr.APPrinterPreset Photo_on_Photo_Paper/Photo sur papier photographique: "" +

    macOS 10.3APPrinterUtilityPath

    *APPrinterPrinterUtilityPath: "/Library/Printers/vendor/filename.app"

    @@ -2295,6 +2354,7 @@ information.

    *APPrinterPrinterUtilityPath: "/Library/Printers/vendor/Tools/utility.app" +

    macOS 10.6APScannerOnly

    *APScannerOnly: boolean

    @@ -2309,6 +2369,7 @@ capabilities. The default is False.

    *APScannerOnly: True +

    macOS 10.3APScanAppBundleID

    *APScanAppBundleID: "bundle ID"

    @@ -2326,6 +2387,15 @@ the device.

    Change History

    +

    Changes in CUPS 2.3

    + + + +

    Changes in CUPS 1.7

    +

    Changes in CUPS 1.2.8

    +

    Changes in CUPS 1.2

    +

    Changes in CUPS 1.1