2009-04-23 5 views
1

Ich möchte die Anzahl der Seiten zählen, die produziert werden würden, wenn ich ein OpenOffice.org Dokument ausdrucken würde. Ich kann tun es bereits für ODT-Dateien mit dem folgenden Code:Wie kann die Nr. von Seiten in einer OpenOffice.org-Tabelle programmgesteuert erhalten?

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. Zählen Sie vielleicht das Nein. von Seitenumbrüchen in den Blättern? Es gibt eine ShowPageBreaks Eigenschaft in der SpreadsheetViewSettings Klasse, aber keine PageBreakCount oder getPageBreaks(). : P

Antwort

0
// 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 da haben Sie etwas, was Sie zählen oder iterieren können.

EDIT:
Das Blatt selbst hat wahrscheinlich kein Konzept der Druckseiten.
Also ich denke, Sie müssen entweder etwas wie XPrintPreview verwenden, aber ich sehe nicht, wie man Seiten von dort zu bestimmen, oder sehen Printing Spreadsheet Documents und versuchen, PrintAreas und einige Mathematik zu verwenden.

+0

Entschuldigung, ich habe gerade gemerkt, dass ich nicht klar gemacht habe, dass ich die Nr. von Seiten, die produziert werden würden, wenn ich die Tabelle ausdrucken würde. Es scheint, dass die Nr. der Blätter möglicherweise nicht immer die gleiche wie die Nr. der ausgedruckten Seiten –