Ich habe ein Problem festgestellt - ich muss eine Anzahl von PDF-Dateien mit einem benutzerdefinierten Stempel (Annotationstypen) versehen. Ich kann dies über Aktionen für Acrobat X Pro tun, aber meine Kunden haben diese Lizenz nicht und müssen sie trotzdem tun. Die Liste der Dateien wird in einer Excel-Tabelle gespeichert, daher suche ich idealerweise nach einer VBA-Lösung. Ich habe kam mit dem folgenden Code auf:Hinzufügen eines benutzerdefinierten PDF-Stempels zum Dokument von 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
Das Problem ist mit den setprops
und getprops
Verfahren - es scheint, in dem Moment, wenn Annotation erstellt (jso.AddAnnot
) es nicht die AP
Eigenschaft nicht besitzen, das das ist Name des Stempels, den ich hinzufügen möchte. Wenn ich zuerst die Eigenschaft Type= "Stamp"
einstelle und dann versuche, die AP
anzugeben, wird einer der Standardstempel hinzugefügt und es wird AP
in meine benutzerdefinierten Stempel 'AP
umbenannt. Beachten Sie auch, dass, wenn ich Akrobat und verwenden Sie den Code unten zu starten, wird die richtige Stempel hinzugefügt:
this.addAnnot({page:0,type:"Stamp",rect:[100,100,350,350],AP:"#eIXuM60ZXCv0sI-vxFqvlD"})
Wenn es einen Weg gibt, dieses Javascript von VBA innerhalb des PDDoc Objekt auszuführen, das das Problem löst, aber bis jetzt habe ich versagt.
Hallo, ich weiß nicht, wie das auch geht. Aber wie wäre es mit VBA, um eine Textbox mit Ihrem Stempel/Notation als Inhalt einzufügen. Drucken/exportieren Sie die Dateien als PDF und verstecken/löschen Sie die Textbox danach? – Doug