如何从命令行使用 LibreOffice 将 .doc 文件转换为 .txt?

Posted

技术标签:

【中文标题】如何从命令行使用 LibreOffice 将 .doc 文件转换为 .txt?【英文标题】:How do I convert .doc files to .txt using LibreOffice from the command line? 【发布时间】:2014-07-11 18:49:57 【问题描述】:

我有一个包含.doc 文件的文件夹,我想将其转换为.txt 格式。如何在 Windows 7 中使用 LibreOffice 的命令行模式来做到这一点?文件位于C:\Temp\Test

【问题讨论】:

【参考方案1】:

这是我使用 Windows PowerShell 处理此任务的方式

注意:在从命令行使用 LibreOffice 之前您需要关闭所有现有的 Libreoffice 实例。这意味着关闭 LibreOffice 的所有 GUI 会话并检查 TaskManager 是否有 soffice.exe 或运行后台的 LibreOffice 进程。

一件物品:

PS &("C:\Program Files (x86)\LibreOffice 4\program\soffice.exe") -headless -convert-to txt:Text -outdir C:\Temp C:\Temp\test\sample.doc

这在C:\Temp 中从文档sample.doc 创建了一个文件sample.txt

多个项目:

foreach ($file in Get-ChildItem C:\Temp\test) 

    &("C:\Program Files (x86)\LibreOffice 4\program\soffice.exe") -headless -convert-to txt:Text -outdir C:\Temp C:\Temp\test\$file | Out-Null

这为文件夹C:\Temp\test 中的每个文件创建了一个.txt 文件

再次声明:使用任务管理器确保之前版本的 soffice.exe 没有运行。这意味着关闭 LibreOffice 的现有 GUI 版本。

说明:

这里是关于Starting LibreOffice Software With Parameters 的文档。这将解释上面执行的soffice.exe 命令。 Headless 模式在没有 GUI 的情况下启动 LibreOffice 软件。我在问题中所说的“命令行模式”。 -convert-to 是本例中的一个重要参数。使用-convert-to 时,您需要知道output_filter_name 是什么(上面示例中的Text)。 A reference for those names can be found here。 output_filter_name 将是该列表中具有后缀 .xcu 的文件的名称 例如,如果我想将我的.doc 文件转换为.pdf,我会使用参数-convert-to pdf:writer_pdf_Export(未经测试) Here is a reference I used when answering this question. 出于某种原因,.exe 进程需要通过管道连接到Out-Null 以避免彼此重叠。 Go figure。

【讨论】:

在差点把头发拔掉之后,我只是查看了这个答案以供自己参考。 记住:使用任务管理器确保没有运行以前版本的 soffice.exe。这意味着关闭 LibreOffice 的现有 GUI 版本。【参考方案2】:

上述解决方案很接近,但需要在 LibreOffice 4.2 / Linux 上进行一些更改:

soffice --headless --convert-to txt:Text /path_to/file_to_convert.odt

(我用 odt 做的,我遵循的示例使用了 doc:http://ask.libreoffice.org/en/question/14130/how-do-i-install-filters-for-the-soffice-command /)

【讨论】:

在 Linux 中,在无头(命令行)模式下运行之前,是否必须关闭所有现有的 LibreOffice 进程? 现在太早了,无法准确记住,但现有流程存在某种问题。 LibreOffice 甚至可能只是(或同时)与任何试图访问它已经在 GUI 中打开的文件的外部进程发生冲突。 (哦!)【参考方案3】:

要添加到@kevinaskevin 's answer 的另一件重要的事情是 - 解决方法是:

来自开发者通过 IRC:

LO 的“用户安装”(即~/config/libreoffice)并非旨在由多个进程同时访问;因此,当一个 soffice.bin 已经为特定用户安装运行时,额外的 soffice.bin 只需将其 cmd 行参数转发给第一个并立即再次终止(即,它们不应该在退出的意义上“失败”非零退出值)

如果你想要一个独立的无头 LO,你可以通过自己的用户安装来启动它,-env:UserInstallation=<file URL to dir>

【讨论】:

以上是关于如何从命令行使用 LibreOffice 将 .doc 文件转换为 .txt?的主要内容,如果未能解决你的问题,请参考以下文章

如何从命令行对 OpenOffice/LibreOffice 电子表格运行 sql 查询?

从命令行到 libreoffice 的配置文件的路径

使用命令行使用 Libre Office 将 xls 转换为 dbf

Libreoffice:如何使用高棉 Unicode 在命令行中将 .xlsx 转换为 .pdf 格式?

LibreOffice 命令行 (soffice) 打印选项

使用 LibreOffice / OpenOffice 将 docx 转换为 pdf