gibt es eine Möglichkeit, vor dem Ersteller der PDF-Datei einen Wert aus dem zu druckenden Dokument auszulesen und daraus den PDF-Dateinamen zu generieren?
Beispiel: Ich habe eine Anwendung, aus der ich Belege (Angebot, Auftrag, Rechnung) als PDF drucken und per E-Mail versenden möchte. Jede so generierte PDF hat aber den gleichen Namen (Beleg.PDF). Ist natürlich doof, weil ich die Datei vor dem Speichern im Ordner der Kunden immer unbennen muss. Gleiches Problem hat der Kunden.
Da wäre es doch viel cooler, wenn man aus der PS-Datei die Kundennummer, den Belegtyp und die Belegnummer auslesen könnte und daraus den Dateinamen generieren könnte. Diese Daten stehen immer an der gleichen Stelle im Dokument. Geht das?
bei der PS-Datei handelt es sich um eine Seitenbeschreibungsdatei. Öffne diese einfach einmal im Texteditor, dann wirst du sehen, dass man so einfach nicht an die Textwerte herankommt.
%%BeginProlog %%BeginResource: file Pscript_WinNT_ErrorHandler 5.0 0 /currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type/stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind de
Von mir wird jetzt lediglich immer der PS-Titel ausgelesen und kann weiterverwendet werden. Um jetzt aber an den Textinhalt, also deiner RgNr etc., zu kommen sind vorherige Arbeiten zu erledigen. Das könnte man mit einem AddIn bzw. PlugIn erledigen.
Mit diesen Tools könntest du eine PS-Datei bzw. PDF-Datei in eine Textdatei (formatiert) exportieren und aus der Textdatei die Parameterwerte herauslesen. Diese dann einfach in einem VBSript für die Dateinamesvergabe weiter verwenden.
Beispiele für das Auslesen eines Textes aus einer Textdatei findest unter VB-Programmierbeispiele.
Hier einmal ein VBSript, mit der man eine PDF-Datei im Temp-Ordner als Textdatei formatiert, also mit Leerzeichen, exportieren kann.
Dim wsh, fso Dim Ag Dim Input, Output Dim sProgramm
Set Ag = WScript.Arguments Set objWSH=WScript.CreateObject("Wscript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject")
Input = Ag(0) Input = """" & input & """" Output =objfso.GetSpecialFolder(2) & "pdftotext" & objfso.GetFileName(Input) Output = Left(Output,Len(Output)-Len(objfso.GetExtensionName(Output))) & "txt" Output = """" & Output & """"
objfso.DeleteFile objfso.GetSpecialFolder(2) & "pdftotext*.*"
'Alle Seiten objWSH.Run "\Server01kanzleiprogrammeSOFTWARESystemtoolsxpdf-Toolpdftotext.exe " & " " & "-layout" & " " & Input & " " & Output
'Bestimmte Seiten 'objWSH.Run "\Server01kanzleiprogrammeSOFTWARESystemtoolsxpdf-Toolpdftotext.exe -f 4 -l 4" & " " & "-layout" & " " & Input & " " & Output
Die Pfade sind natürlich anzupassen. Ähnliches verwende ich auch in meine FreePDF_Multidoc und funktioniert einwandfrei.
Zu Programmablauf:
1.) Erstelle dir ein Druckjob, wo die PDF-Datei immer fix in einem Ordner gespeichert wird. 2.) Erstelle dir ein AddIN / PlugIN, welches nach der PDF-Erstellung aufgerufen wird. In diesem AddIN / PlugIN wird, wie im VBSript-Beispiel die PDF-Datei als Textdatei exportiert und hieraus liest du jetzt einfach deine gewünschte Werte aus. Anschließend wird die PDF-Datei einfach umbenannt und in den eigentlichen Ordner gespeichert.
In dem VBSript kannst du natürlich auch die Variablen verwenden. Hierzu gibt bei mir auch einige Beispiele.
Solltest du noch Fragen haben oder Probleme haben, dann melde dich hier einfach.
Gruß Ahmed
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF) File2PDF (komplette Verzeichnisse auf einen Streich umwandeln) findest Du alles hier: http://amTools.de
was ich mir noch überlegt habe, handelt es sich eigentlich immer nur um einzelne Rechnungsausdrucke oder über einen ganzen Rechnungstapel.
Sollte es sich um ganze Stapel von Ausdrucken handeln, dann wäre vielleicht eine Seriendruck-Datei ein mittel der Wahl.
Dazu müsste man wie folgt vorgehen:
1. Ausdruck sämtlicher Rechnungen 2. Export eines Rechnungsausgangsliste 3. Im Druckjob ein PlugIn hinterlegen (vor der Konvertierung). In diesem PlugIn wird jetzt aus der Rechnungsausgangsliste einfach für jede PS-Datei ein Dateiname erstellt und in der Seriendruck-Datei gespeichert. Anschließend wird jetzt einfach die Seriendruck-Datei für die Konvertierung verwendet. Das erfordert nur ein einmaliges Eingreifen.
In der Seriendruck-Datei kann man den Dateiname;Pfad,FreePDF-Profil hinterlegen. Der Aufruf im Druckjob wäre dann einfach wie folgt:
Eine weitere Möglichkeit wäre es, wenn es eine Rechnungsausgangsliste gibt, auch den PS-Titel in einer PS-Datei direkt zu manupilieren. Da der PS-Titel erst einmal für die Dateinamensvergabe genommen wird, wäre auch dieser Weg möglich.
Wie du siehst, es gibt sehr viele Wege, die zum Ziel führen.
Gruß Ahmed
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF) File2PDF (komplette Verzeichnisse auf einen Streich umwandeln) findest Du alles hier: http://amTools.de