Autor Thema: Ausdruck von PDFs mittels Acrobat Objekten funktioniert nicht (mehr)  (Gelesen 1386 mal)

Offline FrankLU

  • Aktives Mitglied
  • ***
  • Beiträge: 116
  • Geschlecht: Männlich
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

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
« Letzte Änderung: 14.07.22 - 15:18:30 von FrankLU »
Frank Lohöfer
MD Medicus Holding GmbH
Client (User): 12.0.1
Client (Admin): 12.0.1
Server: 9.0 auf Linux

Offline CarstenH

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 672
  • Geschlecht: Männlich

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.290
  • Geschlecht: Männlich
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")
Gruss Erik :: Freelancer :: KI-Dev, Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16 / OLI 2.0

--
Nur ein toter Bug, ist ein guter Bug!

Offline FrankLU

  • Aktives Mitglied
  • ***
  • Beiträge: 116
  • Geschlecht: Männlich
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

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
« Letzte Änderung: 14.07.22 - 15:18:11 von FrankLU »
Frank Lohöfer
MD Medicus Holding GmbH
Client (User): 12.0.1
Client (Admin): 12.0.1
Server: 9.0 auf Linux

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz