2008-06-12

利用 OpenOffice.org 在 Command Line 把 DOC 檔轉成 PDF 檔

這是利用 OpenOffice.org 的巨集來把 DOC 檔轉成 PDF 檔的方法,好處是也可以用在 shell script 裡,一次把好幾個檔案轉成 PDF 檔,做法及用法如下:

撰寫 OpenOffice.org 的巨集
  1. 打開 OOWriter,點選工具列上的「工具」/「巨集」/「組織巨集」/「OpenOffice.org Basic」
  2. 有巨集來源那邊點選「我的巨集」下的「Standard」/「Module1」,再點一下右邊的編輯來編輯 Module
  3. 之後會跳出一個視窗,在視窗內輸入以下的 code 後存檔就可以把 OpenOffice.org 關掉了。
    REM ***** BASIC *****

    Sub ConvertWordToPDF(cFile)
    cURL = ConvertToURL(cFile)

    ' Open the document.
    ' Just blindly assume that the document is of a type that OOo will
    ' correctly recognize and open -- without specifying an import filter.
    oDoc = StarDesktop.loadComponentFromURL(cURL, "_blank", 0, Array(MakePropertyValue("Hidden", True), ))

    cFile = Left(cFile, Len(cFile) - 4) + ".pdf"
    cURL = ConvertToURL(cFile)

    ' Save the document using a filter.
    oDoc.storeToURL(cURL, Array(MakePropertyValue("FilterName", "writer_pdf_Export"), ))

    oDoc.close(True)

    End Sub

    Function MakePropertyValue( Optional cName As String, Optional uValue ) As com.sun.star.beans.PropertyValue
    Dim oPropertyValue As New com.sun.star.beans.PropertyValue
    If Not IsMissing( cName ) Then
    oPropertyValue.Name = cName
    EndIf
    If Not IsMissing( uValue ) Then
    oPropertyValue.Value = uValue
    EndIf
    MakePropertyValue() = oPropertyValue
    End Function
撰寫 shell script
  1. 把下列 code 存成 shell script,檔名可以取成 doc2pdf。
    #!/bin/sh

    DIR=$(pwd)
    DOC=$DIR/$1

    /usr/bin/oowriter -invisible "macro:///Standard.Module1.ConvertWordToPDF($DOC)"
  2. 加上執行的權限
    sudo chmod +x doc2pdf
  3. 移到 /usr/local/bin
    sudo mv doc2pdf /usr/local/bin
用法
在 Command Line 輸入 doc2pdf test.doc 就會輸出 test.pdf 了


參考文章:
Convert MS/Word to PDF

沒有留言:

張貼留言

您好:

感謝您來訪這個小站,因為工作繁忙的關係,我並不會時常查看留言,所以可能會很晚才回覆,請見諒。