ippeveprinter(1)

NAME
ippeveprinter - an ipp everywhere printer application for cups

SYNOPSIS
ippeveprinter [ --help ] [ --no-web-forms ] [ --pam-service SERVICE ] [ --version ] [ -2 ] [ -a FILENAME ] [ -A ] [ -c COMMAND ] [ -d SPOOL-DIRECTORY ] [ -D DEVICE-URI ] [ -f INPUT-TYPE/SUBTYPE[,...] ] [ -F OUTPUT-TYPE/SUBTYPE ] [ -i ICONFILE.png[,...] ] [ -k ] [ -K KEYSTORE ] [ -l LOCATION ] [ -L LOGFILE ] [ -m MODEL ] [ -M MANUFACTURER ] [ -n HOSTNAME ] [ -p PORT ] [ -r SUBTYPE[,...] ] [ -s SPEED[,COLOR-SPEED] ] [ -S FILENAME.strings ] [ -v[vvv] ] [ -V VERSION ] SERVICE-NAME

DESCRIPTION
ippeveprinter is a simple Internet Printing Protocol (IPP) server conforming to the IPP Everywhere (PWG 5100.14) specification. It can be used to test client software or act as a very basic print server that runs a command for every job that is printed.

OPTIONS
The following options are recognized by ippeveprinter:

--help
    Show program usage.

--no-web-forms
    Disable the web interface forms used to update the media, state, and supply levels. See the "WEB INTERFACE FORMS" section for more information.

--pam-service SERVICE
    Set the PAM service name. The default service is cups.

--version
    Show the CUPS version.

-2  Report support for two-sided (duplex) printing.

-a FILENAME
    Specifies an IPP file that defines the attributes for the printer. This is normally used to simulate a real printer with the output from ipptool(1) using the --ippfile option.

-A  Enable authentication for the created printer. ippeveprinter uses PAM to authenticate HTTP Basic credentials.

-c COMMAND
    Run the specified command for each document that is printed.

-d SPOOL-DIRECTORY
    Specifies the directory that will hold the print files. The default is a directory under the user's current temporary directory.

-D DEVICE-URI
    Set the device URI for print output. The URI can be a filename, directory, or a network socket URI of the form socket://ADDRESS[:PORT] where the default port number is 9100. When specifying a directory, ippeveprinter will create an output file using the job ID and name.

-f INPUT-TYPE/SUBTYPE[,...]
    Specifies a list of MIME media types that the server will accept. The default depends on the type of printer created.

-F OUTPUT-TYPE/SUBTYPE[,...]
    Specifies the output MIME media type. The default is application/postscript when the -P option is specified.

-i ICONFILE.png[,...]
    Specifies the printer icon file for the server. The file must be a PNG format image. The default is an internally-provided PNG image.

-k  Keeps the print documents in the spool directory rather than deleting them.

-K KEYSTORE
    Specifies the location of X.509 certificates.

-l LOCATION
    Specifies the human-readable location string that is reported by the server. The default is the empty string.

-L LOGFILE
    Specifies the file that is used for log messages. If the filename starts with a plus ("+"), log messages are appended to the specified file. The default is to send log messages to the standard error.

-m MODEL
    Specifies the model name of the printer. The default is Printer.

-M MANUFACTURER
    Set the manufacturer of the printer. The default is Example.

-n HOSTNAME
    Specifies the hostname that is reported by the server. The default is the name returned by the hostname(1) command.

-p PORT
    Specifies the port number to listen on. The default is a user-specific number from 8000 to 8999.

-r off
    Turns off DNS-SD service advertisements entirely.

-r SUBTYPE[,...]
    Specifies the DNS-SD subtype(s) to advertise. Separate multiple subtypes with a comma. The default is _print.

-s SPEED[,COLOR-SPEED]
    Specifies the printer speed in pages per minute. If two numbers are specified and the second number is greater than zero, the server will report support for color printing. The default is 10,0.

-S FILENAME.strings
    Specifies a strings file for localization.

-v[vvv]
    Be (very) verbose when logging activity to standard error.

-V 1.1

-V 2.0
    Specifies the maximum IPP version to report. 2.0 is the default.

EXIT STATUS
The ippeveprinter program returns 1 if it is unable to process the command-line arguments or register the IPP service. Otherwise ippeveprinter will run continuously until terminated.

CONFORMING TO
The ippeveprinter program is unique to CUPS and conforms to the IPP Everywhere (PWG 5100.14) specification.

ENVIRONMENT
ippeveprinter adds environment variables starting with "IPP_" for all IPP Job attributes in the print request. For example, when executing a command for an IPP Job containing the "media" Job Template attribute, the "IPP_MEDIA" environment variable will be set to the value of that attribute.

In addition, all IPP "xxx-default", "xxx-ready", and "xxx-supported" Printer Description attributes are added to the environment. For example, the "IPP_MEDIA_DEFAULT" environment variable will be set to the default value for the "media" Job Template attribute.

Enumerated values are converted to their keyword equivalents. For example, a "print-quality" Job Template attribute with a enum value of 3 will become the "IPP_PRINT_QUALITY" environment variable with a value of "draft". This string conversion only happens for standard Job Template attributes, currently "finishings", "orientation-requested", and "print-quality".

Finally, the "CONTENT_TYPE" environment variable contains the MIME media type of the document being printed, the "DEVICE_URI" environment variable contains the device URI as specified with the "-D" option, the "OUTPUT_FORMAT" environment variable contains the output MIME media type, and the "PPD" environment variable contains the PPD filename as specified with the "-P" option.

COMMAND OUTPUT
Unless they communicate directly with a printer, print commands send printer-ready data to the standard output.

Print commands can send messages back to ippeveprinter on the standard error with one of the following prefixes:

ATTR: attribute=value[ attribute=value]
    Sets the named attribute(s) to the given values. Currently only the "job-impressions" and "job-impressions-completed" Job Status attributes and the "marker-xxx", "printer-alert", "printer-alert-description", "printer-supply", and "printer-supply-description" Printer Status attributes can be set.

DEBUG: Debugging message
    Logs a debugging message if at least two -v's have been specified.

ERROR: Error message
    Logs an error message and copies the message to the "job-state-message" attribute.

INFO: Informational message
    Logs an informational/progress message if -v has been specified and copies the message to the "job-state-message" attribute unless an error has been reported.

STATE: keyword[,keyword,...]
    Sets the printer's "printer-state-reasons" attribute to the listed keywords.

STATE: -keyword[,keyword,...]
    Removes the listed keywords from the printer's "printer-state-reasons" attribute.

STATE: +keyword[,keyword,...]
    Adds the listed keywords to the printer's "printer-state-reasons" attribute.

WEB INTERFACE FORMS
ippeveprinter provides a simple web interface with forms for updating the current media, state, and supply levels of the printer. Since these forms offer no security restrictions, they can be disabled using the --no-web-forms option. HTTP "GET" requests can be used to update printer values programmatically:

GET /?reasons=KEYWORD[,...,KEYWORD]

GET /?reasons=~KEYWORD[,...,KEYWORD]

GET /?reasons=-KEYWORD[,...,KEYWORD]
    Set, add (~), or remove (-) the specified "printer-state-reasons" keywords.

GET /media?sizeN=SIZE-NAME&typeN=TYPE-NAME&levelN=NUM-SHEETS
    Update the media size, type, and number of sheets for source N (starting at 0). Multiple sources can be updated in a single request by adding more sets of form values.

GET /supplies?supplyN=PERCENT
    Update the current level of supply N (starting at 0). Multiple supplies can be updated in a single request by adding more form values.

EXAMPLES
Run ippeveprinter with a service name of My Cool Printer:
    ippeveprinter "My Cool Printer"

Run the file(1) command whenever a job is sent to the server:
    ippeveprinter -c /usr/bin/file "My Cool Printer"

Make a copy of a real printer's attributes and simulate it locally:
    ipptool --ippfile myprinter.conf ipp://printer.local/ipp/print get-printer-attributes.test
    ippeveprinter -a myprinter.conf "My Simulated Printer"

SEE ALSO
ipptransform(1), ipptool(1), PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)

COPYRIGHT
Copyright © 2021-2026 by OpenPrinting.