如何通过UNO修改LibreOffice窗口标题栏显示的文档名称?
修改LibreOffice窗口标题栏文档名称的正确方法
你踩的这个坑我之前也遇到过!XDocumentProperties确实只能修改文档的元数据标题(就是文件属性里显示的那个标题),和窗口标题栏显示的内容完全是两回事。要改窗口标题,得操作LibreOffice的UI框架对象——XFrame。
下面是具体的Java UNO代码实现:
// 先获取文档的控制器 XController xController = openedDocument.getCurrentController(); // 从控制器拿到对应的窗口框架 XFrame xFrame = xController.getFrame(); // 直接设置窗口标题栏的名称 xFrame.setTitle(retrievedFile.name);
如果想让文档元数据标题和窗口标题保持一致,你可以把之前的代码和这段代码结合起来:
// 保留原有的元数据标题设置(可选) XDocumentPropertiesSupplier xDocumentPropertiesSupplier = UnoRuntime.queryInterface(XDocumentPropertiesSupplier.class, openedDocument); XDocumentProperties xDocumentProperties = xDocumentPropertiesSupplier.getDocumentProperties(); xDocumentProperties.setTitle(retrievedFile.name); // 新增窗口标题设置 XController xController = openedDocument.getCurrentController(); XFrame xFrame = xController.getFrame(); xFrame.setTitle(retrievedFile.name);
简单解释下原理:LibreOffice的每个文档窗口都由一个XFrame实例管理,窗口标题栏的内容就是这个XFrame的标题属性。而XDocumentProperties只管文档内部的元数据,和UI层的显示无关,所以之前的代码才没效果。
内容的提问来源于stack exchange,提问作者A developer
相关产品推荐
相关产品推荐

