3

如何确定当前打开的文档在 OpenOffice 或 LibreOffice 文档中的路径?我想将路径转发到外部应用程序。

更具体地说,我想用全屏模式的视频文件从 impress 启动一个外部播放器:

Shell("/usr/bin/mplayer", 2, """ -fs"" some-file-in-same-dir-as-document.mp4")

对于最后一个参数,我需要当前打开的文档的路径才能附加它。不指定路径会导致引用当前路径(由CurDir()函数给出),这是不同的。

LibreOffice 宏实际上有很好的参考吗?我发现的唯一相对较好(但很难搜索)的文档是 Andrew Pitonyak 的“ OpenOffice Macros Explained ”。

4

4 回答 4

6

与此同时,我找到了一个可行的解决方案。看这里:

Sub RunSomeMovie
    GlobalScope.BasicLibraries.loadLibrary("Tools")
    Shell("/usr/bin/mplayer -fs ", 2, "" & Tools.Strings.DirectoryNameoutofPath(ThisComponent.getURL(),"/") & "/media/somemovie.mp4")
End Sub
于 2012-12-14T17:24:29.930 回答
5

要获取当前文档路径,请使用以下简单命令:

ThisComponent.getURL()

CurDir() 对于所有操作系统来说根本不可靠顺便说一句,我在你引用的 Pitonyak 书中发现了我不知道的信息,并且发现它非常珍贵,因此感谢分享。

于 2012-12-13T16:29:34.083 回答
4

我正在使用 LibreOffice 4.2.0.4,以下代码适用于我:

    Dim Dir as String
    GlobalScope.BasicLibraries.loadLibrary("Tools")
    Dir = Tools.Strings.DirectoryNameoutofPath(ThisComponent.url, "/")

变量“dir”现在包含当前文档的路径。

于 2014-12-07T10:27:40.663 回答
3

文档只有在保存(或从保存的位置打开)时才具有位置。此外,从 LibreOffice Base 中打开的表单本身没有位置。只有 odt 有位置。因此,虽然:

ThisComponent.hasLocation()

返回 True,该位置是一个空字符串(将其视为错误)。要获取位置,在这种情况下,您必须访问“父级”:

ThisComponent.Parent.hasLocation()(或 ThisComponent.Parent.getURL())

当然,您必须将其“翻译”为可读:Tools.Strings.DirectoryNameoutofPath

于 2015-05-26T10:55:31.130 回答