Speichern/Öffnen/Drucken von Dateien
Wie kann man Dokumente drucken?
Eine der wichtigsten Aufgaben einer Office-Anwendung ist das Drucken. Schließlich
muss 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:
Basic
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 subLeider 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
|
Basic
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 SubUm die Papiergröße selber einzugeben:
Basic
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