[Libre|Open]Office 中当前文档的路径

Posted

技术标签:

【中文标题】[Libre|Open]Office 中当前文档的路径【英文标题】:Path of current document in [Libre|Open]Office 【发布时间】:2012-09-15 05:35:02 【问题描述】:

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

Sub RunSomeMovie
    GlobalScope.BasicLibraries.loadLibrary("Tools")
    Shell("/usr/bin/mplayer -fs ", 2, "" & Tools.Strings.DirectoryNameoutofPath(ThisComponent.getURL(),"/") & "/media/somemovie.mp4")
End Sub

【讨论】:

【参考方案2】:

要获取当前文档路径,您可以使用这个简单的命令:

ThisComponent.getURL()

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

【讨论】:

谢谢!我可以确认这是我正在寻找的答案。老实说,我不得不承认我在此期间找到了解决方案(请参见下文)。【参考方案3】:

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

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

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

【讨论】:

【参考方案4】:

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

ThisComponent.hasLocation()

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

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

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

【讨论】:

以上是关于[Libre|Open]Office 中当前文档的路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Libre/Open Office 中使用 pyUNO 库检查段落调整?

如何避免连接器在 Open Office/Libre Office Draw 中移过形状

打开/Libre Office 宏以滚动视图到选择

Libre Office 宏以裁剪图像

将表格从 R 获取到 Libre Office Writer 的最佳方法?

Libre Office 标签在 iTextSharp 中不显示为“AcroFields”?