Von den (hierfür manuell vorgenommenen) Einstellungen im Druckdialog … … kann ich einige erfolgreich aus der Tabelle an das Makro und somit an den Printjob übergeben, bei anderen habe ich nach tagelangem Recherchieren und Experimentieren noch keinen Erfolg.
Hier der teilweise funktionierende Code
Code: Alles auswählen
dim xpvPrinter(2) as new com.sun.star.beans.PropertyValue
dim xpvPrntOpt(3) as new com.sun.star.beans.PropertyValue
with oSheet
xpvPrinter(0).Name = "Name"
select case right(.getCellRangeByName(oShtCrtl.sPrint_V).string,5)
case "P5021" : xpvPrinter(0).Value = "ECOSYS-P5021cdn"
xpvPrntOpt(0).Name = "DuplexMode"
select case sPrnOpt
case "duplex A5" : xpvPrntOpt(0).Value = 3 ' SHORTEDGE
case "duplex A4" : xpvPrntOpt(0).Value = 2 ' LONGEDGE
case "einseitig A4" : xpvPrntOpt(0).Value = 1 ' OFF
end select
case "Datei" : xpvPrinter(0).Value = "CUPS-PDF-Printer"
xpvPrntOpt(0).Name = "FileName" : xpvPrntOpt(0).Value = sPath & "/Katalog " & sIssue & ".pdf"
end select
xpvPrinter(1).Name = "PaperFormat" : xpvPrinter(1).Value = 1 ' A4
xpvPrinter(2).Name = "PaperOrientation" : xpvPrinter(2).Value = iif("duplex A5"=sPrnOpt,1,0) ' 1/0=LANDSCAPE/PORTRAIT
xpvPrntOpt(1).Name = "Pages" : xpvPrntOpt(1).Value = .getCellRangeByName(oShtCrtl.sPrnSeqV).string
xpvPrntOpt(2).Name = "PageColumns" : xpvPrntOpt(2).Value = iif("duplex A5"=sPrnOpt,2,1)
xpvPrntOpt(3).Name = "Wait" : xpvPrntOpt(3).Value = true
end with
oDoc.Printer = xpvPrinter()
oDoc.print(xpvPrntOpt())
"Seiten _pro Blatt" - die Property "PageColumns" meint wohl (für Writer) was anderes und wirkt in CALC gar nicht.
Die Papierquelle/"Schacht" - Cassette 1 oder 2 oder MP tray
Auch für andere Druckereinstellungen (eco mode, gloss mode, resolution, …) fehlen mir noch die passenden properties, aber die scheinen sich wenigstens nicht dauernd zu verstellen.
Wer immer mir mit Info zu den fehlenden properties, oder dazu, wo ich deren Beschreibung finden kann, aushilft, kann sich meines ewigen, herzlichen Dankes sicher sein.
Wenn gar nichts hilft, wäre Plan B den Druckdialog wie oben (teilweise) zu füllen und dann zur manuellen Überprüfung/Korrektur anzuzeigen, anstatt mit doc.print(printOptions()) direkt zu starten.
Aber wie das geht, hab ich auch nicht raus gefunden - weiß das jemand?