Enhance your Universal Print integration with the Mako SDK

Published Apr 30 2021 04:44 PM 1,385 Views
New Contributor

The Mako Core SDK from Global Graphics Software is perfectly placed to help software vendors and service providers integrate with Universal Print. Our SDK can help developers analyze, edit, and convert the documents at the heart of Universal Print workflows.

Case study: Modifying print job payloads

As a part of Universal Print, developers get access to a set of Microsoft Graph APIs that allows analysis and modification of print job payload data. This feature enables a few different scenarios, including adding security (e.g. redactions or watermarks) to a Universal Print-based workflow.

The diagram below shows a software vendor's implementation for modifying print job payloads using Universal Print and the Graph APIs.

AndrewCardy_0-1619825639466.png

In the scenario, the ISV creates a service which uses the Mako SDK to modify the payload. This service could be implemented as an Azure Serverless Function or App Service deployment. Either of these would expose an endpoint which is called by the Graph’s change notifications when a print job has been sent.

Once notification has been received, the service downloads the payload and uses Mako to analyze and modify it. Once modified, the payload can be uploaded again and redirected.

Mako fits this type of workflow perfectly, since it can handle multiple page description languages (PDLs), including those commonly used in printing such as PDF, PostScript, PCL/XL and XPS.

The Mako SDK also has a PDL-agnostic document object model (DOM), meaning that your integration can edit the print job payload in the same way, regardless of the PDL you've been given.

Existing integrations

If you have an existing Universal Print integration, it's likely that Mako already supports your environment, making switching easy!

The Mako SDK supports both cloud and on-premise deployments, including Azure and containerized workloads. We support many desktop and mobile environments including Windows, Linux (including Alpine), Android, iOS and MacOS.

It’s also likely that your integration uses a programming language that we already support: we natively wrote the SDK in C++ for the perfect balance of performance and ease-of-use, but we distribute it as beautifully wrapped libraries for C#, Java and Python too.

See it in action

We've integrated Mako into Universal Print ourselves and used it to automatically redact print jobs as they go through a Universal Print workflow. Watch the recording of our Mako live coding webinar to see it in action. 

Try it out

We’d be excited to talk to you about your Universal Print project and see how we can help. For more information about Mako, visit globalgraphics.com/mako

%3CLINGO-SUB%20id%3D%22lingo-sub-2312821%22%20slang%3D%22en-US%22%3EEnhance%20your%20Universal%20Print%20integration%20with%20the%20Mako%20SDK%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2312821%22%20slang%3D%22en-US%22%3E%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EThe%20%3CA%20href%3D%22https%3A%2F%2Fwww.globalgraphics.com%2Fproducts%2Fmako%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3EMako%3CSTRONG%3E%E2%84%A2%3C%2FSTRONG%3E%20Core%20SDK%3C%2FA%3E%20from%20%3CA%20href%3D%22https%3A%2F%2Fwww.globalgraphics.com%2Fcompany%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3EGlobal%20Graphics%20Software%20%3C%2FA%3Eis%20perfectly%20placed%20to%20help%20software%20vendors%20and%20service%20providers%20integrate%20with%20Universal%20Print.%20Our%20SDK%20can%20help%20developers%20analyze%2C%20edit%2C%20and%20convert%20the%20documents%20at%20the%20heart%20of%20Universal%20Print%20workflows.%3C%2FP%3E%0A%3CH2%20style%3D%22margin-top%3A%2036px%3B%20margin-bottom%3A%2020px%3B%20font-family%3A%20'Segoe%20UI'%2C%20Segoe%2C%20Tahoma%2C%20Geneva%2C%20sans-serif%3B%20font-weight%3A%20600%3B%20font-size%3A%2020px%3B%20color%3A%20%23333333%3B%22%20id%3D%22toc-hId--470713516%22%20id%3D%22toc-hId--470713512%22%3ECase%20study%3A%20Modifying%20print%20job%20payloads%3C%2FH2%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EAs%20a%20part%20of%20Universal%20Print%2C%20developers%20get%20access%20to%20a%20set%20of%20%3CA%20href%3D%22https%3A%2F%2Faka.ms%2FUPGraphDocs%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3EMicrosoft%20Graph%20APIs%3C%2FA%3E%20that%20allows%20analysis%20and%20modification%20of%20print%20job%20payload%20data.%20This%20feature%20enables%20a%20few%20different%20scenarios%2C%20including%20adding%20security%20(e.g.%20redactions%20or%20watermarks)%20to%20a%20Universal%20Print-based%20workflow.%3C%2FP%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EThe%20diagram%20below%20shows%20a%20software%20vendor's%20implementation%20for%20modifying%20print%20job%20payloads%20using%20Universal%20Print%20and%20the%20Graph%20APIs.%3C%2FP%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Diagram%20showing%20how%20the%20user's%20PC%20interacts%20with%20Universal%20Print%2C%20which%20interacts%20two%20ways%20with%20the%20ISV's%20service%20and%20Mako%3D%22%20style%3D%22width%3A%20999px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F277199iDE346713176E944A%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22AndrewCardy_0-1619825639466.png%22%20alt%3D%22AndrewCardy_0-1619825639466.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EIn%20the%20scenario%2C%20the%20ISV%20creates%20a%20service%20which%20uses%20the%20Mako%20SDK%20to%20modify%20the%20payload.%20This%20service%20could%20be%20implemented%20as%20an%20Azure%20Serverless%20Function%20or%20App%20Service%20deployment.%20Either%20of%20these%20would%20expose%20an%20endpoint%20which%20is%20called%20by%20the%20Graph%E2%80%99s%20%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fgraph%2Fapi%2Fresources%2Fwebhooks%3Fview%3Dgraph-rest-1.0%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Echange%20notifications%3C%2FA%3E%20when%20a%20print%20job%20has%20been%20sent.%3C%2FP%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EOnce%20notification%20has%20been%20received%2C%20the%20service%20downloads%20the%20payload%20and%20uses%20Mako%20to%20analyze%20and%20modify%20it.%20Once%20modified%2C%20the%20payload%20can%20be%20uploaded%20again%20and%20redirected.%3C%2FP%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EMako%20fits%20this%20type%20of%20workflow%20perfectly%2C%20since%20it%20can%20handle%20multiple%20page%20description%20languages%20(PDLs)%2C%20including%20those%20commonly%20used%20in%20printing%20such%20as%20PDF%2C%20PostScript%2C%20PCL%2FXL%20and%20XPS.%3C%2FP%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EThe%20Mako%20SDK%20also%20has%20a%20PDL-agnostic%20document%20object%20model%20(DOM)%2C%20meaning%20that%20your%20integration%20can%20edit%20the%20print%20job%20payload%20in%20the%20same%20way%2C%20regardless%20of%20the%20PDL%20you've%20been%20given.%3C%2FP%3E%0A%3CH2%20style%3D%22margin-top%3A%2036px%3B%20margin-bottom%3A%2020px%3B%20font-family%3A%20'Segoe%20UI'%2C%20Segoe%2C%20Tahoma%2C%20Geneva%2C%20sans-serif%3B%20font-weight%3A%20600%3B%20font-size%3A%2020px%3B%20color%3A%20%23333333%3B%22%20id%3D%22toc-hId-2016799317%22%20id%3D%22toc-hId-2016799321%22%3EExisting%20integrations%3C%2FH2%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EIf%20you%20have%20an%20existing%20Universal%20Print%20integration%2C%20it's%20likely%20that%20Mako%20already%20supports%20your%20environment%2C%20making%20switching%20easy!%3C%2FP%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EThe%20Mako%20SDK%20supports%20both%20cloud%20and%20on-premise%20deployments%2C%20including%20Azure%20and%20containerized%20workloads.%20We%20support%20many%20desktop%20and%20mobile%20environments%20including%20Windows%2C%20Linux%20(including%20Alpine)%2C%20Android%2C%20iOS%20and%20MacOS.%3C%2FP%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EIt%E2%80%99s%20also%20likely%20that%20your%20integration%20uses%20a%20programming%20language%20that%20we%20already%20support%3A%20we%20natively%20wrote%20the%20SDK%20in%20C%2B%2B%20for%20the%20perfect%20balance%20of%20performance%20and%20ease-of-use%2C%20but%20we%20distribute%20it%20as%20beautifully%20wrapped%20libraries%20for%20C%23%2C%20Java%20and%20Python%20too.%3C%2FP%3E%0A%3CH2%20style%3D%22margin-top%3A%2036px%3B%20margin-bottom%3A%2020px%3B%20font-family%3A%20'Segoe%20UI'%2C%20Segoe%2C%20Tahoma%2C%20Geneva%2C%20sans-serif%3B%20font-weight%3A%20600%3B%20font-size%3A%2020px%3B%20color%3A%20%23333333%3B%22%20id%3D%22toc-hId-209344854%22%20id%3D%22toc-hId-209344858%22%3ESee%20it%20in%20action%3C%2FH2%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EWe've%20integrated%20Mako%20into%20Universal%20Print%20ourselves%20and%20used%20it%20to%20automatically%20redact%20print%20jobs%20as%20they%20go%20through%20a%20Universal%20Print%20workflow.%26nbsp%3BWatch%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DO-Y6oe3Roiw%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3Ethe%20recording%3C%2FA%3E%20of%20our%20Mako%20live%20coding%20webinar%20to%20see%20it%20in%20action.%26nbsp%3B%3C%2FP%3E%0A%3CH2%20style%3D%22margin-top%3A%2036px%3B%20margin-bottom%3A%2020px%3B%20font-family%3A%20'Segoe%20UI'%2C%20Segoe%2C%20Tahoma%2C%20Geneva%2C%20sans-serif%3B%20font-weight%3A%20600%3B%20font-size%3A%2020px%3B%20color%3A%20%23333333%3B%22%20id%3D%22toc-hId--1598109609%22%20id%3D%22toc-hId--1598109605%22%3ETry%20it%20out%3C%2FH2%3E%0A%3CP%20style%3D%22margin-top%3A%2020px%3B%22%3EWe%E2%80%99d%20be%20excited%20to%20%3CA%20href%3D%22mailto%3Ainfo%40globalgraphics.com%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3Etalk%20to%20you%3C%2FA%3E%20about%20your%20Universal%20Print%20project%20and%20see%20how%20we%20can%20help.%20For%20more%20information%20about%20Mako%2C%20visit%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fwww.globalgraphics.com%2Fglobalgraphics-software%2Fproducts%2Fmako%22%20target%3D%22_blank%22%20rel%3D%22noopener%20nofollow%20noreferrer%22%3Eglobalgraphics.com%2Fmako%3C%2FA%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-TEASER%20id%3D%22lingo-teaser-2312821%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSPAN%3EThe%20Mako%20Core%20SDK%20can%20help%20developers%20analyze%2C%20edit%2C%20and%20convert%20the%20documents%20at%20the%20heart%20of%20Universal%20Print%20workflows.%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%3CSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22mako.png%22%20style%3D%22width%3A%20640px%3B%22%3E%3CIMG%20src%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F277200i33B912B4FF4B62ED%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22mako.png%22%20alt%3D%22mako.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-TEASER%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2312821%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EPartners%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E
Co-Authors
Version history
Last update:
‎May 04 2021 09:15 AM
Updated by: