L'exemple suivant montre comment analyser un texte à partir du travail d'impression en cours. La valeur analysée peut ensuite être utilisée pour influencer la configuration de l'imprimante. Un gestionnaire d'événement OnPreprocessText est implémenté dans l'exemple de code, qui instancie tous les mots du document. Il détermine les cinq mots les plus courants dans le document. Une liste de mots clés est créée à partir de cela et la configuration est modifiée afin que ces mots clés Top5 soient stockés en tant que mots clés PDF dans le document PDF généré.

Veuillez noter que l' OnConfigLoaded() est utilisé pour modifier le paramètre ExtractText sur yes . Cela provoque l'imprimante PDF pour créer un fichier texte du contenu du travail d'impression. Le paramètre ExtractText peut également être spécifié dans un fichier de configuration runonce.ini ou dans tout autre fichier de configuration.

  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 d, i, word, a
  14.   Dim keywords
  15.    
  16.     Rem -- Get the name of the text file from the context object
  17.     fn = Context("TextFileName")
  18.    
  19.     Rem -- Count the pages of the text file. Each page is separated
  20.   Rem -- by a formfeed character chr(12).
  21.     Set d = CreateObject("Scripting.Dictionary")
  22.     Set fso = CreateObject("Scripting.FilesystemObject")
  23.     Set f = fso.OpenTextFile(fn, ForReading)
  24.     While Not f.AtEndOfStream
  25.         l = f.ReadLine()
  26.  
  27.         Rem -- Count the words
  28.         a = Split(l, " ")
  29.         For i = LBound(a) To UBound(a)
  30.             word = LCase(a(i))
  31.             If Len(word) > 3 Then d(word) = d(word) + 1
  32.         Next
  33.     Wend
  34.     f.Close
  35.  
  36.     Rem -- Sort the list of words
  37.     SortDictionary d, "desc"
  38.  
  39.     Rem -- Pick the first 5 words
  40.     keywords = ""
  41.     cnt = 0
  42.     For Each word In d.keys
  43.         cnt = cnt + 1
  44.         If keywords <> "" Then keywords = keywords & " "
  45.         keywords = keywords & word
  46.         If cnt = 5 Then Exit For
  47.     Next
  48.    
  49.     Rem -- Set the author value in the configuration
  50.     Context("Config")("keywords") = keywords
  51. End Sub
  52.  
  53. Rem -- Sort the dictionary values.
  54. Rem -- The direction parameter must be either "asc" or "desc".
  55. Sub SortDictionary(ByRef d, ByVal direction)
  56.     Dim retv
  57.     Dim max, k, maxkey
  58.    
  59.     direction = LCase(direction)
  60.     If direction <> "asc" And direction <> "desc" Then
  61.     Err.Raise 1000, , "Direction parameter must be " & _
  62.       "either asc or desc in call to SortDictionary."
  63.   End If
  64.    
  65.     Set retv = CreateObject("Scripting.Dictionary")
  66.     While d.Count > 0
  67.         max = Empty
  68.         maxkey = ""
  69.         For Each k In d.keys
  70.             If (d(k) > max And direction = "desc") Or _
  71.         (d(k) < max And direction = "asc") Or _
  72.         IsEmpty(max) Then
  73.  
  74.                 max = d(k)
  75.                 maxkey = k
  76.             End If
  77.         Next
  78.         retv(maxkey) = d(maxkey)
  79.         d.Remove maxkey
  80.     Wend
  81.     Set d = retv
  82. End Sub
  83.  

Télécharger un exemple de fichier

Vous pouvez télécharger l'exemple de code. Après le déballage, veuillez déplacer le fichier de macro VBS qu'il contient dans le dossier macros de l'imprimante PDF (dans le répertoire d'installation). Vous pouvez également définir un répertoire différent avec le paramètre MacroDir.

Téléchargements

appendice taille
Télécharger l'exemple de code 1.15 KB

LiveZilla Live Chat Software
Top