Bents Blog

 

Ein IT Blog mit Themen aus dem Windows Server Umfeld.

Best Practices: Kostenfreier PDF-Drucker im Netzwerk als Dienst unter Windows Server 2008 R2

Ich brauche sicher nicht zu erklären, dass das Portable Document Format (PDF) ein nicht mehr wegzudenkendes Dokumentenformat darstellt. Und so kennt auch jeder Administrator die Anforderung, dass für die Erstellung dieser Dokumente geeignete Lösungen existieren müssen. Der Kunde wird dabei immer sagen: Wenn möglich, sollte es nichts kosten.

Der folgende Leitfaden dient zum einen als Dokumentation für wiederkehrende Projekte aber auch als Anregung für Dritte. Dabei wird eine für ein Netzwerk geeignete Lösung für die automatische Erstellung und Ablage von PDF-Dokumenten über einen zentralen Drucker vorgestellt.

Update vom 13. August 2012

Auf Grund der größeren Veränderungen des PDFCreator nach Version 1.3.x habe ich einen vollständig überarbeiteten, neuen Artikel zur aktuellen Version geschrieben.

Voraussetzungen

Die folgenden Komponenten werden für die Funktion der vorgestellten Lösung benötigt:

  • Windows-Domäne mit zentraler Ablage der Benutzer-Basis-Ordner (Eigene Dateien)
  • Gruppenrichtlinie für die automatische Ordnererstellung (PDF-Dokumente)
  • Druckserver (ab Windows Server 2003 bis zu Windows Server 2008 R2)
  • Freeware: PDFCreator für die Erstellung der PDF Dokumente via Ghostscript
  • Skript SetACL.vbs für das Setzen der Dateiberechtigungen

Anleitung

Zu Beginn sollte eine Gruppenrichtlinie definiert (oder eine bestehende geändert) werden, die den neuen, Benutzer-spezifischen Ordner erstellt, der später die PDF-Dokumente enthalten soll. Die funktioniert am Einfachsten über die neuen Gruppenrichtlinenerweiterungen von Windows Server 2008. Unter der Annahme, dass die eigenen Dateien aller Domänen-Benutzer an einen zentralen Dateiserver umgeleitet werden

\\<Server>\User\%Username%\Eigene Dateien

so kann die neue Einstellung der Gruppenrichtlinie wie folgt aussehen (Benutzerkonfiguration, Einstellungen, Windows-Einstellungen, Ordner):

Dabei wird für jeden Benutzer (für den die Richtlinie Anwendung findet) ein Unterordner PDF-Dokumente innerhalb der eigenen Dateien erstellt.

Die zentrale Ablage der (Benutzer-)Daten auf einem Dateiserver hat nicht nur den Vorteil, das sich selbige einfach und zuverlässig sichern lassen, mit Hilfe des Ressourcen-Manager für Dateiserver (ab Windows Server 2003 R2) lassen sich so auch Kontingente (Speicherplatz-Quotas) oder Dateiprüfungen (Speicherverbot für bestimmte Dateitypen) elegant umsetzen.

Auf dem zentralen Druckserver (unter Windows Server 2008 R2 wird dafür die Rolle Druckverwaltung installiert) kann nun die Software PDFCreator als Serverversion installiert werden. Diese erstellt zunächst einen neuen Anschluss vom Typ PDFCreator Redirected Port und einen neuen lokalen Drucker, hier PDF-Drucker genannt:

Die Verknüpfung des PDFCreator sollte unbedingt aus dem Autostart-Ordner entfernt werden, da dieser Probleme bei zweimaliger Ausführung verursacht. Bevor der Drucker genutzt werden kann, muss er noch konfiguriert und als Dienst eingerichtet werden. Dafür benötigt man zwei Programme aus dem Windows Ressource Kit: srvany.exe und instsrv.exe (beide Tools sind auch voll unter Windows Server 2008 R2 funktionsfähig). Die Datei srvany.exe kann bspw. nach C:\Windows kopiert werden, die Syntax für die Registrierung des Dienstes würde in diesem Fall wie folgt lauten:

instsrv PDFCreator C:\Windows\srvany.exe

Im Anschluss kann mit Hilfe des Befehls

sc description PDFCreator „Netzwerk-PDF-Drucker“

eine Beschreibung definiert werden. Danach muss die Registrierung um folgende Einträge ergänzt werden (die Pfade sind entsprechend anzupassen):

[HKLM\SYSTEM\CurrentControlSet\Services\PDFCreator\Parameters]
REG_SZ:Application:"C:\Program Files (x86)\PDFCreator\PDFCreator.exe"
REG_SZ:AppDirectory:"C:\Program Files (x86)\PDFCreator"

Da der Drucker später PDF-Dokumente in den Verzeichnissen der Domänen-Benutzer erstellen soll, muss der Dienst als ein Benutzer gestartet werden – sinnvollerweise ist dieser Nutzer ein Mitglied der Domänen-Administratoren:

Der Drucker muss nun noch freigegeben und anschließend für die Benutzer (Clients) verbunden werden, letzteres kann eleganterweise wieder über eine Gruppenrichtlinie erfolgen:

Bevor die Benutzer den Drucker verwenden können, muss selbiger konfiguriert werden, dies geschieht über den Aufruf der Programmverknüpfung des PDFCreator. Es ist sinnvoll, für die Konfiguration des PDFCreator den erstellten Dienst zu beenden und alle Einstellungen über den PDF Druckmonitor vorzunehmen:

Um die PDF-Dokumente nach dem Druckauftrag automatisch im jeweiligen Ordner des Benutzers abzulegen, muss die Option „Automatisches Speichern“ aktiviert und konfiguriert werden:

Die im Pfad verwendete Variable <REDMON_USER> entspricht dabei der Variable %Username%, weshalb das erzeugte PDF im Ordner des betreffenden Benutzers landet:

\\<Server>\User\%Username%\Eigene Dateien\PDF-Dokumente\<PDF-Datei>.pdf

Der Dateiname kann den eigenen Vorstellungen und Wünschen durch Nutzung verschiedener Variablen definiert werden. Außerdem kann die gesamte PDF-Erzeugung mit all ihren Parametern extrem granular – je nach Anforderung – eingestellt werden. Im Anschluss kann das Programm geschlossen und der Dienst erneut gestartet werden – der Drucker ist nun einsatzbereit.

Verwendung

Im folgenden Beispiel wurde für den Benutzer Testuser der freigegebene Drucker PDF-Drucker über eine Gruppenrichtlinie verbunden.

Druckt der Benutzer Testuser nun eine Testseite, so wird im Order PDF-Dokumente (Unterordner der eigenen Dateien von Testuser) nach Erhalt der Statusmeldung

die folgende Datei erstellt:

Besonders hervorzuheben ist die Eigenschaft, dass nach der Installation des PDFCreators (Definition des neuen Anschlußtyps und des ersten Druckers) im Drucker-Menü weitere neue PDF-Drucker hinzugefügt werden können:

Dabei nutzen alle Drucker den selben Anschluss PDFCreator: (PDFCreator Redirected Port, siehe oben), die unterschiedlichen Konfigurationen der jeweiligen Drucker lassen sich über individuelle Profil-Einstellungen verwalten und dem betreffenden Drucker zuweisen:

Erst dadurch wird der PDFCreator meiner Meinung nach zu einer extrem umfangreichen, flexiblen und variantenreichen Lösung.

Sonderfall der Dateiberechtigungen

In meinem Fall konnte ich als Testuser die so erstellte Datei allerdings nicht öffnen, da der Benutzer keine Zugriffsrechte besaß. Warum? Der zentrale Benutzer-Ordner ist auf dem Dateiserver wie folgt konfiguriert:

  • ERSTELLER-BESITZER: Speziell: Nur Unterordner und Dateien (Vollzugriff)
  • SYSTEM: Vollzugriff: Dieser Ordner, Unterordner und Dateien
  • Domänen-Admins: Vollzugriff: Dieser Ordner: Unterordner und Dateien
  • Domänen-Benutzer: Speziell: Nur dieser Ordner
    (Order erstellen, Besitz übernehmen, Attribute schreiben, Berechtigungen lesen)

Durch diese Einstellungen können alle Benutzer-Ordner automatisch erstellt werden, wobei der jeweilige Benutzer automatisch Vollzugriff auf seine Unterordner und Dateien hat (da er Ersteller-Besitzer ist), ohne das andere Benutzer seine Daten lesen können.

Allerdings wird die PDF-Datei auf dem Druckserver nicht von dem Besitzer des Ordners (in diesem Fall Testuser) sondern von einem Domänen-Administrator (Anmeldekonto des PDFCreator-Dienstes) erzeugt. Dieser ist selbstverständlich der Ersteller-Besitzer der Datei – diese Eigenschaft verliert so der Testuser und damit auch den Zugriff auf die Datei.

Aus diesem Grund habe ich zur Lösung des Problems das VBS-Skript SetACL.vbs geschrieben, das in das folgende Verzeichnis auf dem Druckserver (Installation des PDFCreator) entpackt werden muss:

C:\Program Files (x86)\PDFCreator\Scripts\RunProgramAfterSaving

Im Anschluss muss im Einstellungsmenü des PDFCreator die Option Aktion nach dem Speichern aktiviert werden:

Dadurch wird nach der Erzeugung der PDF-Datei das Skript mit den beiden Parametern <OutputFilename> und <REDMON_USER> aufgerufen. Dieses ruft wiederum das interne Windows-Tool icacls.exe auf, um die Berechtigung für die erzeugte PDF-Datei entsprechend zu ändern:

%Windir%\System32\icacls.exe „<OutputFilename>“ /grant <REDMON_USER>:F

Der Befehl bewirkt, dass dem Benutzer <REDMON_USER> (der der den Druckauftrag erzeugt hat) die Berechtigung Vollzugriff (F) auf die Datei (kompletter Pfad in <OutputFilename>) gewährt wird.

Update vom 1. September 2011

Ich habe das Skript SetACL.zip soeben in der Version 1.2 bereitgestellt. Zusätzlich zum Vollzugriff wird nun auch die Besitzübernahme durch den in <REDMON_USER> übergebenen Benutzer vollzogen:

%Windir%\System32\icacls.exe „<OutputFilename>“ /setowner <REDMON_USER>

Dadurch wird die erstellte PDF-Datei auch ordnungsgemäß in einer möglichen Kontingentbeschränkung erkannt.

Außerdem werden die Einträge im Ereignisprotokoll des Druckservers nun sehr detailliert mit Hilfe des Windows-Tools eventcreate.exe protokolliert – die Ereignisquelle lautet nun PDF-Drucker (<REDMON_PRINTER>):

PDF-Drucker-Skript <Skript-Name> auf <Druckservername>
Drucker: <REDMON_PRINTER>
Dokument: <Dokumentenname>.pdf
Speicherort: <Pfad zum Dokument>
Benutzer: <Domäne>\<Benutzer>
Dateigröße: xx,x KBytes

Dadurch wird jeder Ausdruck auch auf dem Druckserver (für jeden definierten PDF-Drucker) ordnungsgemäß protokolliert.

Fazit

Der obige Beitrag soll als Hilfestellung und Anregung für die Umsetzung eines zentralen PDF-Druckers mit automatischer Speicherung für die einzelnen Benutzer einer Domäne dienen. Es gibt professionelle (und kostenpflichtige) Varianten, die meist einfacher und mit etwas weniger Aufwand umzusetzen sind. Dafür bietet die beschriebene Lösung einen flexiblen Einsatz, da verschiedene Profile für unterschiedliche Einstellungen mehrerer Drucker erstellt werden können. Die Einrichtung ist in kurzer Zeit abgeschlossen und als Kosten fallen nur die Arbeitszeit an.

Wie bei allen meinen Beiträgen gilt: Bei Tipps, Vorschlägen sowie Fragen oder Kritiken hinterlasst bitte einen Kommentar.

Einen Blog am Leben zu erhalten kostet Zeit und Geld. Da ich auf meiner Seite weder Werbung einbinde, noch andersweitige Zuwendungen erhalte, freue ich mich über jede kleine Spende. Einfach und unkompliziert geht das über PayPalMe. Du unterstützt damit diesen Blog. Vielen Dank.

11 Kommentare für “Best Practices: Kostenfreier PDF-Drucker im Netzwerk als Dienst unter Windows Server 2008 R2”

  • Thomas Jorczik

    Ein sehr wertvoller Beitrag. Danke, Bent

  • Henning

    Hallo,

    ziemlich cooler Beitrag! Aber ich denke eine Sache kannst du noch ergänzen damit das ganze unter Windows 7 vollautomatisch läuft. (Installation des Druckers)

    Und zwar die Gruppenrichtlinie für die Drucker Installation.

    Compterkonfiguration – Richtlinien – Administrative Vorlagen – Drucker – Point-and-Print-Einschränkungen

    Dann wird auch der Drucker auf Windows 7 Systemen automatisch mit verbunden.

    MfG Henning

  • Bent Schrader

    Hallo Henning,

    vielen Dank für das Lob. Die Gruppenrichtlinie habe ich in meinen Tests deaktiviert – ich nehme an, Du meintest diese Einstellung?

    Ich werde sicher bald einen gesonderten Beitrag zum Thema Drucken und Window Server 2008 R2 veröffentlichen – ein ziemlich komplexes und vielschichtiges Thema.

    Gruß,
    Bent

  • Nils Kaczenski

    Moin Bent,

    warum steckst du das Dienstkonto in die Domänen-Admins? Es braucht doch keine Adminrechte auf allen Clients, Servern und dem AD, oder?

    Gruß, Nils

  • Bent Schrader

    Servus Nils,

    Du hast natürlich völlig Recht, das Dienstkonto des PDFCreator bedarf keiner administrativen Rechte innerhalb der gesamten Domäne. Vielen Dank!

    Da sieht man mal wieder, wenn der Nils liest, dann auch genau und mit Verstand. :)

    Gruß,
    Bent

  • Michael Student

    Hallo Bent,
    vielen Dank für diesen sehr ausführlichen und hilfreichen Artikel. Leider gibt es die Variable seit der Version 1.3.x nicht mehr. Dadurch kann man nicht mehr in Userlaufwerke speichern lassen. Ich wollte mal fragen, wie du dieses Problem bei deinen Kunden gelöst hast. Vielleicht machen wir auch nur etwas falsch..

    Gruß
    Michael

  • Bent Schrader

    Hallo Michael,

    leider habe mit den aktuellen Versionen ebenfalls keine erfolgreiche Umsetzung erzielen können. Im Forum von PDFCreator findet man allerdings auch andere Nutzer mit dem Problem: http://bit.ly/NVZA5N

    Genau aus diesem Grund habe ich immer noch die ältere Version 1.2 im Einsatz. Sobald ich mit einer neuen Version des PDFCreators erfolgreich arbeiten kann, werde ich meinen Beitrag hier aktualisieren.

    Gruß,
    Bent

  • Michael Student

    Hallo Bent,

    wir haben mit der Variable erfolgreich getestet – bislang verhält sich das Programm wie gewünscht. Die Dokumente werden im Userverzeichnis erstellt – wie bei der Variable erwartet wurde.

    Vielleicht hilft dir ja diese Info weiter!

    M

  • David

    Hallo Bent hallo Michael,

    @Bent
    Danke für die umfangreiche Zusammenstellung.

    @Micheal
    Ich habe gerade das selbe Problem mit der Variable wie du. Wie hast du das Problem gelöst?

    Würde ungern auf die „so veraltete“ Version 12.3 setzen.

    Viele Grüße
    David

  • Bent Schrader

    Hallo David und Michael,

    seht Euch mal meinen neuen Artikel http://bit.ly/NxYRHD
    zum Thema an.

    Gruß,
    Bent

  • NIC Team

    Hi Bent,
    ich bin über Google auf deinen Artikel gestoßen. Sehr ausführlich und verständlich die Thematik aufgegriffen und dargelegt.
    Hättest du nicht mal Lust über unseren pdf2flow zu schreiben?
    Immerhin ist die 1-User Lizenz kostenlos und völlig uneingeschränkt nutzbar.

    Liebe Grüße

    Steffen
    NIC Team (www.pdf2flow.com)

Einen Kommentar hinterlassen:

Antispam Bee hat Bent's Blog vor 375.461 Spam-Kommentaren bewahrt.