Chapter 14. SavaPage as Printer

Table of Contents

14.1. IPP Everywhere and AirPrint
14.1.1. Step 1: Check Avahi configuration
14.1.2. Step 2: Create AirPrint Queue
14.1.3. Step 3: Create Avahi Service File
14.2. PostScript Driver Print
14.2.1. IPP Options from PostScript
14.3. Printing from GNU/Linux
14.4. Printing from macOS
14.5. Printing from Chrome OS
14.6. Printing from Android
14.6.1. SavaPage Android Print App
14.7. Printing from iOS and iPadOS
14.8. Printing from Windows
14.8.1. Local Printer
14.8.2. IPP Printer
14.9. Driverless File Transfer Print
14.9.1. Processing Driverless PDF Transfer
14.10. PostScript Print Processing
14.10.1. Licensed Fonts
14.10.2. Printing Encrypted PDF
14.10.3. PostScript Configuration Properties
14.11. IP Restricted Printing
14.12. Printer Availability

14.1. IPP Everywhere and AirPrint

IPP Everywhere™ is a PWG standard that allows personal computers and mobile devices to find and print to networked (and USB) printers without using vendor-specific software (printer drivers). It is based on IPP/2.0 and Zero-configuration networking (Zeroconf) for automatic printer discovery on Internet Protocol (IP) networks. IPP Everywhere printers accept PWG Raster Format and JPEG (required) and PDF (recommended) print content.

  • The terms Zeroconf and Bonjour are often used interchangeably, although Zeroconf refers to the technology in general and Bonjour is the Apple branded implementation.

  • In analogy, the terms IPP Everywhere (Zeroconf printers) and AirPrint (Bonjour printers) are also used interchangeably.

  • To configure SavaPage as Zeroconf printer follow the steps described in the sections below.

SavaPage AirPrint is discussed for each platform separately:

Table 14.1. IPP Everywhere and AirPrint

14.1.1. Step 1: Check Avahi configuration

For SavaPage to act as Zeroconf printer Avahi needs to be installed on your GNU/Linux host.

To service a broad range of devices, both IPv4 and IPv6 should be enabled in the avahi-daemon. This is normally the case, but you can check by editing the Avahi configuration file:

sudo vi /etc/avahi/avahi-daemon.conf

Make sure settings are as follows:


If you made changes to the configuration file, restart the daemon as follows:

sudo systemctl restart avahi-daemon.service 

14.1.2. Step 2: Create AirPrint Queue

The URL path of Reserved Queue called /airprint is available by default.

You can create a new SavaPage Queue (see Section 4.7, “Queues” ) with another path if you like. It is important though not to check the Trusted option, since the queue must be untrusted to enforce IP Based Authentication. This is needed because AirPrint is inherently unauthenticated. IP Based Authentication finds the real user by matching the IP address of the print request with the authenticated user in the SavaPage Web App Session on the same IP address.

14.1.3. Step 3: Create Avahi Service File

Copy the /opt/savapage/server/examples/linux/avahi/savapage.service file to your personal home directory.

savapage.service is an Avahi service file with annotations explaining how to adapt it to your own situation. Follow the $Customize$ annotation to insert your settings.

Copy your tailored service file to Avahi, with this command (assuming the source file resides in your home directory):

sudo cp ~/savapage.service /etc/avahi/services

Check if Avahi has published the SavaPage printer as intended by typing this command:

avahi-browse -a -t

Assuming your GNU/Linux host is called savapage and you named your Avahi print service SavaPage, you should find entries in the output like this :

+   eth1 IPv6 SavaPage on savapage     _ipps._tcp           local
+   eth1 IPv4 SavaPage on savapage     _ipps._tcp           local
+   eth1 IPv6 SavaPage on savapage     Internet Printer     local
+   eth1 IPv4 SavaPage on savapage     Internet Printer     local

To check if the SavaPage DNS printer can be found, use this command on a macOS or GNU/Linux workstation :

ippfind _ipp._tcp _ipps._tcp [31]

Assuming your GNU/Linux server host is called savapage in the Avahi service file, you should see these entries as output:


[31] ippfind is part of cups-ipp-utils package.