# ipp3dprinter(1)

## Name

ipp3dprinter - an ipp 3d printer application

## Synopsis

ipp3dprinter [ --help ] [ --no-web-forms ] [ --version ] [ -D device-uri ] [ -K keypath ] [ -M manufacturer ] [ -a filename.conf ] [ -c command ] [ -d spool-directory ] [ -f type/subtype[,...] ] [ -i iconfile.png ] [ -k ] [ -l location ] [ -m model ] [ -n hostname ] [ -p port ] [ -r subtype[,subtype] ] [ -v[vvv] ] service-name

## Description

ipp3dprinter is a simple Internet Printing Protocol (IPP) server conforming to the IPP 3D Printing Extensions (PWG 5100.21) 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 ipp3dprinter:

--help
  Show program usage.
--no-web-forms
  Disable the web interface forms used to update the media and supply levels.
--version
  Show the CUPS version.
-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, ipp3dprinter will create an output file using the job ID and name.
-M manufacturer
  Set the manufacturer of the printer. The default is "Example".
-c command
  Run the specified command for each document that is printed. If "command" is not an absolute path ("/path/to/command"), ipp3dprinter looks for the command in the "command" subdirectory of the CUPS binary directory, typically /usr/lib/cups/command or /usr/libexec/cups/command. The cups-config(1) command can be used to discover the correct binary directory ("cups-config --serverbin"). In addition, the CUPS_SERVERBIN environment variable can be used to override the default location of this directory - see the cups(1) man page for more details.
-d spool-directory
  Specifies the directory that will hold the print files. The default is a directory under the user's current temporary directory.
-f type/subtype[,...]
  Specifies a list of MIME media types that the server will accept. The default depends on the type of printer created.
-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.
-l location
  Specifies the human-readable location string that is reported by the server. The default is the empty string.
-m model
  Specifies the model name of the printer. The default is "Printer".
-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 subtype[,subtype]
  Specifies the DNS-SD subtype(s) to advertise. Separate multiple subtypes with a comma. The default is "_print".
-v[vvv]
  Be (very) verbose when logging activity to standard error.

## Exit Status

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

## Conforming To

The ipp3dprinter program is unique to CUPS and conforms to the IPP 3D Printing Extensions (PWG 5100.21) specification.

## Environment

ipp3dprinter 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 "materials-col" Job Template attribute, the "IPP_MATERIALS_COL" environment variable will be set to the value of that attribute.

In addition, all IPP "xxx-default" and "pwg-xxx" Printer Description attributes are added to the environment. For example, the "IPP_MATERIALS_COL_DEFAULT" environment variable will be set to the default value for the "materials-col" 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" and "print-quality".

Finally, the "CONTENT_TYPE" environment variable contains the MIME media type of the document being printed and the "DEVICE_URI" environment variable contains the device URI as specified with the "-D" 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 ipp3dprinter 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 "printer-alert" and "printer-alert-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.

## Examples

Run ipp3dprinter with a service name of My Cool Printer:

        ipp3dprinter "My Cool Printer"

Run the file(1) command whenever a job is sent to the server:

        ipp3dprinter -c /usr/bin/file "My Cool Printer"

## See Also

PWG Internet Printing Protocol Workgroup (http://www.pwg.org/ipp)

## Copyright

Copyright © 2007-2019 by Apple Inc.