[Reference] Convert MS/Word to PDF
這是利用 OpenOffice.org 的巨集來把 DOC 檔轉成 PDF 檔的方法,好處是也可以用在 shell script 裡,一次把好幾個檔案轉成 PDF 檔,做法及用法如下:
撰寫 OpenOffice.org 的巨集
這是利用 OpenOffice.org 的巨集來把 DOC 檔轉成 PDF 檔的方法,好處是也可以用在 shell script 裡,一次把好幾個檔案轉成 PDF 檔,做法及用法如下:
撰寫 OpenOffice.org 的巨集
- 打開 OOWriter,點選工具列上的「工具」「巨集」「組織巨集」「OpenOffice.org Basic」
- 有巨集來源那邊點選「我的巨集」下的「Standard」「Module1」,再點一下右邊的編輯來編輯 Module
- 之後會跳出一個視窗,在視窗內輸入以下的 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
- 把下列 code 存成 shell script,檔名可以取成 doc2pdf。
#!/bin/sh
DIR=$(pwd)
DOC=$DIR/$1
/usr/bin/oowriter -invisible "macro:///Standard.Module1.ConvertWordToPDF($DOC)" - 加上執行的權限
sudo chmod +x doc2pdf
- 移到 /usr/local/bin
sudo mv doc2pdf /usr/local/bin
在 Command Line 輸入 doc2pdf test.doc 就會輸出 test.pdf 了。
Recommend to Front page
試用結果
我用這個 doc2pdf 和 Windows 底下的 CutePDF 各轉了一個檔案出來,用 CutePDF 轉出來的明顯比較好,不過這並不表示這支 doc2pdf 不好,而是 OpenOffice.org 對 DOC 的解讀有誤差造成的。doc2pdf 轉出的 PDF 檔和用 OpenOffice.org 看原 DOC 檔是一樣的結果,可見得只有加強 OpenOffice.org 對 DOC 檔的解析,才能讓這支 doc2pdf 轉出更好的 PDF 檔。
雖然短期內達不到這個目標,但至少這樣在 Linux 有 command line 的指令可以將 DOC 轉成 PDF,只要內容失真不嚴重,倒也是好用的程式。
CutePDF請教
cookeyholder您好想請教一下您有提到有用 CutePDF 試過,
我也有嘗試 vb.net 搭配 CutePDF 將 doc, xls 轉成 pdf 檔,雖然可以產出 pdf 檔但是用 adobe reader 開檔案時都顯示檔案有錯誤,非得用 vb.net 呼叫 word 的 application 開啟 word 的畫面然後自己手動輸入 pdf 的檔案名稱與儲存位置出來的 pdf 檔才可以用 adobe writer 開啟,請教您是怎麼做出來的呢?謝謝
Comment Permissions: Allow commenting