Dieses Beispiel zeigt wie Sie Informationen aus dem Inhalt eines Printjobs extrahieren und damit automatisch das PDF Dokumentenfeld "Subject" befüllen. Das passende Beispieldokument wurde dem herunterladbaren Codebeispiel ebenfalls hinzugefügt.

Wir wollen den Kommentarwert aus dem Dokument extrahieren und den extrahierten Text dazu verwenden das PDF Subject mit Inhalt vorzubefüllen. Die nachfolgende Abbildung zeigt einen Screenshot des verwendeten Beispieldokuments, die Kommentarzeile um die es geht, ist schwarz markiert.

Testdoc

Wenn das Dokument (Testseite.doc) ausgedruckt wird, so wird der Event Handler OnPreprocessText() dazu verwendet den Text des Dokuments bzw. des Druckjobs zu parsen. Nachfolgender Beispielcode illustriert den genauen programatischen Vorgang im Event Handler.

  1. Rem -- This script will illustrate how to extract and process the text
  2. Rem -- of the printed output.
  3.  
  4. Sub OnConfigLoaded()
  5.     Rem -- Modify the configuration to extract text from the printer
  6.     Rem -- output.
  7.     Context("Config")("extracttext") = "yes"
  8. End Sub
  9.  
  10. Sub OnPreprocessText()
  11.     Const ForReading = 1
  12.     Dim fn, f, fso, cnt
  13.     Dim comment, p1, p2, l
  14.    
  15.     Rem -- Get the name of the text file from the context object
  16.     fn = Context("TextFileName")
  17.    
  18.     Rem -- Count the pages of the text file. Each page is separated
  19.     Rem -- by a formfeed character chr(12).
  20.     Set fso = CreateObject("Scripting.FilesystemObject")
  21.     Set f = fso.OpenTextFile(fn, ForReading)
  22.     While Not f.AtEndOfStream
  23.         Rem -- Read a line from the text file
  24.         l = f.ReadLine()
  25.  
  26.         Rem -- Look for the comment
  27.         p1 = InStr(1, l, "Kommentar:")
  28.         If p1 > 0 Then
  29.             comment = Mid(l, p1 + 8)
  30.  
  31.             Rem -- Look for the tag after the comment.
  32.             Rem -- This will determine where the comment ends.
  33.             p2 = InStr(1, comment, "Treibername:")
  34.             If p2 > 0 Then comment = Mid(comment, 1, p2 - 1)
  35.             comment = Trim(comment)
  36.         End If
  37.     Wend
  38.     f.Close
  39.  
  40.     Rem -- Set the author value in the configuration
  41.     Context("Config")("subject") = comment
  42. End Sub

Beispieldatei Download

Sie können den Beispielcode herunterladen. Die darin enthaltene VBS-Macrodatei verschieben Sie nach dem Entpacken bitte in den macros Ordner des PDF-Druckers (im Installationsverzeichnis). Sie können auch mit der Einstellung MacroDir ein anderes Verzeichnis festlegen.

Downloads

Anhang Größe
Codebeispiel herunterladen 3.04 KB

Top