存储文档
    成功加载办公软件组件之后,返回的接口用于操纵该组件。诸如com.sun.star.text.XTextDocument、com.sun.star.sheet.XSpreadsheetDocument 或com.sun.star.drawing.XDrawPagesSupplier 之类的文档特定接口是通过 queryInterface() 进行检索的。

    如果办公软件组件支持适用于实现 com.sun.star.document.OfficeDocument 服务的每个组件的com.sun.star.frame.XStorable 接口,则可以存储该组件:

void store ( )
void storeAsURL ( [in] string sURL, [in] sequence< com::sun::star::beans::PropertyValue > lArguments )
void storeToURL ( [in] string sURL, [in] sequence< com::sun::star::beans::PropertyValue > lArguments )
boolean hasLocation ()
string getLocation ()
boolean isReadonly ()
    XStorable 提供的文档存储方法有 store()、storeAsURL() 和 storeToURL()。后两个方法使用中间描述符进行调用。

store() 将覆盖现有文件。对使用 private:factory/... URL 从头开始创建的文档调用这个方法将导致异常。其他两个方法 storeAsURL() 和 storeToURL() 都保留原文件不动,不同之处在于存储文档之后。

storeToURL() 方法将当前文档保存到指定位置,而不改变文档的内部状态。storeAsURL 方法将文档的 Modified 属性(可通过文档的 com.sun.star.util.XModifiable 接口访问)设置为假,并使用调用中传送的参数更新文档的内部中间描述符。这样就改变了文档的 URL。

    在保存已编辑文档之前需要对一个 PropertyValue 数组结构体进行内容设置,

PropertyValue[] prop = new PropertyValue[1];
        prop[0] = new PropertyValue();
        prop[0].Name = "Overwrite";
        prop[0].Value = Boolean.TRUE;

事件绑定描述中的 PropertyValue 结构如下:

EventType 字符串型。可能的值为 "StarBasic" 或 "Script"。事件类型 "Script" 用URL 表示位置。事件类型 "StarBasic" 是出于兼容目的而提供的,除 URL外,它还用 Library 和 MacroName 属性来描述宏的地址。

Script  字符串型。适用于 Script 和 StarBasic事件类型。用于描述被绑定宏/脚本例程的位置。URL 属性需要使用命令 URL。StarBasic 将在发生事件时执行此命令。 对于事件类型 StarBasic 而言,URL 使用 macro:协议。对于事件类型Script 而言,可以使用其他协议,特别是 script:协议。macro 协议有两种形式:macro:///<Library>.<Module>.<Method(args)>macro://./<Library>.<Module>.<Method(args)>第一种形式指向全局基本存储器中的一个方法,第二种形式指向嵌套在当前文档中的一个方法。Library>.<Module>.<Method(args)> 表示程序库、模块和方法的名称。目前,args 只能使用字符串参数(用逗号分隔)。如果不存在参数,必须使用空括号,因为括号是方法的组成部分。下面是一个 URL 示例:macro:///MyLib.MyModule.MyMethod(foo,bar)

Library 字符串型,已不再使用。适用于 EventType "StarBasic" 事件类型。可以为其赋予"application" 值或为全局基本存储器赋予空字符串值,为嵌套代码的文档赋予 "document" 值。

MacroName 字符串型,已不再使用。适用于 EventType "StarBasic" 事件类型。将宏
地址描述为 <Library>.<MyModule>.<MyMethod>。

还有些属性,等我整理好了再补充上来:)


本文依据《创作共用约定》之“署名-禁止派生-非商业用途”方式发布,即你可以免费拷贝、分发、呈现和表演当前作品,但是必须基于以下条款:

  • 署名:你必须明确标明作者的名字。

  • 非商业用途:你不可将当前作品用于商业目的。

  • 禁止派生:你不可更改、转变或者基于此作品重新构造为新作品。

对于任何二次使用或分发,你必须让其他人明确当前作品的授权条款。

在得到作者的明确允许下,这里的某些条款可以放弃。