Wie kann das nicht. von Seiten in einer OpenOffice.org-Tabelle programmatisch erhalten werden?

StackOverflow https://stackoverflow.com/questions/781105

Frage

Ich möchte die Anzahl der Seiten zählen, die erzeugt werden würde, wenn ich ein OpenOffice.org-Dokument ausgedruckt. Ich kann tun es bereits für ODT-Dateien mit dem folgenden Code:

public short getPageCount() {
        XModel model = (XModel) UnoRuntime.queryInterface(XModel.class,
                        getDocument());

        XTextViewCursorSupplier supplier = (XTextViewCursorSupplier) UnoRuntime
                        .queryInterface(XTextViewCursorSupplier.class, model
                                        .getCurrentController());

        XTextViewCursor viewCursor = supplier.getViewCursor();

        XPageCursor pageCursor = (XPageCursor) UnoRuntime.queryInterface(
                        XPageCursor.class, viewCursor);

        pageCursor.jumpToLastPage();

        return pageCursor.getPage();
}

public Object getDocument() {
        XComponentContext context = Bootstrap.bootstrap();

        XMultiComponentFactory factory = context.getServiceManager();

        Object desktop = factory.createInstanceWithContext(
                        "com.sun.star.frame.Desktop", context);

        XComponentLoader loader = (XComponentLoader) UnoRuntime.queryInterface(
                        XComponentLoader.class, desktop);

        XComponent component = loader.loadComponentFromURL("file:///path/to/file.odt",
                        "_blank", 0, new PropertyValue[0]);

        return UnoRuntime.queryInterface(XTextDocument.class,
                        component);
}

Ich möchte wissen, ob ich etwas ähnliches mit ODS-Dateien tun. Vielleicht machen Sie das nicht zählen. von Seitenumbrüchen in den Blättern? Es gibt eine ShowPageBreaks Eigenschaft in der Klasse SpreadsheetViewSettings aber keine PageBreakCount oder getPageBreaks(). : P

War es hilfreich?

Lösung

// get the sheet document using UnoRuntime
XSpreadsheetDocument sheetDoc = ...;
// get an object containing all sheets
XSpreadsheets sheets = sheetDoc.getSheets();
// get the sheets names
String[] sheetnames = sheets.getElementNames();

und dort haben Sie etwas, das Sie zählen oder laufen kann.

EDIT:
Das Blatt selbst hat wahrscheinlich keinen Begriff von Druckseite.
Also denke ich, muss man entweder etwas wie XPrintPreview verwenden, aber ich sehe nicht, wie Seiten zu bestimmen, von dort, oder sehen Drucken Tabellendokumente und versuchen PrintAreas zu verwenden und einige Mathematik.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top