Nachdem mir aus dem Forum diesmal niemand helfen konnte
, habe ich nun probiert und probiert und jetzt selbst eine Lösung gefunden, die ich niemanden vorenthalten möchte. Im Grunde genommen besteht die Antwort aus zwei Teilen.
Zum Ersten: Parameterübergaben macht man wie folgt: Zunächst definiert man die zu übergebenden Parameter möglichst nahe am Original. Im Idealfall greift man bei der Definition selbst über OLE auf die entsprechenden Klassen zu:
Für obiges Code-Beispiel sähe das wie folgt aus:
Dim PrintArgs(1) as Variant
Dim PrintArgs1 as Variant
Dim PrintArgs2 as Variant
Set Printargs1= objServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Set Printargs2= objServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
PrintArgs1.Name = "URL"
PrintArgs1.Value = "file:///" + FilePathname
PrintArgs2.Name = "FilterName"
PrintArgs2.Value = "writer_pdf_Export"
Set PrintArgs(0) = PrintArgs1
Set PrintArgs(1) = PrintArgs2
Damit ist der Variant-Typ PrintArgs sowohl für Lotus Script als auch für OLE verarbeitbar.
Die Frage zur korrekten Parameterübergabe ist damit geklärt. Punkt. Ende. Aus. Basta!
Wenn man den obigen Code entsprechend anpasst, erhält man allerdings immer noch die gleiche Fehlermeldung. Hier führt Lotus Notes den Entwickler damit gehörig auf den Holzweg
Als OpenOffice-Neuling begebe ich mich nun mit den 2 Teil meiner Antwort in den Bereich der Spekulation, hier kann es nicht schaden, wenn Fachleute meine Mutmaßungen bestätigen, korrigieren oder ergänzen.
Offenbar gibt es einige OpenOffice-Methoden und Eigenschaften in den Klassen, mit denen Lotus Symphony arbeitet. die Lotus Script über OLE aber nicht ansprechen kann. Ich vermute hier diverse Versionsprobleme der Sorte Lotus Script / OLE arbeitet mit "OpenOffice 1.0", Lotus Symphony arbeitet aber mit "OpenOffice X.Y" Wenn ich z.B. mit der Methode "createUnoService" arbeite, deutet eine aussagekräftige Lotus-Notes Fehlermeldung darauf hin, dass er die Methode nicht kennt.
Baue ich mir nun über andere Wege das benötigte Datenobjekt zu einer Klasse zusammen (z.B. statt über "createUnoService" über "createInstance"), dann ist im Ergebnis meine Variable möglicherweise unvollständig bzw. andersartig, als gewünscht. Es sieht so aus, als ob mein so definiertes Objekt zwar vom richtigen Klassentyp ist, aber nicht die Eigenschaften und Methoden zur Verfügung stehen, die ich erwarte.
Jedenfalls bekomme ich die Fehlermeldung mit den falschen Argumententypen offenbar immer auch dann, wenn ich Methoden aufrufe, die theoretisch zwar da sein könnten (d.h. syntaktisch korrekt geschrieben und allgemein für die Klasse definiert) die aber (aufgrund der "Entstehungsgeschichte" des konkreten Datenobjektes?) nicht zur Verfügung stehen.
Für das PDF-Druckproblem habe ich jedenfalls eine Lösung gefunden, indem ich einfach über andere Klassen gehe:
Anstatt über den etwas fragwürdig definierten Object-Dispatcher zu gehen
Call Objdispatcher.executeDispatch(ObjDocument, ".uno:ExportTo", "", 0, "")
habe ich es über die sauber definierte ObjDocument Variable gemacht:
Call objDocument.storeToURL("file:///"+FilePathname, PrintArgs)
.... und siehe da: Es geht!
Mein persönlicher Senf hierzu:
Der 8-er-Client mit installiertem Symphony schreit geradezu nach Anwendungen, mit denen über LotusScript/OLE Funktionen aus OpenOffice angebunden werden. Nie mehr 1000 Fallunterscheidungen programmieren (Welches Word, welches Excel usw.)
Allerdings ist bei der Umsetzung der "klassische" Weg (Makro aufzeichnen, mit "Copy+Paste" in den Script-Code kopieren, etwas Feintuning bei den Parameterübergaben, fertig) leider ein Holzweg.
Das gilt im Übrigen auch für die 8.5 er-Beta, an der ich das Ganze auch probiert habe.
Hier bin ich ein wenig von IBM enttäuscht, dass sie das nicht besser in den Griff gekriegt haben. Einerseits gibt man den Entwicklern ein tolles und mächtiges Werkzeug in die Hand, andererseits erscheint mir dieses Werkzeug - sag ich mal - 'lieblos' und 'hemdsärmlig' implementiert.
Erschwerend kommt hinzu, dass vernünftige Dokumentation hierzu kaum zu finden ist.
Naja, trotz allem glaube ich, Lotus Symphony hat Zukunft! Es wird Word und Co ganz sicher nicht vom Markt verdrängen, aber wenn der Notes-Client mit Symphony schon mal da ist und die passsenden Anwendungen dazu kommen, werden sich speziell diese Anwender mit den Produkten aus der OpenOffice-Gemeinde anfreunden. Warten wir's mal ab....