2013-04-24 102 views

回答

4

根據libreoffice manual(作爲命令行實用程序),你不需要爲這條巨蟒,但libreoffice應該直接支持這一點:

- 轉換到 output_file_extension [:output_filter_name] [--outdir output_dir]文件...批量轉換文件。如果指定--outdir不是 ,則當前工作目錄將用作轉換文件的輸出目錄 。

例子:

        - 轉換到 PDF * .DOC

所有.doc文件轉換爲PDF文件。

        - 轉換到 PDF:writer_pdf_Export --outdir/home/user中的* .doc

所有.doc文件轉換爲在作家PDF 導出對話框中的設置和PDF文件將它們保存在/ home/user中。

ID您需要處理很多文件,你可以寫簡單的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) 
0

Win7上,採用LO 4.1我必須做如下設置(命令行,你可能需要%f轉換爲%%f如果在CMD腳本)運行:

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

相關問題