Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Various updates #17

Open
wants to merge 14 commits into
base: master
Choose a base branch
from
33 changes: 32 additions & 1 deletion README
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,47 @@ the printer can natively print PDF. That is to say, CUPS needs to already be
configured with a PDF filter. Debian based distributions ship CUPS pre-configured
this way.

This script can also discover networked printers via DNS-SD, independent of CUPS,
and produce exact .service files for them, allowing the printers to be announced
on different subnets by copying the .service files to /etc/avahi/services/ there.
This solves the problem of AirPrint printers not being availabe outside the
local subnet even though routing/NAT exists between subnets.

DNSSD has a limit of 255 Chars for a given txt-record, because of this the list
of accepted pdl's will be truncated to fit. If you're curious to see which ones
are trimmed out of the list run with the script with the verbose flag (--verbose)

If python-lxml is installed, .service files will be generated in a human
readble format, I wasn't able to get minidom's version to work acceptably.

The git repository also contains airprint.convs, airprint.types and apple.types. These need
to be copied to the /usr/share/cups/mime folder.

Copy the .service files generated by this script to /etc/avahi/services.

Then restart both avahi and cups with
sudo service avahi-daemon restart
sudo service cups restart

**Python Requirements:**
This script requires depends on the python-cups library, and optionally python-lxml to make pretty xml files.

Debian/Ubuntu:
sudo apt-get install python-cups python-lxml

CentOS:
sudo yum install system-config-printer-libs


Usage: airprint-generate.py [options]

Options:
-h, --help show this help message and exit
-s, --dnssd Search for network printers using DNS-SD (requires
avahi)
-D DNSDOMAIN, --dnsdomain=DNSDOMAIN
DNS domain where printers are located.
-c, --cups Search CUPS for shared printers (requires CUPS)
-H HOSTNAME, --host=HOSTNAME
Hostname of CUPS server (optional)
-P PORT, --port=PORT Port number of CUPS server
Expand All @@ -29,4 +59,5 @@ Options:
Directory to create service files
-v, --verbose Print debugging information to STDERR
-p PREFIX, --prefix=PREFIX
Prefix all files with this string
Prefix all files with this string
-a, --admin Include the printer specified uri as the adminurl
Loading