How to: simulate an (IPP) printer

I'd like to test out some features that IPP should have (namely, monitoring the number of impressions made; see this question) but I haven't got the hardware yet. How can I simulate such a printer? Is there code for a dummy IPP printer? I'll be working in either Linux or Windows.

1 1 1 silver badge asked Apr 12, 2012 at 0:32 3,353 1 1 gold badge 34 34 silver badges 48 48 bronze badges

3 Answers 3

A fully-fledged, open source, IPP-2.2 and IPP Everywhere compliant printer simulator is the IPP Sample Software on Github. It is provided by the Printer Working Group (PWG), the body which standardized the IPP (Internet Printing Protocol).

The IPP Sample software can be compiled on any major platform: Linux, Windows, macOS.

The software is currently still in beta, but already very functional. One of the commandline tools it ships is ippserver . This is the simulated printer you are looking for. It's much more powerful than Apples Printer Simulator -- but it does not have a GUI. You need to be familiar with running command line tools.

Once you can start ippserver (with the appropriate options) you'll have a fully-fledged virtual IPP printer instance on your network. You can use to test any (or your self-written) IPP client software against it.

IPP Sample ships a second important tool, ipptool . This can serve as an IPP client. You can play with both to test each other. See how that works in this ASCII-cast:

If you want to try it yourself and you are on Linux, you do not even need to build it yourself. Simply use my read-made AppImage of the software (consisting of one single executable file), which can directly run without an "install" step. Here's how:

wget https://github.com/KurtPfeifle/ippsample/releases/download/continuous/ippsample-x86_64.AppImage 
chmod a+x ippsample-x86_64.AppImage mv ippsample-x86_64.AppImage ippsample 
./ippsample --ai-usage 
./ippsample ipptool -t -v ipp://xxx.xxx.xxx.xxx/ipp/print ipp-2.0.test 

More test examples:

  1. Print a job:
    ./ippsample ipptool -t -v \ -f my.pdf \ ipp://xxx.xxx.xxx.xxx/ipp/print \ print-job.test (This would print send my.pdf as a print job to the printer.)
  2. Validate printer's print-uri support:
    ./ippsample ipptool -t -v \ -o document-uri=https://ftp.pwg.org/pub/pwg/candidates/cs-ippeve10-20130128-5100.14.pdf \ ipp://xxx.xxx.xxx.xxx/ipp/print \ print-uri.test (This would tell the printer to fetch named PDF from document-uri and print it.)