如何在Libre Office中打开文件并将其保存为.doc文件?

时间:2013-04-24 21:01:11

标签: python libreoffice

如何在Libre Office中打开文件并将其保存为.doc文件?有可能的? (为此创建脚本)

2 个答案:

答案 0 :(得分:4)

根据libreoffice manual(作为命令行实用程序),您不需要python,但libreoffice应该直接支持:

  

- convert-to output_file_extension [:output_filter_name] [--outdir output_dir] file ...批量转换文件。如果--outdir不是   指定然后将当前工作目录用作输出   转换文件的目录。

     

示例:

     

- 转换为 pdf * .doc

     

将所有.doc文件转换为PDF。

     

- convert-to pdf:writer_pdf_Export --outdir / home / user * .doc

     

使用Writer PDF中的设置将所有.doc文件转换为PDF   导出对话框并将其保存在/ home / user中。

我需要处理许多文件,您可以编写简单的bash脚本,如下所示:

for i in `find folder -type f -name *.lwp` ; do
    libreoffice --headless --convert-to doc:"MS Word 2003 XML" $i
done

有关如何调用此命令here或之前指定的手册的详细说明。

你基本上可以从python和subprocess进行相同的调用:

import os
import os.path
import subprocess

for i in os.listdir( SOURCE_FOLDER):
    if not i.endswith( '.lwp'):
        continue

    path = os.path.join( SOURCE_FOLDER, i)
    args = ['libreoffice', '--headless', '--convert-to',
            'doc:"MS Word 2003 XML"', path]

    subprocess.call(args, shell=False)

答案 1 :(得分:0)

在win7上,使用LO 4.1我必须执行以下操作(从命令行开始,如果在cmd脚本中运行,则可能需要将%f转换为%%f

set path=%path%;C:\Program Files (x86)\LibreOffice 4\program
for %f in (*.odt) do (
    soffice.exe --headless --convert-to doc --outdir "C:\tmp" %f
)

注意:

  • 如果任何LO实例打开,它将无效!
  • outdir是必需的
  • 不支持输入文件的通配符(因此for循环)

相应的python脚本可能如下所示:

import os
import subprocess as sp

lo = r'C:\Program Files (x86)\LibreOffice 4\program\soffice.exe'

args = '--headless --convert-to doc --outdir "%(out)s" "%(inp)s"'

inp_path = './odt'
out_path = './doc'

inp_path = os.path.normpath(os.path.abspath(inp_path))
out_path = os.path.normpath(os.path.abspath(out_path))

for root, dirs, files in os.walk(inp_path):
  for fname in files:
    if fname.endswith('.odt'):
      i = os.path.join(inp_path,fname)
      sp.call(lo + ' ' + args%{'out': out_path, 'inp': i})

(复制并修改了我的答案,来自ask.libreoffice,也发布在superuser