6.2.4 Wie kann man Dokumente drucken?
Eine der wichtigsten Aufgaben einer Office-Anwendung ist das Drucken. Schließlich muß im Zeitalter des papierlosen Büros auch alles für die Akten ausgedruckt werden.

Jeder Dokumententyp unterstützt den Service com.sun.star.view.XPrintable. Dieser steuert den Ausdruck und die Eigenschaften des Drucks.
Die Verwendung ist eigentlich denkbar einfach:

myDoc=ThisComponent
myDoc.Print(args())

Die Parameter die übergeben werden können sind:
Pages
Die Angabe welche(n) Seite(n) gedruckt werden soll.
Fortlaufend durch Bindestrich oder einzelne getrennt durch ein Semikolon. ( z.B.1-4;8;10)
CopyCount
Anzahl der Kopien
Collate
Sortieren der Kopien (True)
Sort
Sortieren der Kopien (True)
Filename
Dateiname, wenn der Ausdruck in eine Datei erfolgen soll
Mit der Angabe des Dateinamen erfolgt der Ausdruck automatisch in eine Datei.

sub testdruck
     Dim printProp(4) as New com.sun.star.beans.PropertyValue
     printProp(0).Name = "Pages"
     printProp(0).Value = "1-3"
     printProp(1).Name = "CopyCount"
     printProp(1).Value = 3
     printProp(2).Name = "Collate"
     printProp(2).Value = False
     printProp(3).Name = "Sort"
     printProp(3).Value = False
    myDoc=ThisComponent
    myDoc.Print(printProp())
end sub

Leider gibt es bei den Parametern ein Problem: Sie funktionieren nicht alle.
Sort und Collate haben keinerlei besondere Auswirkung. Die Sortierung der Kopien erfolgt nicht.
Mit Collate wird nur eine Kopie gedruckt, diese sortiert. Mit Sort passiert nichts.
(Auch 2.0)

Zusätzlich zu den allgemeinen Druckparametern gibt es noch die möglichen Parameter des Druckers. Dies sind in Starbasic acht Parameter.
Der Service dazu ist com.sun.star.view.PrinterDescriptor

Name
Name des Druckers
 
PaperOrientation
Horizontal oder Vertikal (Hochformat/Querformat)
 
 
Einstellung über Enum c.s.s.view.PaperOrientation
PORTAIT (Hochformat)
 
 
LANDSCAPE (Querformat)
PaperFormat
Papier: A4, A5 etc
 
 
enum com.sun.star.view.PaperFormat
A3,A4,A5,B4,B5,LETTER
 
 
LEGAL, TABLOID
 
 
USER
PaperSize
Eigene Papiergröße (PaperFormat=USER)
Angabe in mm
 
struct com.sun.awt.size
WIDTH (Breite)
 
 
HEIGHT (Höhe)
IsBusy
Stellt fest ob der Drucker frei ist. (true)
 
CanSetPaperorientation
Erlaubt der Drucker die Änderung
 
CanSetPaperFormat
Erlaubt der Drucker die Änderung
 
CanSetPaperSize
Erlaubt der Drucker die Änderung
 


Sub DruckerWahl
     ' Variablen deklarieren
     Dim oODoc as Object
     Dim Dummy()
     Dim printprops(3) as New com.sun.star.beans.PropertyValue
     
     ' aktuelles Dokument holen
     ODoc=ThisComponent
     
     ' Definition des Druckers
     printprops(0).Name = "Name"
     printprops(0).Value="Acrobat PDFWriter"
     printprops(1).Name = "PaperFormat"
     printprops(1).Value = com.sun.star.view.PaperFormat.A4
     printprops(2).Name = "PaperOrientation"
     printprops(2).Value = com.sun.star.view.PaperOrientation.PORTRAIT

     ' Drucker auswählen
     oOfficeDokument.setPrinter( drucker() )
     
End Sub

Um die Papiergröße selber einzugeben:


     printprops(2).Name = "PaperFormat"
     printprops(2).Value = com.sun.star.view.PaperFormat.USER
     Dim myPage As New com.sun.star.awt.size
     myPage.WIDTH=100
     myPage.HEIGTH=100
     printprops(3).Name = "PaperSize"
     printprops(3).Value = MyPage