计数页面 UNO Java

Posted

技术标签:

【中文标题】计数页面 UNO Java【英文标题】:Count pages UNO Java 【发布时间】:2017-12-20 09:38:38 【问题描述】:

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

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

【问题讨论】:

在 Google 中输入“openoffice 宏计数页面”(不带引号)会带来几个不错的结果 是的,它是 LibreOffice,但“openoffice”会产生更多结果,而且它们通常是相关的。 “macro”或“uno api”也是 Google 的好关键字。 【参考方案1】:

更简单的方法:获取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 中的答案。

【讨论】:

以上是关于计数页面 UNO Java的主要内容,如果未能解决你的问题,请参考以下文章

Arduino UNO + 74HC595+数码管实现0-9循环计数显示+ Proteus仿真

Arduino UNO + 74HC595联级+数码管实现00-99循环计数显示+ Proteus仿真

Arduino UNO + 74HC595联级+数码管实现0000-9999循环计数显示+ Proteus仿真

java中数值类型转换的问题,double类型显示科学计数法了。

页面浏览计数器计数加 2 而不是 1

Javascript计数器变为0而不是给定数字[关闭]