Wie kann ich dem Code
DIM arg(0) AS NEW com.sun.star.beans.PropertyValue
arg(0).name = “FilterName”
arg(0).value = “writer_pdf_Export”
oNewDoc.storeToURL(stPrintDatei, arg())
oNewDoc.close(true)
ein Passwort “mitgeben”?
Hast Du hier einmal geschaut: Der Filter "writer_pdf_Export" ignoriert alle Argumente aus den mitgegebenen FilterData-Properties ?
Auch hier: (Solved) Convert to pdf with specific settings (from command) ?
Ja, und ich habe jetzt nach deiner Anregung (Danke!) versucht das auch umzusetzen mit diesen Filter-Argumenten:
dim filterArgs(7) as New com.sun.star.beans.PropertyValue
filterArgs(0).Name = "EncryptFile"
filterArgs(0).Value = true
filterArgs(1).Name = "RestrictPermissions"
filterArgs(1).Value = true
filterArgs(2).Name = "PreparedPermissionPassword"
filterArgs(2).Value = Array()
filterArgs(3).Name = "SignatureLocation"
filterArgs(3).Value = ""
filterArgs(4).Name = "SignatureReason"
filterArgs(4).Value = ""
filterArgs(5).Name = "SignatureContactInfo"
filterArgs(5).Value = ""
filterArgs(6).Name = "SignaturePassword"
filterArgs(6).Value = "gigi"
filterArgs(7).Name = "SignatureTSA"
filterArgs(7).Value = ""
Das produziert zwar feine pdfs, zeigt sie aber bedingunslos an.
Jetzt ist natürlich die Frage, ob “SignaturePassword” das richtige Element dafür ist. Etwas zu signieren ist ja anders als etwas zu schützen.
Ja - aber was passt dann zu “EncryptFile”? In der geschachtelten Arrayliste deiner zweiten Referenz finde ich nichts anderes…
… was könnte in dem Array bei “PreparedPermissionPassword” stecken?
Ich taste mich da einmal ran: Zuerst die Filtereinstellungen, die überhaupt möglich sind. Das geht wohl über Extras → Optionen → LibreOffice → Erweitert → Experteneinstellungen
. Dort in die Suche “writer_pdf_Export” eingeben.
Da stehen erst einmal die direkten Einstellmöglichkeiten. Und von da aus würde ich in der API weiter schauen.
Ich habe es! (aus den PDF Export Command Line Parameters in LibreOffice Help)
dim filterArgs(3) as New com.sun.star.beans.PropertyValue
filterArgs(0).Name = "EncryptFile"
filterArgs(0).Value = true
filterArgs(1).Name = "RestrictPermissions"
filterArgs(1).Value = true
filterArgs(2).Name = "PreparedPermissionPassword"
filterArgs(2).Value = Array()
filterArgs(3).Name = "DocumentOpenPassword"
filterArgs(3).Value = "gigi"
Vielen Dank für dein Mitdenken, Robert - das ist noch immer motivierend!
…geht auch kürzer:
dim filterArgs(1) as New com.sun.star.beans.PropertyValue
filterArgs(0).Name = “EncryptFile”
filterArgs(0).Value = true
filterArgs(1).Name = “DocumentOpenPassword”
filterArgs(1).Value = “gigi”
Hallo Gisbert,
irgendwie müssen wir aber wohl einmal raus bekommen, wo die Filter tatsächlich dokumentiert sind.
Wenns jetzt aber klappt, dann markiere doch Deine Lösung.
Einiges steht in den Help-Files:
https://help.libreoffice.org/latest/ast/text/shared/guide/start_parameters.html
Und
In der Hilfe habe ich dann auch den Abschnitt gefunden. Aber so etwas wie die vielen unterschiedlichen Filter muss doch auch irgendwo sonst noch dokumentiert sein. Gebe ich das in der API ein, so suche ich vergebens.
Sub ExportPDFmitPasswort
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim FilePath as String
FilePath = "file:///C:/users/.../Desktop/"
dim filterArgs(1) as New com.sun.star.beans.PropertyValue
filterArgs(0).Name = "EncryptFile"
filterArgs(0).Value = true
filterArgs(1).Name = "DocumentOpenPassword"
filterArgs(1).Value = "sehrgeheim"
dim cmdArgs(2) as New com.sun.star.beans.PropertyValue
cmdArgs(0).Name = "URL"
cmdArgs(0).Value = FilePath & "Vx.pdf"
cmdArgs(1).Name = "FilterName"
cmdArgs(1).Value = "writer_pdf_Export"
cmdArgs(2).Name = "FilterData"
cmdArgs(2).Value = filterArgs()
dispatcher.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:ExportDirectToPDF", "", 0, cmdArgs())
End Sub