Zum Inhalt springen

PDF-Drucker

Viele Programme, etwa ein ERP oder eine Warenwirtschaft, können Belege nur drucken. RUNOS arbeitet aber mit Dateien in einem Ordner. Die Brücke ist ein PDF-Drucker: Er erscheint in jedem Programm als normaler Drucker, schreibt aber jeden Druck ohne Rückfrage als PDF in einen Ordner. Diesen Ordner überwacht ein File-Trigger.

RUNOS legt diesen Drucker selbst an. Die PDFs speichert der RUNOS-Dienst, ein Windows-Dienst, der mit Windows startet: Drucke kommen also auch an, wenn RUNOS geschlossen ist. Ein zusätzliches Programm ist nicht nötig.

Es gibt einen Drucker und einen Dienst für alle Windows-Benutzer des PCs, aber jeder Benutzer hat seinen eigenen Ordner: Ein Druck landet im Ordner des Benutzers, der ihn gedruckt hat. Auf einem Terminalserver drucken alle auf denselben Drucker RUNOS, und die Workflows jedes Benutzers bekommen nur seine Drucke.

ERP: Drucken auf „RUNOS“ ──▶ Dokumente\RUNOS\Pools\RUNOS\2026-10-16 14-05-09 1.pdf ──▶ File-Trigger ──▶ Workflow
  1. Öffnen Sie in der Aktivitätsleiste Drucker und klicken Sie auf Drucker hinzufügen.
  2. Füllen Sie im Fenster die Felder aus (Name und Ordner sind vorausgefüllt):
Feld Bedeutung
Druckername So heißt der Drucker in Windows und in jedem Programm, z. B. RUNOS oder RUNOS Rechnungen. Nicht erlaubt sind \ / , ! : * ? " < > |.
Gilt für Welchen Ordner Sie bearbeiten: Aktueller Benutzer (Standard) ist Ihr eigener Ordner, Alle Benutzer der Ordner für alle Windows-Benutzer des PCs, die keinen eigenen gewählt haben (Administratorrechte). Siehe Mehrere Windows-Benutzer.
Ordner (Pool) Ihr Ordner: Hierhin werden Ihre Drucke gespeichert. Standard Dokumente\RUNOS\Pools\<Druckername>; jeder Windows-Benutzer des PCs hat seinen eigenen und kann ihn ohne Administratorrechte ändern. Der Ordner muss auf diesem PC liegen: Netzwerkfreigaben (\\server\freigabe) und verbundene Netzlaufwerke (z. B. Z:\) lehnt RUNOS ab. Genau diesen Ordner tragen Sie als Pool des File-Triggers ein (für den Standard: %userdocuments%\RUNOS\Pools\<Druckername>). RUNOS legt ihn beim Speichern an, wenn es ihn noch nicht gibt.
Dateiname Muster für den Namen jeder Datei, Standard %Y-%m-%d %H-%n-%s %i.pdf. Es muss %i enthalten und auf .pdf enden.
Papierformat A4 (Standard) oder US Letter. Darauf drucken Programme, die selbst kein Papier wählen, etwa der Windows-Editor (Notepad). Ein Programm mit eigenem Papierformat, z. B. Word über Seite einrichten oder ein ERP mit festem Formular, behält seines. Passt ein Briefbogen (PDFEditor-Operation Overlay) nicht genau auf die Seite, ist meist das Papierformat die Ursache.
  1. Klicken Sie auf Drucker hinzufügen und bestätigen Sie die Windows-Abfrage nach Administratorrechten (nur beim Anlegen eines Druckers, wenn Sie Dateiname, Papierformat oder den Ordner für alle Benutzer ändern, oder wenn der RUNOS-Dienst fehlt, veraltet ist oder nicht läuft).

Ist eine Eingabe ungültig, nennt das Fenster den Fehler und bleibt mit Ihren Eingaben offen. Danach erscheint der Drucker als Karte auf der Seite Drucker (mit Ordner, Dateiname und Papierformat) und steht in jedem Programm zur Auswahl. Das Abzeichen auf der Karte zeigt, woher Ihr Ordner kommt: Eigener Ordner, Ordner für alle Benutzer oder Standardordner.

Platzhalter Bedeutung
%Y / %y Jahr vierstellig / zweistellig
%m Monat
%d Tag
%H Stunde (0–23)
%n Minute
%s Sekunde
%i Zähler: die kleinste Zahl ab 1, für die es noch keine Datei gibt

%i ist Pflicht: Eine vorhandene Datei wird nie überschrieben, der Zähler sorgt dafür, dass jeder Druck einen freien Namen bekommt. Ein Unterordner im Muster ist möglich, z. B. %Y\%m\Rechnung %i.pdf; der File-Trigger sieht dann aber nur Dateien direkt im Pool.

  • Ändern: Karte des Druckers oder ihren Stift (Bearbeiten) anklicken, im Fenster Ordner, Dateinamen oder Papierformat ändern, Speichern. Das gilt ab dem nächsten Druck. Mit Aktueller Benutzer ändert sich der Ordner nur für Sie; die anderen Benutzer behalten ihren. Leeren Sie dort das Feld Ordner, gilt für Sie wieder der Ordner für alle Benutzer (bzw. der Standard). Ein Drucker aus einer älteren RUNOS-Version zeigt A4 und bekommt A4 beim nächsten Speichern, außer Sie wählen vorher ein anderes Format. Den Druckernamen können Sie nicht ändern: Legen Sie einen Drucker mit dem neuen Namen an und löschen Sie den alten.
  • Weiterer Drucker: Drucker hinzufügen schlägt einen freien Namen vor (RUNOS1, RUNOS2, …).
  • Ordner öffnen: Das Ordnersymbol auf der Karte öffnet Ihren Ordner des Druckers im Explorer (und legt ihn an, falls es ihn noch nicht gibt).
  • Löschen: Der rote Papierkorb auf der Karte entfernt den Drucker nach einer Rückfrage aus Windows, für alle Benutzer des PCs. Noch nicht gedruckte Aufträge dieses Druckers werden verworfen; PDFs im Ordner bleiben.

Am einfachsten wählen Sie im Workflow den Printer-Trigger und darin den Drucker. RUNOS nimmt dann selbst den Ordner des Druckers für den angemeldeten Benutzer, als Filter *.pdf, und folgt dem Ordner, wenn Sie ihn hier ändern:

"Trigger": {
"Type": "Printer",
"Name": "Rechnungsdruck",
"Parameters": { "Printer": "RUNOS" }
}

Alternativ geht ein File-Trigger: Sein Pool ist der Ordner des Druckers, der Filter *.pdf:

"Trigger": {
"Type": "File",
"Name": "Rechnungsdruck",
"Parameters": {
"Pool": "%userdocuments%\\RUNOS\\Pools\\RUNOS",
"Filter": "*.pdf",
"CronExpression": "0/10 * * * * ?"
}
}

Sobald ein PDF im Ordner ankommt, prüft der laufende Workflow, dessen Pool genau dieser Ordner ist, den Ordner sofort, ohne auf die nächste Prüfung nach CronExpression zu warten. Kommen mehrere Drucke schnell hintereinander, nimmt eine Prüfung alle mit. Die regelmäßige Prüfung bleibt und holt alles andere ab, z. B. Dateien, die von Hand in den Ordner kopiert werden. Sofortprüfungen zählen nicht für RepeatCount.

Der File-Trigger wartet, bis die Datei vollständig geschrieben ist, und verschiebt sie dann in seinen Spooler. Der Ordner bleibt so leer, und der Drucker kann jederzeit weiter hineinschreiben.

Mit %userdocuments% funktioniert derselbe Workflow für jeden Benutzer, jeweils mit seinem Ordner. Die Vorlagen für den PDF-Drucker (Neu in der Workflow-Liste) nutzen so den Drucker RUNOS.

  1. Wählen Sie im ERP (bzw. im Programm, aus dem gedruckt wird) den Drucker, zum Beispiel für das Rechnungsformular.
  2. Öffnen Sie den Workflow in RUNOS und klicken Sie auf Lauschen.
  3. Drucken Sie einen Beleg. Nach wenigen Sekunden erscheint im Protokoll TriggerFired mit dem Dateinamen und, wenn vorhanden, den gefundenen Skriptblöcken.

Wie Sie daraus eine geprüfte XRechnung machen, zeigt das XRechnung-Beispiel.

Der Dienst stellt bei jedem Druck fest, welcher Windows-Benutzer gedruckt hat (am Auftrag in der Windows-Warteschlange), und speichert das PDF im Ordner dieses Benutzers:

  1. im Ordner, den der Benutzer unter Drucker mit Gilt für: Aktueller Benutzer gewählt hat,
  2. sonst im Ordner für Alle Benutzer, sofern er nicht im Profil eines anderen Benutzers liegt (bei einem Drucker aus einer älteren RUNOS-Version ist das der damals gespeicherte Ordner),
  3. sonst in Dokumente\RUNOS\Pools\<Druckername> dieses Benutzers.

Der Drucker wird also einmal angelegt, auch für 30 Benutzer auf einem Terminalserver. Den gemeinsamen Ordner legt ein Administrator so fest:

  1. Drucker öffnen, den Drucker anklicken (oder Drucker hinzufügen).
  2. Gilt für auf Alle Benutzer stellen.
  3. Unter Ordner den Ordner eintragen, z. B. D:\Scans\%USERNAME%. %USERNAME% steht für den Windows-Benutzernamen dessen, der druckt: Anna druckt nach D:\Scans\anna, Ben nach D:\Scans\ben. Es ist der einzige Platzhalter in diesem Feld. Ohne %USERNAME% landen die Drucke aller Benutzer im selben Ordner. Leer = Dokumente\RUNOS\Pools\<Druckername> jedes Benutzers.
  4. Speichern und die Abfrage nach Administratorrechten bestätigen. Das gilt ab dem nächsten Druck.

Benutzer, die mit Aktueller Benutzer einen eigenen Ordner gewählt haben, behalten diesen; wer zum gemeinsamen Ordner zurück will, leert dort das Feld Ordner und speichert. Wer Alle Benutzer speichert, folgt selbst ebenfalls dem gemeinsamen Ordner. Jeder Benutzer muss im gemeinsamen Ordner schreiben dürfen; den Unterordner mit seinem Namen legt der Dienst beim ersten Druck an. Im File-Trigger tragen Sie denselben Ordner als Pool ein, %USERNAME% setzt RUNOS dort ebenfalls für den angemeldeten Benutzer ein: "Pool": "D:\\Scans\\%USERNAME%".

Ist der Benutzer angemeldet (auch in einer getrennten Sitzung), schreibt der Dienst als dieser Benutzer, mit dessen Rechten: Ein PDF landet nie dort, wo der Benutzer selbst nicht schreiben darf, und die Datei gehört ihm. Ein Druck von einem Konto ohne Windows-Sitzung, etwa einem ERP, das als Dienst läuft, landet im Ordner für alle Benutzer (mit dem Namen dieses Kontos für %USERNAME%), sonst in Dokumente\RUNOS\Pools\<Druckername> dieses Kontos; ein mit Aktueller Benutzer gewählter Ordner gilt dann nicht. Wer gedruckt hat, erkennt der Dienst am Auftrag, den die Windows-Warteschlange in diesem Moment als „Wird gedruckt“ zeigt; darauf wartet er bis zu 10 Sekunden. Er rät nie: Ist kein solcher Auftrag zu sehen oder sind es Aufträge verschiedener Benutzer, gilt der Druck als nicht zugeordnet (siehe unten), außer es gibt einen festen Ordner für alle Benutzer ohne %USERNAME%.

Kann der Dienst einen Druck keinem Benutzer zuordnen (kein Benutzer feststellbar, oder ein Konto ohne Sitzung und ohne Profil auf diesem PC) oder den Ordner des Benutzers nicht beschreiben und gibt es keinen festen Ordner für alle Benutzer, geht der Druck nicht verloren: Der Dienst speichert ihn in C:\Program Files\RUNOS\Service\Unassigned\<Druckername>. Diesen Ordner können nur Administratoren öffnen (und der RUNOS-Dienst), keine normalen Benutzer, denn er kann vertrauliche Belege enthalten. Im Protokoll des Dienstes (C:\Program Files\RUNOS\Service\Logs) steht dann eine Warnung mit Dateiname, Ordner und Grund. Ein Administrator prüft das PDF und verschiebt es in den Ordner des richtigen Benutzers; dort verarbeitet es dessen Workflow.

Solange der RUNOS-Dienst nicht läuft, nimmt das RUNOS des angemeldeten Benutzers die Drucke selbst entgegen und speichert sie in dessen Ordner. Einen Druck eines anderen Benutzers lehnt es ab (Fehler im Protokoll), damit er nicht im falschen Ordner landet; dieser Druck geht verloren. Sorgen Sie auf einem Terminalserver dafür, dass der Dienst läuft (Jetzt beheben im Hinweis auf der Seite Drucker).

Der Drucker nutzt nur Teile von Windows: den Treiber Microsoft Print to PDF, der das PDF erzeugt (Text bleibt Text), und einen lokalen Anschluss (Local Port) namens \\.\pipe\RUNOS_PDF_<Druckername>. Über diesen Anschluss gibt Windows das fertige PDF an den RUNOS-Dienst weiter, statt nach einem Dateinamen zu fragen. Der Dienst schreibt es zuerst in den versteckten Unterordner .runos-incoming des Ordners des druckenden Benutzers und verschiebt es dann unter dem Namen aus dem Dateinamen-Muster in den Ordner; der File-Trigger sieht so nur vollständige Dateien. Kann der Dienst nicht in den Ordner schreiben, nimmt er den Druck nicht an: Der Auftrag bleibt in der Windows-Warteschlange, und Windows versucht es erneut.

Der RUNOS-Dienst läuft als Windows-Dienst unter dem Systemkonto, startet automatisch mit Windows und wird nach einem Absturz neu gestartet. Er liegt unter C:\Program Files\RUNOS\Service und schreibt sein Protokoll nach C:\Program Files\RUNOS\Service\Logs (eine Datei pro Tag, 14 Tage). Das Löschen des letzten Druckers entfernt den Dienst nicht.

Dateiname und Papierformat jedes Druckers stehen unter HKEY_LOCAL_MACHINE\SOFTWARE\RUNOS\PdfPrinters\<Druckername> (bei Druckern aus älteren Versionen auch der damalige Ordner). Den eigenen Ordner jedes Benutzers speichert RUNOS unter HKEY_CURRENT_USER\Software\RUNOS\PdfPrinters\<Druckername>. Das Papierformat setzt RUNOS bei jedem Speichern als Standard des Druckers in Windows, für alle Benutzer und für den Benutzer, der speichert. Es wird nichts nach C:\Windows\System32 kopiert, und die Druckwarteschlange wird nicht neu gestartet.

Hat ein Administrator „Microsoft Print to PDF“ unter Windows-Features abgeschaltet, schaltet RUNOS es beim Speichern wieder ein.

Jeder Druck steht im Protokoll des Dienstes als „PDF printer “…”: saved … for “. Beim Start schreibt der Dienst die Windows-Version ins Protokoll, und er prüft alle 30 Sekunden die Warteschlange jedes RUNOS-Druckers: Ein Auftrag, der mit Fehler oder länger als eine Minute beim Drucken hängt, steht dort als „PDF printer “…”: job … is stuck in the Windows queue“, mit dem Zeitpunkt, zu dem Windows zuletzt den Anschluss geöffnet hat. Ist RUNOS geöffnet und startet ein Workflow sofort, steht im Protokoll von RUNOS „PDF printer “…”: … arrived; workflow “…” checks its folder now“.

Problem Ursache und Lösung
„Administrator rights were not granted“ Die Windows-Abfrage wurde abgelehnt. Erneut speichern und mit Ja bestätigen, ggf. mit einem Administratorkonto.
„A printer named … already exists and is not a RUNOS printer“ Es gibt schon einen anderen Drucker mit diesem Namen. Wählen Sie einen anderen Namen.
„… could not be switched on“ Der Windows-Treiber fehlt. Unter Windows-Features (optionalfeatures.exe) Microsoft Print to PDF einschalten und erneut speichern.
„The folder must be on this PC“ / „… is on a network drive“ Der Ordner liegt auf einer Netzwerkfreigabe oder einem Netzlaufwerk. Einen Ordner auf diesem PC wählen.
„… the RUNOS service could not be installed or started“ Der Drucker ist angelegt, der Dienst aber nicht. Bis er läuft, nimmt RUNOS die Drucke nur entgegen, solange es geöffnet ist. Erneut speichern; blockiert eine Sicherheitssoftware C:\Program Files\RUNOS\Service\RUNOS.Service.exe, diese freigeben.
Der Druckauftrag steht mit „Fehler“ in der Windows-Warteschlange Der RUNOS-Dienst läuft nicht, oder er kann nicht in den Ordner schreiben. Unter Dienste „RUNOS Service“ prüfen und im Protokoll des Dienstes nach „PDF printer“ suchen. Hängt ein Auftrag länger als eine Minute, steht dort „… is stuck in the Windows queue“ mit Status und Windows-Version. Folgt „Windows has not connected to the port“, kann Windows den Anschluss nicht öffnen: RUNOS auf die aktuelle Version bringen und den Drucker einmal speichern (unter Windows 11 24H2 und Windows Server 2025 hingen Drucke mit älteren Versionen immer), sonst prüfen, ob eine Sicherheitssoftware den Dienst blockiert. Steht dort „Windows last connected …“, liegt es am Ordner; die Zeilen davor nennen den Grund. Der Auftrag kommt von selbst an, sobald es wieder geht.
„… in the folder for unassigned prints …“ Der Dienst konnte den Druck keinem Benutzer zuordnen oder den Ordner des Benutzers nicht beschreiben; der Grund steht nach „because“. Das PDF liegt in C:\Program Files\RUNOS\Service\Unassigned\<Druckername> (nur für Administratoren). Prüfen und in den richtigen Ordner verschieben, siehe Nicht zugeordnete Drucke. Kommt es öfter vor, melden Sie es mit dem Protokoll des Dienstes.
Das PDF landet im Ordner eines anderen Benutzers oder in Dokumente\RUNOS\Pools\… statt in Ihrem Ordner Der Druck kam von einem anderen Windows-Konto (z. B. ein ERP, das unter eigenem Benutzer oder als Dienst läuft). Das Protokoll des Dienstes nennt den Benutzer nach saved … for. Wählen Sie den Ordner angemeldet als dieses Konto, oder nehmen Sie dessen Ordner als Pool.
Es kommt keine Datei im Ordner an Im Protokoll des Dienstes (C:\Program Files\RUNOS\Service\Logs) nach „PDF printer“ suchen. Konnte das PDF nicht unter seinem Namen gespeichert werden, liegt es im versteckten Unterordner .runos-incoming des Ordners.
„another program on this PC … receives its prints“ Ein anderes Programm hält den Anschluss des Druckers, meist ein RUNOS unter einem anderen Windows-Benutzer, solange der Dienst nicht läuft. Den Dienst installieren (Jetzt beheben im Hinweis auf der Seite Drucker); dann nimmt nur noch er die Drucke entgegen.
Die Datei kommt an, aber der Workflow startet nicht Läuft der Workflow (Liste zeigt Stoppen)? Beim Printer-Trigger: Ist der richtige Drucker gewählt? Beim File-Trigger: Ist der Pool genau der Ordner des Druckers, passt der Filter? Teilen mehrere Workflows den Ordner, muss die Datei den Workflow in ihren Skriptblöcken nennen (Gemeinsamer Pool).
Das PDF hat das falsche Papierformat (z. B. US Letter statt A4) Den Drucker bearbeiten, unter Papierformat das gewünschte Format wählen und Speichern. Wählt das Programm sein Papier selbst (Word, ERP), dort das Format einstellen. Hat ein Benutzer in den Druckeinstellungen von Windows ein eigenes Papier gewählt, gilt für ihn dieses; dort ändern.
Skriptblöcke werden nicht gefunden Das PDF enthält keinen Text: Das Formular druckt die Zeilen als Grafik. Im Formular eine echte Schrift verwenden.