PDF2SMTP - Skript

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
Default': c:\Programme\gs\redmon\pdf2smtp.log

pdf2smtpgs

Pfad zu Ghostscript
Default: "c:\programme\gs\gs8.14\bin\gswin32c.exe"

pdf2smtpblat

Pfad zu BLAT
Default: "c:\Programme\gs\redmon\blat.exe"

maildomain

SMTP-Domäne fuer die Mails
Default: firma.de

mailserver

Mailserver zum Versand der Nachrichten. IP-Adresse oder DNS-Name
Default: mail.firma.de

pdfprotect

Einstellungen für den PDF Schutz
Default: -1856
Einstellungen siehe PDF2SMTP - Ghostscript

pdfpassword

PDF Kennwort
Default: geheim

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>

pdf2smtp.bat.txt

Die Version 0.9. Bitte nicht mehr verwenden


pdf2smtp-heise.zip

Das Originalskript aus der c't 06/2004

Dieses Skript wurde im Artikel veröffentlicht


pdf2smtp14.zip

Modifizierte Version anhand Feedback von Anwendern und Lesern. Änderungen :

  • -s "%REDMON_DOCNAME%" mit Anführungszeichen
  • -attach %PDFFILE%  als Vereinfachung
  • Mehr Abfragen auf Fehler und entsprechende Meldungen
  • Korrektur des Tippfehlers STMP durch SMTP :-)
  • Debugging für BLAT
    ACHTUNG: Aktuelle Version von BLAT von http://www.blat.net nutzen !!.
  • Support für Verschlüsselung und Dokumentschutz
  • Sonderzeichenbehandlung (Tipp von Andreas Husch)


pdf2smtp15.zip

Stark veränderte Version, speziell für Windows NT4. (siehe Details auf Fehlersuche. Achtung wichtige Änderungen :
  • REDMON-Port Einstellungen
    Bitte nur noch direkt den Batch aufrufen.
    Nicht mehr REDRUN.EXE nutzen
    Kommandozeilenparameter sind aktuell nicht mehr relevant. (Später vielleicht als Parametrisierung nutzbar)
  • Pflegen Sie in PDF2SMTP.CMD die Einstellungen

Diese Skript nutzt "REDFILE", um die Daten von STDOUT abzufangen.

pdf2smtp16.zip

Anpassungen für neue Ghostscript.

  • Verbesserte 128 Bit R3 Encryption
  • Angepasste Security Flags

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


pdfmail.zip

VB.NET Programm von Holger Manz


pdf2smtp-0807.zip

VBScript Programm von Nils Kaczenski


pdf2smtp-checkUser.zip

Mein PDF2SMTP ergänzt um Code, um die Mailadresse aus dem AD auszulesen. von Myrko.Leitner


pdf2smtp-perl.zip

Perl-Skript von Felix Bauer. Frankfurt.
In etwa der Batch mit der Sonderbehandlung von Leerzeichen.


pdf2smtp-delphi.zip

Delphi Source von Sven Geipel, Hof
Aufgrund der Probleme von PDF2SMTP bis Version 1.4 auf Windows NT4 hat Sven ein Delphiprogramm gebaut. Enthalten ist der Source und das ausführbare Programm.

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.


Weiter