如何通过 UNO 存储每个打开文档的瞬态数据?

开发者

我有一些配置值(整数和字符串)传递给启动程序,后来在扩展中需要和更改。它们可以因文档而异,但不得与它们一起保存。

我可以将这些直接存储在 LibreOffice 流程中吗?在任何一种情况下,
我都有或可以获得对文档的引用XStorable

到目前为止,我尝试XPropertyContainer.addProperty(...)在文档上使用,但我传入的值似乎是全局存储的,而不是每个文档:

XDocumentPropertiesSupplier xDocumentPropertiesSupplier = UnoRuntime.queryInterface(XDocumentPropertiesSupplier.class, document);
XDocumentProperties xDocumentProperties = xDocumentPropertiesSupplier.getDocumentProperties();
XPropertyContainer xPropertyContainer = xDocumentProperties.getUserDefinedProperties();
xPropertyContainer.addProperty(propertyName, PropertyAttribute.TRANSIENT | PropertyAttribute.MAYBEDEFAULT, propertyValue);
吉姆·K

在下面的python代码中,每个文档的值都不一样,不存储。

import uno
from com.sun.star.beans.PropertyAttribute import TRANSIENT
from com.sun.star.beans import UnknownPropertyException

def temp_prop():
    DIR = "/path/to/dir"
    LOG1 = DIR + "log1.txt"
    LOG2 = DIR + "log2.txt"
    PROPNAME = "myPropName"
    oDesktop = XSCRIPTCONTEXT.getDesktop()
    oDoc1 = oDesktop.loadComponentFromURL(
        "file:///" + DIR + "1.odt", "_default", 0, ())
    oDoc2 = oDesktop.loadComponentFromURL(
        "file:///" + DIR + "2.odt", "_default", 0, ())
    oDoc1props = oDoc1.getDocumentProperties().getUserDefinedProperties();
    oDoc2props = oDoc2.getDocumentProperties().getUserDefinedProperties();
    try:
        appendToFile(LOG1, oDoc1props.getPropertyValue(PROPNAME))
        appendToFile(LOG2, oDoc2props.getPropertyValue(PROPNAME))
    except UnknownPropertyException:
        appendToFile(LOG1, "Unknown Property")
        appendToFile(LOG2, "Unknown Property")
    oDoc1props.addProperty(PROPNAME, TRANSIENT, "a")
    oDoc2props.addProperty(PROPNAME, TRANSIENT, "b")
    appendToFile(LOG1, oDoc1props.getPropertyValue(PROPNAME))
    appendToFile(LOG2, oDoc2props.getPropertyValue(PROPNAME))
    oDoc1.store()
    oDoc2.store()
    oDoc1props = oDoc1.getDocumentProperties().getUserDefinedProperties();
    oDoc2props = oDoc2.getDocumentProperties().getUserDefinedProperties();
    appendToFile(LOG1, oDoc1props.getPropertyValue(PROPNAME))
    appendToFile(LOG2, oDoc2props.getPropertyValue(PROPNAME))

def appendToFile(fname, s):
    with open(fname, "a") as f: 
        f.write(s + ",")

结果:

logfile1: Unknown Property,a,a,
logfile2: Unknown Property,b,b,

关闭文档然后再次运行代码时,会出现完全相同的结果,证明未存储该属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从arduino uno导入数据

来自分类Dev

如何从R打开文档?

来自分类Dev

如何通过esp8266 wifi模块从arduino uno向网页发送数据?

来自分类Dev

Uno平台:如何确定每个平台需要哪些nuget包

来自分类Dev

是否有通过VBA打开文档副本的方法?

来自分类Dev

无法在通过代表发送的DocuSign上打开文档

来自分类Dev

如何更改python打开文档的位置目录?

来自分类Dev

如何更改python打开文档的位置目录?

来自分类Dev

如何使MS Word在“最终”审阅视图中打开文档?

来自分类Dev

C#-如何使用参数使用Word打开文档

来自分类Dev

如何通过Python Script Mac在另一个应用程序中打开文档(例如.txt)

来自分类Dev

需要知道如何通过Arduino Uno上的SoftwareSerial发送十六进制值

来自分类Dev

如何从Android设备通过USB将.hex文件上传到arduino uno?

来自分类Dev

如何读取多个条件的Python Arduino Uno

来自分类Dev

如何防止Arduino Uno更改USB端口

来自分类Dev

如何通过单击按钮打开 PDF 文档?

来自分类Dev

从Simulink到Arduino Uno的数值数据

来自分类Dev

如何使用客户端对象模型从SharePoint中打开文档

来自分类Dev

如何在本地Google Drive iOS应用中打开文档?

来自分类Dev

如何选择Word的运行实例并在其中打开文档

来自分类Dev

如何在本机Google Drive iOS应用中打开文档?

来自分类Dev

如何以最大全屏尺寸而不是小于全屏尺寸打开文档?

来自分类Dev

我如何在ubuntu中一键停止鼠标打开文档等?

来自分类Dev

如何设置xdotool和gedit打开文档并将其保存两次?

来自分类Dev

如何更改Geany的打开文档标签中的“未保存”颜色?

来自分类Dev

如何从ViewPanel控件中在DynamicContent控件构面中打开文档

来自分类Dev

如何使用 Swft 3 在默认 ios APP 中打开文档 URL?

来自分类Dev

如何在 Swift 的 macOS 项目中获取当前打开文档的文件路径?

来自分类Dev

如何在 React Native 中点击按钮打开文档选择器

Related 相关文章

  1. 1

    如何从arduino uno导入数据

  2. 2

    如何从R打开文档?

  3. 3

    如何通过esp8266 wifi模块从arduino uno向网页发送数据?

  4. 4

    Uno平台:如何确定每个平台需要哪些nuget包

  5. 5

    是否有通过VBA打开文档副本的方法?

  6. 6

    无法在通过代表发送的DocuSign上打开文档

  7. 7

    如何更改python打开文档的位置目录?

  8. 8

    如何更改python打开文档的位置目录?

  9. 9

    如何使MS Word在“最终”审阅视图中打开文档?

  10. 10

    C#-如何使用参数使用Word打开文档

  11. 11

    如何通过Python Script Mac在另一个应用程序中打开文档(例如.txt)

  12. 12

    需要知道如何通过Arduino Uno上的SoftwareSerial发送十六进制值

  13. 13

    如何从Android设备通过USB将.hex文件上传到arduino uno?

  14. 14

    如何读取多个条件的Python Arduino Uno

  15. 15

    如何防止Arduino Uno更改USB端口

  16. 16

    如何通过单击按钮打开 PDF 文档?

  17. 17

    从Simulink到Arduino Uno的数值数据

  18. 18

    如何使用客户端对象模型从SharePoint中打开文档

  19. 19

    如何在本地Google Drive iOS应用中打开文档?

  20. 20

    如何选择Word的运行实例并在其中打开文档

  21. 21

    如何在本机Google Drive iOS应用中打开文档?

  22. 22

    如何以最大全屏尺寸而不是小于全屏尺寸打开文档?

  23. 23

    我如何在ubuntu中一键停止鼠标打开文档等?

  24. 24

    如何设置xdotool和gedit打开文档并将其保存两次?

  25. 25

    如何更改Geany的打开文档标签中的“未保存”颜色?

  26. 26

    如何从ViewPanel控件中在DynamicContent控件构面中打开文档

  27. 27

    如何使用 Swft 3 在默认 ios APP 中打开文档 URL?

  28. 28

    如何在 Swift 的 macOS 项目中获取当前打开文档的文件路径?

  29. 29

    如何在 React Native 中点击按钮打开文档选择器

热门标签

归档