Webconverger utilises CUPS 1.5 which auto-detects CUPS <1.6 servers using "BrowsePoll" for CUPS Browsing for sharing and discovery. This "auto setup" feature is removed in CUPS 1.6.
Holding down the [Control] and [p] keys on your keyboard gives you the printing
dialog. Or you can use the
showprintbutton API to show a print icon to
Mozilla Firefox printing guidelines can help you improve prints.
If you do not see your printer in that dialog or you just see "Print to File", your print server is not correctly configured.
So unfortunately the user experience of just using detected "auto setup" printers is no longer
CUPS. You now
need to "Add printer..." up front, and hence we have introduced the
API for you to do this.
Helping us support you
For our customers, please print out the "Printer Settings" report and send it to us (a good capture from your mobile is usually sufficient) together with your printer query.
the printer= API has syntax like so:
printer=printer name,device URI,driver URI
For example a Ricoh Aficio SP 4310N with PPD on IP 192.168.1.5 might be setup like so:
Instead of specifying a remote PPD, you should ideally use the internal (generic) drivers: "drv:///sample.drv/generpcl.ppd" or "drv:///sample.drv/generic.ppd".
For example a network printer 192.168.1.10 named "helpdesk" with dns name printer is very likely to have "Laser printer" PCL support:
However if your printer supports PostScript, you might find using the "Generic
PostScript Printer" driver
drv:///sample.drv/generic.ppd result in better
You can have multiple
printer= lines and hence give your users several
printers to print to.
Two typical printing configurations
Using a network printer
Buy a printer with a network port. These printers are generally more expensive and generally have IPP support built in. Some do not have an IPP print server or are simply buggy. So make sure you purchase it with a good exchange / refund policy.
Discovering the "device URI" can be alarmingly difficult. Usually socket://$PRINTER_IP_ADDRESS will probably work.
Using a CUPS server with (attached) printer shared upon it
Buy a printer and attach it to a MacOSX / Ubuntu / Windows PC. Proceed to install drivers and most importantly the CUPS print server software. Then configure the CUPS server to be shared upon the network.
Add your printer to the client using the printer= API, using the an appropriate device URI.
prefs= API to remove default header and footer
The prefs= API allows you to override Firefox preferences.
prefs=http://prefs.webconverger.com/2013/ricoh.js removes header/footer for the printer named 'Ricoh'.
A preference override such as:
Disables the default Mozilla PDF viewer, which should default to epdfview viewer. PDFJS has issues like:
Setting default paper type to A4
Printing to a PDF file to a remote machine on your network
The cups-pdf package allows you to setup a "Virtual Print" server on your network that write out PDFs on your server's spool directory.
This is useful for archiving, debugging and allowing you to manually check what does and does not get printed.
Assuming you have a permissively configured CUPS server (not Webconverger, an Ubuntu install for example) with cups-pdf installed, you need to figure the IP address or name (e.g. 192.168.0.1) of your print server, that can be accessed by your clients. To find the device URI of your CUPS printer, it's the "Queue Name" URL in the Administration Tab → Manage Printers, see the highlighted device URI screenshot.
Once you know the printer's device URI, you then setup your Webconverger clients like so:
On the print server, you should be able to see "Send-Document successful-ok"
whilst viewing the log like so
tail -f /var/log/cups/access_log.
Assuming you are running a Virtualbox instance, sharing a bridged adaptor. On the host 192.168.1.3 with the Virtualbox on 192.168.1.136:
sudo tcpdump -w /tmp/foo.pcap -s 0 -n -i wlan0 dst 192.168.1.136 and not port 53 wireshark -r /tmp/foo.pcap
lpstat -t is a good way to list CUPS printers to see how they are configured on a running Webconverger system.
cups-bsd to spool a job from the command line using