我正在尝试构建一个reStructuredText到 MS Word 文档工具链,所以我将能够在版本控制中只保存第一个源。
到目前为止我——
让 rst2odt.py将reStructuredText 转换为 OpenOffice.org Writer 格式。
接下来我想使用最新的 OpenOffice.org(目前是 3.1),它在生成 Word 97/2000/XP 文档方面做得相当不错,所以我编写了宏:
sub ConvertToWord(file as string)
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim odf(1) as new com.sun.star.beans.PropertyValue
odf(0).Name = "URL"
odf(0).Value = "file://" + file + ".odt"
odf(1).Name = "FilterName"
odf(1).Value = "MS Word 97"
dispatcher.executeDispatch(document, ".uno:Open", "", 0, odf())
rem ----------------------------------------------------------------------
dim doc(1) as new com.sun.star.beans.PropertyValue
doc(0).Name = "URL"
doc(0).Value = "file://" + file + ".doc"
doc(1).Name = "FilterName"
doc(1).Value = "MS Word 97"
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, doc())
end sub
但是当我执行它时:
soffice "macro:///Standard.Module1.ConvertToWord(/path/to/odt_file_wo_ext)"
我收到一个:“BASIC 运行时错误。找不到属性或方法。” 在线留言:
document = ThisComponent.CurrentController.Frame
当我评论那一行时,上面的调用完成没有错误,但什么也不做。我想我需要以某种方式将值设置document
为新创建的实例,但我不知道该怎么做。
还是我会以完全落后的方式进行?
PS 我会考虑JODConverter作为后备,因为我尽量减少我的依赖。