---
name: "ipp3dprinter"
section: "1"
platform: "linux"
package: "ippsample-data"
version: "0.0~git20220607.72f89b3-1"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/ipp3dprinter"
---

# ipp3dprinter(1)

an ipp 3d printer application

## 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)](/cups-config/1.md) 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)](/cups/1.md) 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)](/hostname/1.md) 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)](/file/1.md) 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.
