mit dem neuesten Update wurde der Aufruf 'PlugIn-vor' noch vorne verschoben, so dass erst das 'PlugIn-vor' und erst danach die Rangdefinition verarbeitet wurde. Damit ist jetzt möglich, über ein PlugIn Einfluss auf die Rangstellung der einzelnen PS-Dateien zu nehmen.
Folgende Situation ist gegeben:
Ausgangslage:
Es wird ein Druckpacket aus einer externen Anwendung ausgedruckt mit unterschiedlicher Anzahl an Ausdrucken. Daneben soll aus einer weiteren Anwendung zwei Ausdrucke erfolgen, die aber immer wieder abweichende PS-Titel haben. Beispiel: WP_0_123456_11626_2014_1 (fett = variabel)
Mit so einem wechselnden PS-Titel kann man keine Rangdefinition mehr erstellen, weil es in FreePDF_Multidoc keine Platzhalter gibt. Das ist auch nicht nötig. Hier behelfen wir uns jetzt mit einem 'PlugIn-vor'.
Das ganze geht so schnell, dass ihr überhaupt keinen Zeitverzug bemerkt.
Lösung:
Mit nachfolgendem VBSript ist es jetzt möglich, die PS-Titel auszulesen und die notwendigen PS-Dateien so zu ändern, dass diese gemäß allgemeingültiger Rangdefinition verarbeitet werden kann.
Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") Dim WSHShell : Set WSHShell = WScript.CreateObject("WScript.Shell") Dim f, p, fc Dim PS_Titel
Set p = fso.GetFolder("C:KanzleiSoftwareFreePDF_MultidocPS_tmp") set f = p.Files
for each fc in f PS_Titel = Find_PSTitel(p.Path & "" & fc.Name)
If IsBericht(PS_Titel)=True Then 'alte Version: "Microsoft Word - Anhang.docx" Call SetPS_Titel(p.Path & "" & fc.Name,PS_Titel, "Microsoft Word - Anhang.docx") End If Next
Function IsBericht(s) 'Prüfung ob es ich um Anhang aus BiBer handelt
If (InStr(1,s,"AppDataLocalTemp")>0) Or _ (Right(s,4) = ".rtf") or _ (InStr(1,s,"Anlagenspiegel")>0) Or _ (s="Microsoft Word - Anhang.docx") Then
IsBericht=False
ElseIf Left(s,3)="WP_" Then
IsBericht=True
End If
End Function
Function Find_PSTitel(Datei) 'PS-Titel aus der Postscript-Datei auslesen
Dim FileIn Dim tmpStr
Set FileIn = FSO.OpenTextFile(Datei, 1 ) ' Datei zum Lesen öffnen
Do While Not (FileIn.atEndOfStream) ' wenn Datei nicht zu ende ist, weiter machen tmpStr = FileIn.Readline If InStr(1, tmpStr, "%%Title:", vbTextCompare) 0 Then 'Gefunden Find_PSTitel= Trim(Right(tmpStr, Len(tmpStr) - Len("%%Title:"))) Exit Do End If Loop
End Function
Function SetPS_Titel(Datei,TitelOld, TitelNew) Dim PSFile Dim sStream Set PSFile = fso.OpenTextFile(Datei,1)
sStream = PSFile.ReadAll sStream=Replace(sStream,"%%Title: " & TitelOld,"%%Title: " & TitelNew,1,vbTextCompare) PSFile.Close
Set PSFile = fso.OpenTextFile(Datei,2)
PSFile.Write(sStream) PSFile.Close
End Function
Das Script könnte man auch noch so erweitern, dass Variablenwerte mit verarbeitet werden können. Aber auch das sollte kein Problem mehr darstellen, da ich in anderen Beispielen die Verwendung von Variablen dargestellt habe. In meinem Fall reichte es aus, einfach auf die ersten Buchstaben zu prüfen, da diese als Auswahlkriterium ausreichten.
Sollten noch Fragen bestehen, dann meldet Euch einfach.
Ansonsten weiterhin viel Spaß.
Gruß Ahmed
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF) File2PDF (komplette Verzeichnisse auf einen Streich umwandeln) findest Du alles hier: http://amTools.de