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