IppPrinter is a lightweight, cross-platform IPP (Internet Printing Protocol) print server web application built with ASP.NET Core and powered by the SharpIppNext library.
- Full IPP Protocol Support: Implements standard IPP 1.1 and 2.0 operations (
Print-Job,Create-Job,Send-Document,Get-Printer-Attributes,Get-Job-Attributes,Get-Jobs,Cancel-Job, subscriptions, etc.) viaSharpIppNext. - HTTP & HTTPS (IPPS) Support: Supports secure encrypted printing over TLS/HTTPS (IPPS) as well as standard unencrypted HTTP connections on port
631. - Automatic Document Conversion: Converts incoming document payloads automatically to PDF format for storage and processing:
- PWG Raster (
image/pwg-raster) - Apple Raster / URF (
image/urf) - Images (
image/png,image/jpeg,image/gif,image/bmp) - Plain Text (
text/plain) with automatic line wrapping and PDF layout generation - Native PDF (
application/pdf) pass-through
- PWG Raster (
- Post-Process Job Action: Automatically execute external application (e.g. Adobe Acrobat, SumatraPDF), CLI print utility (
lp/lpr), or custom script after receiving print job. - mDNS / Zeroconf Discovery: Automatic network printer advertisement (
PrinterDiscoveryService) allowing clients on the network (Windows, macOS, iOS AirPrint, Android, Linux CUPS) to discover the printer automatically. - Multiple IPP Endpoints: Supports common IPP path patterns (
/,/ipp,/ipp/print,/printers/{PrinterName},/{PrinterName}). - Cross-Platform & Windows Service: Runs on Windows, Linux, and macOS. Includes native Windows Service hosting and Event Log integration.
- Background Job Queue: Async job queue with background processing and job timeout handling.
- Easy Deployment & Setup: Comes with PowerShell automation scripts (
Add-Printer.ps1/Remove-Printer.ps1) and an optional Inno Setup GUI installer.
- .NET 10.0 Runtime installed.
The printer is compatible with any standard IPP client.
- Download
IppPrinter-vX.X.X-x64.exefrom Releases. - Run the installer wizard as Administrator.
- Select your desired Installation Type:
- Windows Service (Default): Runs system-wide in the background before user logon (Session 0). Recommended for headless servers. Note: Cannot display GUI windows or call interactive desktop applications.
- Startup Application: Runs automatically upon user logon in the active desktop session. Allows post-process actions to launch applications with a Graphical User Interface (GUI) (e.g. Acrobat Reader, SumatraPDF window, or interactive scripts).
- The setup automatically configures the firewall rule for port
631, sets up permissions, and registers theIppPrinterprint queue.
- Open Printers & scanners in Windows Settings.
- Click Add device.
- Click Add a new device manually.
- Select Add a printer using an IP address or hostname.
- Select IPP Device as the device type.
- Enter
http://127.0.0.1:631/orhttps://127.0.0.1:631/as the Hostname or IP address. - Click Next to finish adding the printer.
- (Optionally) Click Print a test page.
- Click Finish.
Add-Printer -Name "IppPrinter" -IppURL "http://127.0.0.1:631/ipp/print"All installation and removal steps are also automated via Setup/Add-Printer.ps1 and Setup/Remove-Printer.ps1.
Tested with the NetPrinter app and standard Android IPP print services.
IppPrinter can automatically execute an external application, viewer, or command-line tool whenever a print job is received and converted to PDF.
You can configure post-processing actions in appsettings.json under the "Printer" configuration section:
PostProcessName: The full path to the executable or command (e.g.AcroRd32.exe,SumatraPDF.exe,lp,powershell.exe).PostProcessArguments: Arguments passed to the process. You can use placeholders for the target PDF file path:{fullName}: Replaced with the path of the saved PDF file.- If no placeholder is included, the file path is automatically appended in quotes (
"{fullName}").
"Printer": {
"Name": "IppPrinter",
"PostProcessName": "C:\\Program Files\\SumatraPDF\\SumatraPDF.exe",
"PostProcessArguments": "-print-to-default \"{fullName}\""
}"Printer": {
"Name": "IppPrinter",
"PostProcessName": "C:\\Program Files\\Adobe\\Acrobat Reader DC\\Reader\\AcroRd32.exe",
"PostProcessArguments": "/t \"{fullName}\""
}Note
Interactive GUI applications like Adobe Acrobat Reader require running IppPrinter as a Startup Application (active desktop session). If IppPrinter is running as a Windows Service (Session 0), GUI applications cannot display windows. For silent background printing when running as a service, use SumatraPDF or CLI tools instead.
"Printer": {
"Name": "IppPrinter",
"PostProcessName": "lp",
"PostProcessArguments": "-d Physical_Printer \"{fullName}\""
}"Printer": {
"Name": "IppPrinter",
"PostProcessName": "powershell.exe",
"PostProcessArguments": "-NoProfile -ExecutionPolicy Bypass -File \"C:\\Scripts\\ProcessJob.ps1\" -FilePath \"{fullName}\""
}For local development setup, building the installer, and integration testing instructions, see CONTRIBUTION.md.
IppPrinter is provided as-is under the MIT license.
For details on third-party dependencies and their licenses, see THIRD-PARTY-NOTICES.txt.