计算页面UNO Java

时间:2017-12-20 09:38:38

标签: java libreoffice uno

使用LibreOffice计算Java中UNO文档中页面数的最佳方法是什么?

我尝试使用谷歌搜索,但没有任何有用的信息。我是UNO的初学者。

1 个答案:

答案 0 :(得分:0)

更简单的方法:获取TextDocumentView的PageCount属性。

xComponent = xDesktop.getCurrentComponent();
xTextDocument = (com.sun.star.text.XTextDocument)
    UnoRuntime.queryInterface(
        com.sun.star.text.XTextDocument.class, xComponent);
XController xController = xTextDocument.getCurrentController();
XPropertySet xPropertySet = UnoRuntime.queryInterface(
    XPropertySet.class, xController);
int nPageCount = AnyConverter.toInt(
    xPropertySet.getPropertyValue("PageCount"));
System.out.println("There are " + nPageCount + " pages.")

更难的方法:在XDocumentProperties列表中找到PageCount值。

xComponent = xDesktop.getCurrentComponent();
xTextDocument = (com.sun.star.text.XTextDocument)
    UnoRuntime.queryInterface(
        com.sun.star.text.XTextDocument.class, xComponent);
XDocumentPropertiesSupplier xSupplier = (XDocumentPropertiesSupplier)
    UnoRuntime.queryInterface(
        XDocumentPropertiesSupplier.class, xTextDocument);
XDocumentProperties xProps = (XDocumentProperties)
    xSupplier.getDocumentProperties();
NamedValue [] aStats = xProps.getDocumentStatistics();
for (int i = 0; i < aStats.length; i++) {
    if (aStats[i].Name.equals("PageCount")) {
        System.out.println("Page Count " + aStats[i].Value);
    }
}

https://forum.openoffice.org/en/forum/viewtopic.php?f=44&t=56507也回答了这个问题。另请参阅https://forum.openoffice.org/en/forum/viewtopic.php?f=20&t=17358以获取主要在Basic中的答案。