How to send/request IPP (Internet Printing Protocol) messages from Blazor
Product JSPrintManager for Blazor Published 04/06/2024 Updated 11/28/2024 Author Neodynamic
Overview
JSPrintManager for Blazor supports IPP (Internet Printing Protocol) Communication allowing you to Send/Request IPP JSON messages to any IPP URI device and get IPP JSON response from the client system.
In this walkthrough, you'll learn how to Send/Request IPP JSON messages to any IPP URI device and get IPP JSON response from Blazor. This solution works with any popular browser like Chrome, Firefox, IE/Edge & Safari on Windows, Linux, Raspberry Pi, Android and Mac systems!
The sample code in this article will perform the following IPP tasks on the specified IPP Device URI:
- Get Printer Attributes: Will return an IPP JSON object containing all the printer attributes like name, supported papers, and many more!
- Get Completed Jobs: Will return an IPP JSON object containing all the completed jobs including the job ID, job Name, job State, etc.
- Print a Plain Text file: Will print a plain text content and will return an IPP JSON object containing the job ID and related into.
- Print a PDF file: Will print a PDF file content and will return an IPP JSON object containing the job ID and related into. IMPORTANT! The target printer must support printing PDF docs natively otherwise an error response will be issued back by the printer.
Follow up these steps
-
JSPrintManager Client App
Be sure you install in your dev machine JSPrintManager (JSPM) (Available for Windows, Linux, Raspberry Pi, Android & Mac)
IMPORTANT: This small app must be installed on each client! - In your Blazor project...
- Add a NuGet reference to the JSPrintManager Razor Component
- Add the JSPrintManager service...
- Add the following statement at the top of your
Startup
file
using Neodynamic.Blazor;
- For Blazor Server
Add the following line in theStartup's ConfigureServices
method
services.AddJSPrintManager();
For .NET 8+ you must use Interactive Server components and render mode, so add these settings:
builder.Services.AddRazorComponents() .AddInteractiveServerComponents();
app.MapRazorComponents<App>() .AddInteractiveServerRenderMode()
- For Blazor WebAssembly
Add the following line in theProgram's Main
method
builder.Services.AddJSPrintManager();
- For Blazor Server
- Add the following statement at the top of your
- Add the following statement in the
_Imports.razor
file
@using Neodynamic.Blazor
- Add a new Razor Page and copy/paste the following code. Please read the source code comments to understand the logic!
For .NET 8+ Blazor Server you must use Interactive Server render mode, so add these settings:
@page "/" @rendermode InteractiveServer @inject JSPrintManager JSPrintManager
@page "/" @inject JSPrintManager JSPrintManager <div> <strong>JSPM </strong><span>WebSocket Status </span> @if (JSPrintManager.Status == JSPMWSStatus.Open) { <span class="badge badge-success"> <i class="fa fa-check" /> Open </span> } else if (JSPrintManager.Status == JSPMWSStatus.Closed) { <span class="badge badge-danger"> <i class="fa fa-exclamation-circle" /> Closed! </span> <div> <strong>JSPrintManager (JSPM) App</strong> is not installed or not running! <a href="https://neodynamic.com/downloads/jspm" target="_blank">Download JSPM Client App...</a> </div> } else if (JSPrintManager.Status == JSPMWSStatus.Blocked) { <span class="badge badge-warning"> <i class="fa fa-times-circle" /> This Website is Blocked! </span> } else if (JSPrintManager.Status == JSPMWSStatus.WaitingForUserResponse) { <span class="badge badge-warning"> <i class="fa fa-user-circle" /> Waiting for user response... </span> } </div> @if (JSPrintManager.Status == JSPMWSStatus.Open) { <div class="row"> <div class="col-md-12"> <h2 class="text-center"> IPP (Internet Printing Protocol) Comm from Blazor </h2> <hr /> </div> </div> <div class="row"> <div class="col-md-12"> <div class="text-center"> <strong>Printer URI</strong> <br /> <EditForm Model="@PrinterUri"> <InputText @bind-Value="PrinterUri" /> </EditForm> </div> <hr /> </div> </div> <div class="row"> <div class="col-md-12"> <br /> <div class="text-center"> <button class="btn btn-primary" @onclick="IppGetPrinterAttributes"> Get Printer Attributes... </button> <button class="btn btn-primary" @onclick="IppGetCompletedJobs"> Get Completed Jobs... </button> <button class="btn btn-primary" @onclick="IppPrintTextFile"> Print Text Plain File... </button> <button class="btn btn-primary" @onclick="IppPrintPdfFile"> Print PDF File... </button> </div> </div> </div> <div class="row"> <div class="col-md-12"> <br /> <p>IPP Response / Error</p> <textarea readOnly rows="10" style="background-color:#302a2a;color:#fff;font-family: 'Courier New', Courier, monospace;width:100%">@JSPrintManager.IppMessageResponse</textarea> </div> </div> } @code { protected override void OnAfterRender(bool firstRender) { if (firstRender) { JSPrintManager.OnStatusChanged += () => { StateHasChanged(); }; JSPrintManager.OnError += () => { JSPrintManager.SetIppMessage(JSPrintManager.LastErrorMessage); StateHasChanged(); }; JSPrintManager.OnGetIppMessageResponse += () => StateHasChanged(); JSPrintManager.Start(); } base.OnAfterRender(firstRender); } private string PrinterUri { get; set; } = "ipp://192.168.0.120:631"; private void IppGetPrinterAttributes() { // Create IPP JSON Message for ... // Getting Printer Attributes var ippMsgGetPrinterAttributes = $@"{{ ""version"": {{ ""major"": 1, ""minor"": 1 }}, ""operationId"": {(int)Ipp.GET_PRINTER_ATTRIBUTES}, ""requestId"": 1, ""groups"": [ {{ ""tag"": {(int)Ipp.OPERATION_ATTRIBUTES_TAG}, ""attributes"": [ {{ ""tag"": {(int)Ipp.CHARSET}, ""name"": ""attributes-charset"", ""value"":[""utf-8""] }}, {{ ""tag"": {(int)Ipp.NATURAL_LANG}, ""name"": ""attributes-natural-language"", ""value"":[""en-us""] }}, {{ ""tag"": {(int)Ipp.URI}, ""name"": ""printer-uri"", ""value"":[""{PrinterUri}""] }}, {{ ""tag"": {(int)Ipp.KEYWORD}, ""name"": ""requested-attributes"", ""value"":[""all""] }} ] }} ] }}"; JSPrintManager.SetIppMessage(""); JSPrintManager.TrySendIppMessage(PrinterUri, ippMsgGetPrinterAttributes); } private void IppGetCompletedJobs() { // Create IPP JSON Message for ... // Getting Printer Completed Jobs var ippMsgGetCompletedJobs = $@"{{ ""version"": {{ ""major"": 1, ""minor"": 1 }}, ""operationId"": {(int)Ipp.GET_JOBS}, ""requestId"": 1, ""groups"": [ {{ ""tag"": {(int)Ipp.OPERATION_ATTRIBUTES_TAG}, ""attributes"": [ {{ ""tag"": {(int)Ipp.CHARSET}, ""name"": ""attributes-charset"", ""value"":[""utf-8""] }}, {{ ""tag"": {(int)Ipp.NATURAL_LANG}, ""name"": ""attributes-natural-language"", ""value"":[""en-us""] }}, {{ ""tag"": {(int)Ipp.URI}, ""name"": ""printer-uri"", ""value"":[""{PrinterUri}""] }}, {{ ""tag"": {(int)Ipp.KEYWORD}, ""name"": ""which-jobs"", ""value"":[""completed""] }}, {{ ""tag"": {(int)Ipp.KEYWORD}, ""name"": ""requested-attributes"", ""value"":[""job-id"", ""job-state"", ""job-state-reasons"", ""job-name"", ""job-media-sheets-completed""] }} ] }} ] }}"; JSPrintManager.SetIppMessage(""); JSPrintManager.TrySendIppMessage(PrinterUri, ippMsgGetCompletedJobs); } private void IppPrintTextFile() { // Create IPP JSON Message for ... // Printing a Plain Text file var ippMsgPrintFile = $@"{{ ""version"": {{ ""major"": 1, ""minor"": 1 }}, ""operationId"": {(int)Ipp.PRINT_JOB}, ""requestId"": 1, ""groups"": [ {{ ""tag"": {(int)Ipp.OPERATION_ATTRIBUTES_TAG}, ""attributes"": [ {{ ""tag"": {(int)Ipp.CHARSET}, ""name"": ""attributes-charset"", ""value"":[""utf-8""] }}, {{ ""tag"": {(int)Ipp.NATURAL_LANG}, ""name"": ""attributes-natural-language"", ""value"":[""en-us""] }}, {{ ""tag"": {(int)Ipp.URI}, ""name"": ""printer-uri"", ""value"":[""{PrinterUri}""] }}, {{ ""tag"": {(int)Ipp.NAME_WITHOUT_LANG}, ""name"": ""job-name"", ""value"":[""HelloWorldTest""] }}, {{ ""tag"": {(int)Ipp.MIME_MEDIA_TYPE}, ""name"": ""document-format"", ""value"":[""application/octet-stream""] }} ] }}, {{ ""tag"": {(int)Ipp.JOB_ATTRIBUTES_TAG}, ""attributes"": [ {{ ""tag"": {(int)Ipp.INTEGER}, ""name"": ""copies"", ""value"":[1] }}, {{ ""tag"": {(int)Ipp.KEYWORD}, ""name"": ""media"", ""value"":[""iso_a4_210x297mm""] }} ] }} ] }}"; var txtFileBinContent = System.Text.Encoding.UTF8.GetBytes("Hello World - Printed by JSPrintManager through IPP!"); JSPrintManager.SetIppMessage(""); JSPrintManager.TrySendIppMessage(PrinterUri, ippMsgPrintFile, txtFileBinContent); } private void IppPrintPdfFile() { // Create IPP JSON Message for ... // Printing a PDF file var ippMsgPrintFile = $@"{{ ""version"": {{ ""major"": 1, ""minor"": 1 }}, ""operationId"": {(int)Ipp.PRINT_JOB}, ""requestId"": 1, ""groups"": [ {{ ""tag"": {(int)Ipp.OPERATION_ATTRIBUTES_TAG}, ""attributes"": [ {{ ""tag"": {(int)Ipp.CHARSET}, ""name"": ""attributes-charset"", ""value"":[""utf-8""] }}, {{ ""tag"": {(int)Ipp.NATURAL_LANG}, ""name"": ""attributes-natural-language"", ""value"":[""en-us""] }}, {{ ""tag"": {(int)Ipp.URI}, ""name"": ""printer-uri"", ""value"":[""{PrinterUri}""] }}, {{ ""tag"": {(int)Ipp.NAME_WITHOUT_LANG}, ""name"": ""job-name"", ""value"":[""HelloWorldTest""] }}, {{ ""tag"": {(int)Ipp.MIME_MEDIA_TYPE}, ""name"": ""document-format"", ""value"":[""application/pdf""] }} ] }}, {{ ""tag"": {(int)Ipp.JOB_ATTRIBUTES_TAG}, ""attributes"": [ {{ ""tag"": {(int)Ipp.INTEGER}, ""name"": ""copies"", ""value"":[1] }}, {{ ""tag"": {(int)Ipp.KEYWORD}, ""name"": ""media"", ""value"":[""iso_a4_210x297mm""] }} ] }} ] }}"; var pdfFileInBase64 = "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cihuZW8pPj5lbmRvYmoKeHJlZgowIDE5CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwNTI3NiAwMDAwMCBuIAowMDAwMDI3Njk4IDAwMDAwIG4gCjAwMDAwMDUyMDggMDAwMDAgbiAKMDAwMDAwNTA0OCAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDUwMjggMDAwMDAgbiAKMDAwMDAwNTMyNCAwMDAwMCBuIAowMDAwMDA1NDM2IDAwMDAwIG4gCjAwMDAwMDYzNjkgMDAwMDAgbiAKMDAwMDAwNjEyMSAwMDAwMCBuIAowMDAwMDIxMzIxIDAwMDAwIG4gCjAwMDAwMDUzNjUgMDAwMDAgbiAKMDAwMDAwNTM5NSAwMDAwMCBuIAowMDAwMDA2NTgyIDAwMDAwIG4gCjAwMDAwMjE1MTUgMDAwMDAgbiAKMDAwMDAwNTcyNSAwMDAwMCBuIAowMDAwMDA1ODk0IDAwMDAwIG4gCjAwMDAwMDYyODYgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSAxOSAvUm9vdCAxIDAgUiAvSW5mbyAyIDAgUgovSUQgWzxEODQ5QzBCNzc0MkUxOURCNjBFMTdGRUMyMDdDQzM4NT48RDg0OUMwQjc3NDJFMTlEQjYwRTE3RkVDMjA3Q0MzODU+XQo+PgpzdGFydHhyZWYKMjc5MTUKJSVFT0YK"; var pdfFileBinContent = System.Text.Encoding.UTF8.GetBytes(pdfFileInBase64); JSPrintManager.SetIppMessage(""); JSPrintManager.TrySendIppMessage(PrinterUri, ippMsgPrintFile, pdfFileBinContent); } }
- That's it! Run your website and test it. Click on Print Now... to print the PDF file without print dialog. You can print it to the Default client printer or you can get a list of the installed printers available at the client machine.