Deep Dive – Drucken aus Power Automate mit Universal Print

apptech - deep dive - drucken aus power automate mit universal print

Microsoft Universal Print

Mit Universal Print ("Universelles Drucken") bietet Microsoft einen modernen, cloudbasierten Dienst zur Organisation von Druckinfrastruktur an. Dabei werden sowohl "Universal Print ready"-Drucker als auch, mithilfe eines Connectors, Hardware ohne eine explizite Unterstützung in die Cloud eingebunden, wo die Geräte vollwertiger Bestandteil im Azure Active Directory sind. Mit diesem Deep Dive werfen wir einen Blick auf die Verwendung von Power Automate mit Universal Print.

Das Starten eines Druckauftrags ist über mehrere Aufrufe der Microsoft Graph API unkompliziert möglich. Die Aufrufe gliedern sich, wie von Microsoft dokumentiert, in das Anlegen eines Druckauftrags, das Initiieren einer Upload-Session für das entsprechende Dokument, den tatsächlichen Upload der Druckdatei und das eigentliche Starten des Drucks.

Fallstricke im Zusammenspiel mit Power Automate

Möchte man das Drucken eines Dokuments über Universal Print in den Ablauf eines Power Automate Flows integrieren, liegt die Einrichtung eines Custom Connectors zum Aufruf der Graph API nahe. Dieses Vorgehen kommt allerdings daher nicht in Frage, weil alle Content-* Header einer HTTP-Anfrage aus Power Automate heraus nicht übermittelt werden. Dies gilt sowohl für direkte Anfrage mithilfe der HTTP Aktion als auch für Aktionen über einen Custom Connector. Für das Hochladen der Druckdatei werde allerdings zwingend ein Content-Range und Content-Length Header benötigt.

Ein Aufruf der für Universal Print benötigen APIs ist daher mit Power Automate-Boardmittel nicht möglich. Um trotzdem das Drucken von Dokumenten als Bestandteil eines Flows nutzen zu können, muss eine Möglichkeit gefunden werden, wie die notwendigen Anfragen umgeleitet werden können.

Kapselung in einer Azure Function

Eine Option, um dieses Ziel zu erreichen, ist die Kapselung der Kommunikation mit der Graph API in einer Azure Function. Der dortige Einsatz des Graph SDK erlaubt den schnellen Aufbau des notwendigen Programmcodes und das Durchführen der API-Aufrufe.

Power Automate mit Universal Print - Aufruf der Azure Function

Nun kann mit einem einzigen Aufruf der Azure Function der komplette Druckprozess mit allen benötigen Anfragen an die Graph API durchlaufen werden. Dieser Aufruf beinhaltet im Body die Id der Druckerfreigabe (Drucker, welcher genutzt werden soll), den Dateinamen, den Dateityp sowie das Dokument als Base64-String. Zur Authentifizierung wird im Header ein Token übergeben, der zum Druck auf dieser Druckerfreigabe berechtigt. Dieser kann vorab manuell akquiriert oder, wie im nächsten Absatz beschrieben, über einen Custom Connector bezogen werden.

Power Automate mit Universal Print. Printer file

Custom Connector kümmert sich um Authentifizierung

Damit nicht innerhalb eines Power Automate Flows manuell ein Token zur Authentifizierung akquiriert werden muss, kann ein Custom Connector zur Kommunikation mit der Azure Function eingerichtet werden. Dieser verwendet als Authentifizierung-Typ "OAuth 2.0" mit "Azure Active Directory" als Identitätsprovider. Zusätzlich ist eine App Registrierung notwendig. Als Scope werden mindestens die Rechte "PrintJob.ReadWrite" und "PrinterShare.Read.All" benötigt.

Neben den Einstellungen zur Authentifizierung wird der Custom Connector abschließend noch mit dem oben beschriebenen HTTP-Aufruf der Azure Function als Aktion bestückt. Schon kann er in einem Power Automate Flow zum Einsatz kommen und so für das Drucken von Dokumenten sorgen.

Fazit

Nachdem diese Vorarbeiten geleistet wurden, steht dem Druck von Dokumenten aus Power Automate mit Universal Print heraus nichts mehr im Wege. Aus einem Flow kann nun auf simple Art die entsprechende Aktion des Custom Connectors ausgeführt werden.

Power Automate mit Universal Print. Manually trigger a flow.

Durch den Einsatz der Azure Function ist es nun möglich in der Cloud Druckaufträge aus Power Automate heraus zu starten, die von einem über Universal Print angebundenen Drucker verarbeitet werden. Der denkbaren Einsatzszenarios sind dabei keine Grenzen gesetzt: Zyklischer Druck von Power BI Reports, automatischer Druck von speziellen E-Mails oder Ihrer Anhänge und vieles mehr sind durch die zahlreichen Integrationen innerhalb von Microsoft Power Automate möglich - innerhalb der Microsoft-Welt und darüber hinaus.

Autor: FAGI

WordPress Cookie Plugin von Real Cookie Banner