[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 中移过形状