Export a document to PDF with basic

Hallo.
Ich versuche, einen Report aus einer Datenbank zu erzeugen.
Der Report öffnet auch und soll als PDF abgespeichert werden.
Leider wird das Script ohne Fehlermeldung abgebrochen, ohne dass das PDF im gewünschten Verzeichnis gespeichert wird.
Hier mein Code:

sub Invoice_PDF
dim Invocename,ReNumber as string
Dim oVerbindung As Object
Dim oDatenquelle As Object
Dim oReportDoc As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue
Renumber="257"
oDatenbankKontext = CreateUnoService ( "com.sun.star.sdb.DatabaseContext" )
oDatenquelle = oDatenbankKontext.getByName("mydatabase")
oVerbindung = oDatenquelle.getConnection( "user" , "pwd" )

Args(0).Name="ActiveConnection" : Args(0).Value=oVerbindung
Args(1).Name="OpenMode" : Args(1).Value="open"
Invocename = "/home/user/xy/invoice" & "XYZ-" & ReNumber & ".pdf"

oReportDoc=oDatenquelle.DatabaseDocument.ReportDocuments.loadComponentFromURL("Rechnung_Ubuntu","_self",2,Args)	

GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
Dim session As Variant
session = CreateScriptService("Session")
Dim newSettings As Object, oDoc As Object
Set oDoc = CreateScriptService("Document")
Set newSettings = CreateScriptService("Dictionary")
session.SetPDFExportOptions(newSettings)
oDoc.ExportAsPDF(Invocename, Overwrite := True)

End Sub

Schon jetzt danke für Eure Hilfe.

Ich weiss ja nicht, was Du da alles hintereinander machst, aber Invocename sollte doch eine URL sein, oder? Dann musst Du mit ConvertToUrl auch eine URL draus machen.

Wie Du einen Report mit dem Code erzeugst ist mir ein Rätsel. Vermutlich versuchst Du den Bericht zu öffnen.

Ansonsten: Siehe aktuelles Handbuch Base, S. 592

Nun, das Codeschnipsel stammt von der Hilfeseite von Libreoffice: https://help.libreoffice.org/latest/de/text/sbasic/shared/03/sf_document.html?&DbPAR=BASIC&System=UNIX#ExportAsPDF
Scheinbar wird es benötigt, um den geöffneten Bericht für den PDF-Export “vorzubereiten” bzw Basic darauf vorzubereiten.

Dann teste doch einmal den Code aus dem Handbuch. Der passt für das Erstellen von PDF-Dokumenten aus Berichten per Button und da kann ich auch Hilfestellung zu leisten.

Herzlichen Dank für den Tipp.
Ich hatte zwischenzeitlich meinen Code mit einem mit APT installierten LO getestet und da funktioniert er. Auf meinem Produktiv-System ist LO mit Snap installiert. Das macht scheinbar Probleme.
Die 2 angepassten Zeilen aus dem Handbuch funktionieren auch bei meinem mit Snap installierten LO.
Nochmals dankeschön und einen schönen Sonntag :grinning:

Nun habe ich festgestellt, dass der Code

Args(0).Name="ActiveConnection" : Args(0).Value=oVerbindung
Args(1).Name="OpenMode" : Args(1).Value="open"
Rechnungsname1 = "/home/uli/Documents/Rechnung.pdf"
oReportDoc=oDatenquelle.DatabaseDocument.ReportDocuments.loadComponentFromURL("Rechnung_Ubuntu","_self",2,Args())
stUrl=ConvertToUrl(Rechnungsname1)
oReportDoc.storeToURL(stUrl, args())

Die Rechnung wird als Write-Dokument geöffnet und auch im Write-Format abspeichert, nicht aber im PDF-Format.
Wie bekomme ich das Speichern im PDF-Format hin?

Das mit Deinem Code kapiere ich wieder nicht.

Hier der Code, um ein offenes Dokument als PDF-Datei zu exportieren:

Sub BerichtAlsPDFspeichern(oReport AS OBJECT)
 DIM stUrl AS STRING
 DIM arg(0) AS NEW com.sun.star.beans.PropertyValue
 arg(0).name = "FilterName"
 arg(0).value = "writer_pdf_Export"
 stUrl = ConvertToURL("/home/uli/Documents/Rechnung.pdf")
 oReport.storeToURL(stUrl, arg())
End Sub

Das geht jetzt davon aus, dass Du das mit dem Objekt des Berichtes aufrufst.

Danke für deinen Lösungsvorschlag.
Das Programm läuft fehlerfrei durch und erzeugt eine Datei Rechnung.pdf
Leider ist der Datei-Inhalt immer noch ein Writer-Dokument.

Lade das Dokument doch einfach einmal hier hoch - oder schicke es mir per Mail zu. Der Export-Filter für PDF von einem Writer-Dokument aus erzeugt keine Writer-Datei. Da stimmt irgendetwas bei Deiner Zusammenstellung grundsätzlich nicht.
Nebenbei: Nutze die Möglichkeit, auf “Antworten” zu drücken (“Reply”) so erscheint Dein Beitrag immer als ein neuer Lösungsvorschlag, ist es aber gar nicht.