PDF2SMTP - Skript
- Startseite
- Software: Ghostscript
- Software: RedMon und Blat
- Drucker einrichten
- PDF2SMTP-Skript
- Fehlersuche
Der Klebstoff
Nun fehlt noch ein wenig Code, um all diese Komponenten zusammen zu bringen. REDMON ruft ein Batch auf, der die ganze Arbeit dann macht. Hierzu dient ein Skript, welches Sie sich Herunterladen und auspacken müssen
Speichern Sie die Datei als PDF2SMTP.CMD unter C:\programme\gs\redmon. Sie müssen in der Batchdatei noch den Wert "Mailserver" durch ihren Exchange Server ersetzen. Weiterhin müssen sie "firma.de" durch ihren Domainnamen ersetzen.
Einstellungen
Im Batchfile sind einige Variablen zu setzen, ehe PDF2SMTP.CMD richtig funktioniert. Folgende Variablen sind anzupassen:
Parameter | Bedeutung |
---|---|
pdf2smtplog |
Pfad für die Protokolldatei |
pdf2smtpgs |
Pfad zu Ghostscript |
pdf2smtpblat |
Pfad zu BLAT |
maildomain |
SMTP-Domäne fuer die Mails |
mailserver |
Mailserver zum Versand der Nachrichten. IP-Adresse oder DNS-Name |
pdfprotect |
Einstellungen für den PDF Schutz |
pdfpassword |
PDF Kennwort |
Der Schutz wird erst aktiv, wenn auch ein Kennwort angegeben wird. Die Standardeinstellungen des Skriptes erstellen "ungeschützte Dateien.
Das Skript
Achten Sie darauf, das die BATCH-Dateien in den Archiven eine Versionsnummer tragen und vor dem Einsatz auf ihrem Server ausgepackt und eventuell umbenannt werden müssen, oder Sie in REDMON den Namen des Skriptes anpassen müssen.
<p class="boxinfo">
Florian Mann hat eine PowerShell-Version auf GitHub
veröffentlicht<br>
<a href="https://GitHub.com/florian-mann/pdf2smtp_ps">https://GitHub.com/florian-mann/pdf2smtp_ps</a>
</p>
Die Version 0.9. Bitte nicht mehr verwenden |
|
Das Originalskript aus der c't 06/2004 Dieses Skript wurde im Artikel veröffentlicht |
|
Modifizierte Version anhand Feedback von Anwendern und Lesern. Änderungen :
|
|
Stark veränderte Version, speziell für Windows NT4. (siehe Details
auf
Fehlersuche. Achtung wichtige Änderungen :
Diese Skript nutzt "REDFILE", um die Daten von STDOUT abzufangen. |
|
Anpassungen für neue Ghostscript.
|
Hinweis für Windows 2003. PDF2SMTP legt nun die temporären Dateien nicht mehr unter C:\WINDOWS\TEMP an, sondern unter C:\Programme\gs\temp. Dieser Pfad kann im Batch auch angepasst werden. In diesem Verzeichnis muss "System" ausreichende Berechtigungen haben !!
Das gleiche gilt für die CMD.EXE. Der Spooler startet das Script mit den Rechten des Benutzers. Dazu muss der Benutzer aber Zugriff auf die CMD.EXE haben, die seit Windows 2003 nicht mehr gegeben ist. Geben Sie "Domain Benutzer" das Lesen und Ausführen Recht auf die CMD.EXE
Zukünftig ist geplant, die Lösung als VBScript oder sogar .NET-Anwendung weiter zu entwickeln. Bis dahin können Sie andere Musterskripte als Anregung nutzen.
Andere Skripte
Die Veröffentlichung von PDF2SMTP hat sehr viele Personen angeregt, meinen einfachen Batch zu optimieren und zu verbessern. Ich möchte mich auf diesem Wege bei allen bedanken, die meinen Ansatz weiter entwickelt haben und mir ihre Programme, Skripte und Tools zugesendet haben.
Florian Mann hat eine PowerShell-Version auf GitHub veröffentlicht
https://GitHub.com/florian-mann/pdf2smtp_ps
VB.NET Programm von Holger Manz |
|
VBScript Programm von Nils Kaczenski |
|
Mein PDF2SMTP ergänzt um Code, um die Mailadresse aus dem AD auszulesen. von Myrko.Leitner |
|
Perl-Skript von Felix Bauer. Frankfurt. |
|
Delphi Source von Sven Geipel, Hof |
Wenn Sie selbst das ultimative Klebstoffskript für PDF2SMTP entwickelt haben und hier veröffentlich sehen möchten, dann nichts wie her damit. ->Kontakt
Einschränkung
Ich nutze im Batch die Möglichkeit, den Betreff der Mail aus dem Jobnamen abzuleiten. Das macht es für den Anwender bei vielen Druckaufträgen leichter, die einzelnen Nachrichten zuzuordnen. Leider sind in diesen Jobnamen aber auch Sonderzeichen möglich, welche nicht mit BLAT übermittelt werden können, z.B. "/" und andere. Sollten Sie verstärkt damit Probleme feststellen, dann sollten Sie beim Aufruf von BLAT den Betreff fest vergeben. Ebenso wir der Dateiname des Auftrags dynamisch erstellt. Problem auch hier ist, dass es Namen gibt, die im Dateisystem nicht erlaubt sind.
All diese Sonderfälle sind in meiner kleinen Lösung nicht abgefangen. Vielleicht fällt demnächst mal ein VBScript ab, in dem diese Punkte optimiert sind. Bis dahin sollten Sie damit rechnen, dass es vielleicht nicht 100% funktioniert. Ich nutze das System aber seit langem und bisher ist es noch nicht soweit gekommen, dass im normalen Betrieb einer dieser Sonderfälle aufgetreten ist.
Wer z.B. Probleme mit dem Betreff hat, möge folgende Zeile ersetzen:
set BODYFILE=%TEMP%\%REDMON_User%-%REDMON_DOCNAME%-%REDMON_JOB%.TXT
z.B. durch:
set BODYFILE=%TEMP%\%REDMON_JOB%.TXT
Seit der Version 1.4 ist aber auch eine Behandlung der meisten Sonderzeichen (Ausnahme "*") eingebaut.
Andere Ideen
Die Lösung mit PDF2SMTP ist nur ein Einsatzgebiet von REDMON. Es gibt viele weitere Dinge, die sie durch dieses kleine Programm auch ohne GhostScript umsetzen können. Hier einige Ideen:
- Druckdatenkompression
RedMON nimmt die Druckdaten an und verarbeitet Sie weiter. Gerade mit dünnen Bandbreiten könnte es eine Lösung sein, die Daten zu packen und per Mail oder als LPR-Auftrag an einen anderen Server zu senden. Dort könnte wieder ein Prozess diese Daten auspacken und an einen lokalen Drucker weiterleiten. Natürlich besetzten schon kommerzielle Anwendungen wie "ThinPrint" dieses Feld. Aber einen Druckauftrag per Mail an einen entfernten Drucker zu versenden ist doch auch eine nette Idee. - Archivfilter
Ebenso ist es Denkbar, dass REDMON eine Kopie jedes Auftrags in ein Archiv einstellt. Leider müssten Sie für jeden "archivierenden Drucker" einen zweiten Drucker mit REDMON davor schalten und über Rechte den Zugriff steuern. - Druckseitenzählung und Abrechnung
Eine weitere Funktion wäre die Nutzung von REDMON als Seitenzähler und zur Abrechnung von Druckkosten. Dazu müsste wieder dem eigentlichen Drucker ein Drucker mit REDMON zugewiesen werden. Die Anwender drucken auf diesen Drucker. REDMON zählt die Seiten (am besten mit Postscript) und leitet dann den Auftrag an den eigentlichen Drucker mittels PRINT, LPR oder COPY weiter. - Remote Job Steuerung
Über einen Ausdruck können Sie auf dem Server ein Programm starten. Sie könnten daher auch das batch dazu missbrauchen, um andere Funktionen auszuführen, die überhaupt nichts mit dem eigentlichen Ausdruck zu tun haben, z.B. Mail abholen, Backup anstarten etc. Klar gibt es bessere Wege wie RSH, RCMD etc, aber vielleicht möchten Sie keine zusätzliche Dienste oder der Client kann nur "drucken". Das kann fast jedes System. - Kleiner Faxserver ?
Wissen Sie, was REDMON kann und da Ghostscript auch TIFF-Dokumente erzeigen kann, ist sogar ein einfacher Faxserver denkbar. Sie müssen nur ein Skript bauen, welches aus den Postscriptdaten z.B. die Faxnummer extrahiert (z.B. Suche nach "@@FAX:", die Daten an Ghostscript übergibt und danach z.B. per Kommandozeile ein Fax versendet. Zu den alten DOS-Zeiten gab es z.B. zu jedem Zyxel Modem eine entsprechende Software. Viel Spaß beim basteln.
Sie sehen, es sind eine Vielzahl anderer Lösungen mit REDMON denkbar.