J'ai rencontré un problème. J'ai besoin d'ajouter un tampon personnalisé (type d'annotation) à un certain nombre de fichiers .pdf. Je peux le faire via Actions pour Acrobat X Pro, mais mes clients n'ont pas cette licence et ils doivent toujours le faire. La liste des fichiers est stockée dans une feuille de calcul Excel, donc idéalement, je suis à la recherche d'une solution VBA. Je suis venu avec le code suivant:Ajout d'un tampon PDF personnalisé à un document à partir de VBA
Option Explicit
Sub code1()
Dim app As Acrobat.AcroApp
Dim pdDoc As Acrobat.CAcroPDDoc
Dim page As Acrobat.CAcroPDPage
Dim recter(3) As Integer 'Array defining the rectangle of the stamp - in real code wil be calculated, simplified for ease of reading
Dim jso As Object
Dim annot As Object
Dim props As Object
Set pdDoc = Nothing
Set app = CreateObject("AcroExch.App")
Set pdDoc = CreateObject("AcroExch.PDDoc")
recter(0) = 100
recter(1) = 100
recter(2) = 350
recter(3) = 350
pdDoc.Open ("C:\Users\maxim_s\Desktop\Code_1\test1.pdf")
Set jso = pdDoc.GetJSObject
If Not jso Is Nothing Then
Set page = pdDoc.AcquirePage(0)
Set annot = jso.AddAnnot
Set props = annot.getprops
props.page = 0
props.Type = "Stamp"
props.AP = "#eIXuM60ZXCv0sI-vxFqvlD" 'this line throws an error. The string is correct name of the stamp I want to add
props.rect = recter
annot.setProps props
If pdDoc.Save(PDSaveFull, "C:\Users\maxim_s\Desktop\Code_1\test123.pdf") = False Then
MsgBox "fail"
pdDoc.Close
Else
MsgBox "success"
pdDoc.Close
End If
End If
End Sub
Le problème est avec les setprops
et getprops
procédures - il semble que, au moment où l'annotation est créée (jso.AddAnnot
) ne possèdent pas la propriété AP
, qui est le nom du tampon que je veux ajouter. Si je définis la propriété Type= "Stamp"
d'abord et puis essayez de spécifier le AP
, le résultat est que l'un des timbres par défaut est ajouté et il AP
est renommé en mes timbres personnalisés AP
. A noter également, que si je lance acrobate et utiliser le code ci-dessous, le tampon approprié est ajouté:
this.addAnnot({page:0,type:"Stamp",rect:[100,100,350,350],AP:"#eIXuM60ZXCv0sI-vxFqvlD"})
S'il y a un moyen d'exécuter ce Javascript de VBA à l'intérieur de l'objet PDDoc, qui va résoudre le problème, mais jusqu'ici j'ai échoué.
Salut, je ne sais pas comment faire ça aussi. Mais qu'en est-il de l'utilisation de VBA pour insérer une zone de texte avec votre tampon/notation comme contenu. Imprimer/exporter les fichiers au format PDF et masquer/effacer la boîte de texte par la suite? – Doug