Windows service for printing files to a local or network printer in the background.
Note: This repository differs from the upstream repo in a few key ways.
- The route paths for the service now start with api/
- The app can also be hosted as a normal web app instead of a windows service
- Supports multiple file types (.pdf, .docx, images)
- Download the project, build it
- Get the executable for your build from .\src\PrintIt.ServiceHost\bin place the package where you can find it. f.e. C:\print-it
- Create print-it as a Windows service from an elevated command line:
sc create "PrintIt" binPath="C:\print-it\PrintIt.ServiceHost.exe" start=auto
- Start the service from the command line:
sc start PrintIt
- Check if the service is listening on port 7000 by running:
netstat -a | find ":7000"
By default, PrintIt.ServiceHost is listening on http://localhost:7000. The endpoint is configurable in appsettings.json.
- Download the project, build it
- Get the executable for your build from .\src\PrintIt.WebHost\bin
- Host as you'd like
Note: A few things to beware of: A user profile is needed to register printers. If you host this application in IIS, set the app pool to 'No Managed Code' and set Load User Profile = True If you host the API on Server Core, don't forget to install printer support.
Install-WindowsFeature Print-Services
List all available printers on the system.
Install the network printer with the UNC-path \\REMOTE_PC_NAME\PRINTER-NAME
.
To print to a given printer, post a multipart form to this end-point with the following fields:
Field Name | Required | Content |
---|---|---|
PdfFile | ✔️ | The PDF file to print (Content-type: application/pdf) |
PrinterPath | ✔️ | The UNC-path of the printer to send the PDF to |
PageRange | An optional page range string (f.e. "1-5", "1, 3", "1, 4-8", "2-", "-5") |
This project uses the PDFium library for rendering the PDF file which is licensed under Apache 2.0, see LICENSE.
The version included in this repository under the folder pdfium-binary
was taken from https://github.com/bblanchon/pdfium-binaries/releases/tag/chromium/4194.