Mots clés automatiques via le gestionnaire d'événements OnPreprocessText / Imprimante PDF
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.
- Rem -- This script will illustrate how to extract and process the text
- Rem -- of the printed output.
- Sub OnConfigLoaded()
- Rem -- Modify the configuration to extract text from the printer
- Rem -- output.
- Context("Config")("extracttext") = "yes"
- End Sub
- Sub OnPreprocessText()
- Const ForReading = 1
- Dim fn, f, fso, cnt
- Dim d, i, word, a
- Dim keywords
- Rem -- Get the name of the text file from the context object
- fn = Context("TextFileName")
- Rem -- Count the pages of the text file. Each page is separated
- Rem -- by a formfeed character chr(12).
- Set d = CreateObject("Scripting.Dictionary")
- Set fso = CreateObject("Scripting.FilesystemObject")
- Set f = fso.OpenTextFile(fn, ForReading)
- While Not f.AtEndOfStream
- l = f.ReadLine()
- Rem -- Count the words
- a = Split(l, " ")
- For i = LBound(a) To UBound(a)
- word = LCase(a(i))
- If Len(word) > 3 Then d(word) = d(word) + 1
- Next
- Wend
- f.Close
- Rem -- Sort the list of words
- SortDictionary d, "desc"
- Rem -- Pick the first 5 words
- keywords = ""
- cnt = 0
- For Each word In d.keys
- cnt = cnt + 1
- If keywords <> "" Then keywords = keywords & " "
- keywords = keywords & word
- If cnt = 5 Then Exit For
- Next
- Rem -- Set the author value in the configuration
- Context("Config")("keywords") = keywords
- End Sub
- Rem -- Sort the dictionary values.
- Rem -- The direction parameter must be either "asc" or "desc".
- Sub SortDictionary(ByRef d, ByVal direction)
- Dim retv
- Dim max, k, maxkey
- direction = LCase(direction)
- If direction <> "asc" And direction <> "desc" Then
- Err.Raise 1000, , "Direction parameter must be " & _
- "either asc or desc in call to SortDictionary."
- End If
- Set retv = CreateObject("Scripting.Dictionary")
- While d.Count > 0
- max = Empty
- maxkey = ""
- For Each k In d.keys
- If (d(k) > max And direction = "desc") Or _
- (d(k) < max And direction = "asc") Or _
- IsEmpty(max) Then
- max = d(k)
- maxkey = k
- End If
- Next
- retv(maxkey) = d(maxkey)
- d.Remove maxkey
- Wend
- Set d = retv
- End Sub
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 |