I have a device/appliance that you cannot install drivers for. I would like to add the ability to support network/IPP/AirPrint printers by having the user add the IP Addresses.
Since I am not printing through windows (which would use the IPP), how do I use IPP myself? Is there a c# client (or any windows library) out there that allows you to interact with IPP printers with the IPP protocol?
The direct print function is a function that transmits a file from the host terminal to the printer without the printer driver and allows the printer to detect the file and print. Therefore, you do not need to open a file to print.
In the administrator mode, select [Network] - [IPP Setting], then configure the following settings. Select [ON] to use the IPP printing function. [ON] is specified by default. Select [ON] to use the IPP printing function.
IPP is supported by all modern network Printers and supercedes all legacy network protocols including port 9100 printing and LPD/lpr. IPP is widely implemented in software as well, including the following open source projects: C-based: CUPS and PWG IPP Sample Code.
A PWG standard that allows personal computers and mobile devices to find and print to networked and USB printers without using vendor-specific software. Find Printers.
There are a few IPP client implementations and IPP libraries available for different programming languages (java/php/python). A practical solution could be to use the ipptool
available at http://cups.org/software.php. Create an ipp-command-file called printjob.ipp
:
{
OPERATION Print-Job
GROUP operation-attributes-tag
ATTR charset attributes-charset utf-8
ATTR language attributes-natural-language en
ATTR uri printer-uri $uri
FILE $filename
}
Now you should be able to print a PDF file using these options:
ipptool -tv -f mydoc.pdf ipp://192.168.2.207 printjob.ipp
Make sure the printer (or print server) supports the document format you send. I assume you're familiar with how to execute an external command in your application.
Even though the ipptool
is provided by CUPS it works perfect with any IPP printer. Check RFC 3510 or your printers documentation for the appropriate printer-uri-scheme or use ippfind
.
Experienced developers should be able to implement the print job operation in their preferred programming language and ecosystem. I have implemented the use case from above in kotlin with 100 lines of code: https://github.com/gmuth/ipp-printjob-kotlin.
This is my minimal PrintJob implementation in Java: https://github.com/gmuth/ipp-printjob-java
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With