SWT OpenOffcie Dokument drucken

Kris

Bekanntes Mitglied
Hallo zusammen

Ich möchte über den SWT PrintDialog ein OpenOffice Dokument drucken lassen. Wie kann ich das realisieren.
Ich habe zwar den Beispielcode für das Drucken eines Teststrings aber ich weiss nicht, wie ich eine Datei übergeben könnte.

Java:
PrintDialog printDialog = new PrintDialog(rtext.getShell(), SWT.NONE);
				printDialog.open();
				PrinterData printerData = printDialog.open();
				if (!(printerData == null)) {
			          Printer p = new Printer(printerData);
			          p.startJob("PrintJob");
			          p.startPage();
			          Rectangle trim = p.computeTrim(0, 0, 0, 0);
			          Point dpi = p.getDPI();
			          int leftMargin = dpi.x + trim.x;
			          int topMargin = dpi.y / 2 + trim.y;
			          GC gc = new GC(p);
			          Font font = gc.getFont();
			          String printText = "Test";
			          Point extent = gc.stringExtent(printText);
			          gc.drawString(printText, leftMargin, topMargin
			              + font.getFontData()[0].getHeight());
			          p.endPage();
			          gc.dispose();
			          p.endJob();
			          p.dispose();
			        }

Was müsste ich modifizieren um eine Datei Test.odt zu drucken. Das Programm ist um die OpenOffice Klassen erweitert. Ich kann diese bearbeiten. Klappt alles super. Nur das Drucken bereitet schwierigkeiten.
 
Verstehe ich es richtig das du UNO verwendest, oder eine higher level API wie NOA verwendest?
Warum verwendest du dann nicht OpenOffice zum drucken?
Mit NOA zB so:
Java:
doc.getFrame().getDispatch(GlobalCommands.PRINT_DOCUMENT_DIRECT).dispatch();
 
Weil ich die Möglichkeit haben möchte, einen Drucker auszuwählen. Die Plugins sind so installiert, dass kein OpenOffice nötig ist.
 
Verwendest du nun eine OOo API, oder nicht?
Wenn kein OOo installiert ist (oder ein anderes Programm das OpenDocument verarbeiten kann), dann kannst du ein solches Dokument sowieso nicht zeichnen (es sei denn du renderst er selbst und das dürfte sehr komplex werden).
 
Verwendest du nun eine OOo API, oder nicht?
Wenn ja, dann ja.
Du lädst (geht auch headless) ein ODT mit OpenOffice und speicherst es dann unter Verwendung des PDF Export Filters. Möglicherweise gibt es auch separate Bibliotheken die das können, da kann ich dir allerdings nicht helfen.
 
Ich wollte es erstmal ohne OpenOffice Installation realisieren. Aber da dies nicht klappt, habe ich mich dazu entschieden, doch eine OpenOffice Installation vorauszusetzen.
 

Zurück
Oben