HCL Notes / Domino / Diverses > Entwicklung
Ausdruck von PDFs mittels Acrobat Objekten funktioniert nicht (mehr)
(1/1)
FrankLU:
Hallo Notes-Gemeinde,
vor einiger Zeit habe ich eine funktionierende Function erstellt, der mir PDF-Dateien per Script und mit Hilfe noch Acrobat Objekten ausdrucken kann.
--- Code: ---Function PrintPDFFile (PDFFile As String)
Dim AcroApp As Variant
Dim AcroAVDoc As Variant
Dim AcroPDDoc As Variant
Dim retVal As Variant
Dim NumPages As Integer
Set AcroApp = CreateObject("AcroExch.App")
Set AcroAVDoc = CreateObject("AcroExch.AVDoc")
retVal = AcroAVDoc.open(PDFFile, "")
Set AcroAVDoc = AcroApp.GetActiveDoc <---- ABSTURZ
Set AcroPDDoc = AcroAVDoc.GetPDDoc
NumPages = AcroPDDoc.GetNumPages
AcroPDDoc.Close
Set AcroPDDoc = Nothing
retVal = AcroAVDoc.PrintPagesSilent(0, NumPages, 3, True, False)
retVal = AcroAVDoc.close(True)
Set AcroAVDoc = Nothing
Set AcroApp = Nothing
End Function
--- Ende Code ---
Das Script oben ist auch in einigen Beiträgen in diesem Forum zu finden.
Nun wollte ich das wieder verwenden, aber es funktioniert nicht mehr. Ich kann die Datei in das Hintergrund-Dokument einlesen, aber beim Versuch, die Datei in den Vordergrund zu laden, stürzt das Script mit dem Fehler "Automation object member not found" ab.
Ich habe die aktuelle Version des Acrobat installiert und frage mich nun, ob Acrobat inzwischen was an seinen Objekten geändert hat. Die Hilfe bzw. Dokumentationen auf den Acrobat-Seiten helfen mir da nicht weiter, weil ich keine für mich verständliche Erläuterung der Methoden des AcroApp-Objects dort finde.
Hat jemand von Euch eine Idee und kann mir helfen?
Grüße
Frank
CarstenH:
Schau mal hier, vielleicht hilft dir das ja:
https://community.adobe.com/t5/acrobat-sdk-discussions/getactivedoc-does-not-find-a-minimized-window/m-p/10513772?profile.language=de
Carsten
jBubbleBoy:
Also wenn nur gedruckt werden soll dann ginge auch das:
--- Code: ---Const filename = "C:\tmp\test.pdf"
CreateObject("Shell.Application").Namespace(0).ParseName(filename).InvokeVerb("Print")
--- Ende Code ---
FrankLU:
Vielen Dank für die Unterstützung!
@Carsten: Der Link half leider nicht. Durch den Befehl "BringtToFront" wird der Acrobat gestartet. Gerade das wollte ich ja vermeinden. Und dann steigt mir der Code eben wieder bei GetActiveDoc aus. :(
@jBubbleBoy: Den Shell- bzw. den shellExecute-Befehl setze ich jetzt schon ein. Auch das bewirkt ein Öffnen des Acrobat, was ich aber vermeiden möchte.
Update: Nachdem ich etwas im Adobe-Forum gekramt habe, bin ich auf die Lösung gekommen:
--- Code: ---Function PrintPDFFile (PDFFile As String)
Dim AcroApp As Variant
Dim AcroAVDoc As Variant
Dim AcroPDDoc As Variant
Dim retVal As Variant
Dim NumPages As Integer
Set AcroApp = CreateObject("AcroExch.App")
Set AcroAVDoc = CreateObject("AcroExch.AVDoc")
retVal = AcroAVDoc.open(PDFFile, "")
Set AcroAVDoc = AcroApp.GetActiveDoc()
Set AcroPDDoc = AcroAVDoc.GetPDDoc()
NumPages = AcroPDDoc.GetNumPages() - 1
retVal = AcroAVDoc.PrintPagesSilent(0, NumPages, 3, True, False)
AcroApp.CloseAllDocs
AcroApp.Exit
Set AcroPDDoc = Nothing
Set AcroAVDoc = Nothing
Set AcroApp = Nothing
End Function
--- Ende Code ---
Es war also fast alles richtig. Der Unterschied liegt in der Verwendung von Klammern beim Aufruf der Methoden!
Ich bin kein Computersprachen-Expterte und kann nicht erklären, warum ein VB-Script anscheinend mit und ohne Klammern funktioniert, LS aber nur mit.
Die meisten Programmbespiele sind eben in VB geschrieben.
Grüße
Frank
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln