Chapter 12. SavaPage as Printer

Table of Contents

12.1. IPP Everywhere and AirPrint
12.1.1. Step 1: Check Avahi configuration
12.1.2. Step 2: Create AirPrint Queue
12.1.3. Step 3: Create Avahi Service File
12.2. PostScript Driver Print
12.3. Printing from GNU/Linux
12.4. Printing from macOS
12.5. Printing from Chrome OS
12.6. Printing from Android
12.6.1. SavaPage Android Print App
12.7. Printing from iOS and iPadOS
12.8. Printing from Windows
12.8.1. Local Printer
12.8.2. IPP Printer
12.9. Driverless File Transfer Print
12.9.1. Processing Driverless PDF Transfer
12.10. PostScript Print Processing
12.10.1. Licensed Fonts
12.10.2. Printing Encrypted PDF
12.10.3. PostScript Configuration Properties
12.11. IP Restricted Printing
12.12. Printer Availability

12.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 12.1. IPP Everywhere and AirPrint

12.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 

12.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.

12.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 [29]

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


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