[Reference] Convert MS/Word to 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 了。

cookeyholder 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • cookeyholder
  • 試用結果

    我用這個 doc2pdf 和 Windows 底下的 CutePDF 各轉了一個檔案出來,用 CutePDF 轉出來的明顯比較好,不過這並不表示這支 doc2pdf 不好,而是 OpenOffice.org 對 DOC 的解讀有誤差造成的。

    doc2pdf 轉出的 PDF 檔和用 OpenOffice.org 看原 DOC 檔是一樣的結果,可見得只有加強 OpenOffice.org 對 DOC 檔的解析,才能讓這支 doc2pdf 轉出更好的 PDF 檔。

    雖然短期內達不到這個目標,但至少這樣在 Linux 有 command line 的指令可以將 DOC 轉成 PDF,只要內容失真不嚴重,倒也是好用的程式。
  • elie
  • CutePDF請教

    cookeyholder您好
    想請教一下您有提到有用 CutePDF 試過,
    我也有嘗試 vb.net 搭配 CutePDF 將 doc, xls 轉成 pdf 檔,雖然可以產出 pdf 檔但是用 adobe reader 開檔案時都顯示檔案有錯誤,非得用 vb.net 呼叫 word 的 application 開啟 word 的畫面然後自己手動輸入 pdf 的檔案名稱與儲存位置出來的 pdf 檔才可以用 adobe writer 開啟,請教您是怎麼做出來的呢?謝謝
【 X 關閉 】

【PIXNET 痞客邦】國外旅遊調查
您是我們挑選到的讀者!

填完問卷將有機會獲得心動好禮哦(注意:關閉此視窗將不再出現)

立即填寫取消