使用LibreOffice
计算Java中UNO
文档中页面数的最佳方法是什么?
我试过谷歌搜索,但没有任何有用的东西出现。我是UNO
的初学者。
更简单的方法:获取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中找到答案。