从命令行使用 OpenOffice 将 HTML 转换为 RTF

And*_*rew 8 cygwin bash openoffice conversion

我正在尝试在 Cygwin 中构建一个 bash 脚本,它将 HTML 文件转换为 RTF。在 OS X 中,这对 来说是微不足道的textutils,但对于常规 Linux 或 Cygwin 来说并不存在。相反,我试图从命令行使用 OpenOffice。

我读过其他地方的OpenOffice可以正常安装的程序headlessly运行/usr/bin/ooffice,但在Cygwin的Windows下这显然是行不通的,OpenOffice的安装程序没有内置本地Cygwin的符号链接,并甚至可能没有安装Windows当量ooffice

如何从 Cygwin 的命令行使用 OpenOffice 将 HTML 文件转换为 RTF 文件?

Dav*_*llo 6

我建议使用JODConverter。它是围绕 OpenDoc Api 进行转换的 Java 包装器。允许您像这样转换文件:

java -jar jodconverter-cli-2.2.0.jar foo.html foo.rtf
Run Code Online (Sandbox Code Playgroud)

它也可以在python 中使用

而不是像这样使用openoffice SDK DocumentSaver类:

java -classpath .;./bin;\
                $OO/program/classes/jurt.jar;\
                $OO/program/classes/ridl.jar;\
                $OO/program/classes/sandbox.jar;\
                $OO/program/classes/unoil.jar;\
                $OO/program/classes/juh.jar  \
    DocumentSaver uno:socket,host=localhost,port=8100;urp;StarOffice.ServiceManager  file:///C:/test/foo.html file:///C:/test/foo.rtf
Run Code Online (Sandbox Code Playgroud)


Cal*_*leb 5

有一个非常方便的 shell 脚本,unoconv可以处理任何文件与 OpenOffice/LibreOffice 支持的任何文件格式之间的转换。您可以在其网站上阅读有关它的信息,并且一定要查看其手册页。许多发行版都有可以轻松安装的软件包,我相信包括 cygwin。

安装后,在您的情况下使用意味着指定一个输入 html 文件和一个输出 rtf 文件,如下所示:

unoconv file.html file.rtf
Run Code Online (Sandbox Code Playgroud)

全做完了 :)

当然,也可以编写脚本来处理多个文件的情况。如果您使用的是zsh,您可以运行类似的命令来转换整个文件夹的 html 文件:

for file in *html; do
    unoconv "$file" "${file/html/rtf}"
done
Run Code Online (Sandbox Code Playgroud)