LibreOffice XForm:如何使用 javascript 宏读取表单数据

Posted

技术标签:

【中文标题】LibreOffice XForm:如何使用 javascript 宏读取表单数据【英文标题】:LibreOffice XForm : how to read form data with javascript macro 【发布时间】:2015-10-01 11:34:28 【问题描述】:

我在 LibreOffice Writer 5 中有一个 XForm 文档。该表单包含各种文本框和日期字段。我想要的是创建一个 javascript 宏,该宏将分配给一个文本框,并在用户更改此字段的输入时执行一些操作。到目前为止,我已经写了以下内容

var oDoc = UnoRuntime.queryInterface(XModel, XSCRIPTCONTEXT.getInvocationContext());
if (!oDoc) 
    oDoc = XSCRIPTCONTEXT.getDocument();

var xFieldsSupplier = UnoRuntime.queryInterface(XFormsSupplier, oDoc);
var xForm = xFieldsSupplier.getXForms();

xForm 为空。有谁知道我如何获得 XForm 字段?上面的代码有问题吗?

【问题讨论】:

【参考方案1】:

代码看起来不错。这似乎是 Javascript 的问题,因为我使用其他语言测试了类似的代码并且它有效。在 Python 中,这打印了表单名称:

xforms = oDoc.getXForms()
formName = xforms.getElementNames()[0]
xTextRange = xText.getEnd()
xTextRange.setString(formName)
xform = xforms.getByName(formName)

同样的事情在 Java 中也有效:

XFormsSupplier xFormsSupplier = UnoRuntime.queryInterface(
    XFormsSupplier.class, xComponent);
XNameContainer xforms = xFormsSupplier.getXForms();
String formName = xforms.getElementNames()[0];
xTextRange = xText.getEnd();
xTextRange.setString(formName);
Object aForm = xforms.getByName(formName);

This introduction 表示对 UNO 的 Javascript 支持仍处于起步阶段。

请注意XFormsSupplier未发布,这大概意味着界面可能会发生变化或不稳定。

【讨论】:

以上是关于LibreOffice XForm:如何使用 javascript 宏读取表单数据的主要内容,如果未能解决你的问题,请参考以下文章

允许对可选 XML 元素进行 XForm 控件

javascript xform api sepcifications

GDI设置字体旋转的方法

GDI设置字体旋转的方法

将 Chiba xForm 连接到一个 RESTful Web 服务(存在 db)

如何在 Basic 中使用 LibreOffice 功能?