2012-02-22 134 views
2

我們需要在我們的內部Borland Delphi 7應用程序中添加一個功能,以將MS Office文檔(.doc,.docx,.xls,.xlsx)轉換爲PDF。用於將Word和Excel文檔轉換爲PDF的ActiveX組件

是否有ActiveX組件或其他解決方案(商業或免費),我們可以使用或與我們的應用程序集成來實現此目的?

由於2007年以後的轉換可以通過附加組件在2010年提供,因此默認情況下可用,因此需要這樣做才能用於2007以前版本的Office。

我們也很感興趣,如果沒有第三方組件就可以實現。

+0

雙方的.docx和.pdf格式完全由微軟和Adobe文件尊敬。 .doc標準也記錄在案,當然我幾年前看到的文檔有數百頁。所以你最好使用已經寫好的組件。 – 2012-02-22 17:00:56

+0

沒有第三方組件?精細。使用OLE自動化控制Microsoft Word,這是一個可以打開Word文檔的版本,並保存爲PDF,例如Office 2010.您必須安裝Office 2010才能通過OLE自動化控制它。 – 2012-02-22 20:58:19

+0

您已經要求提供一個ActiveX控件,它很可能是由第三方提供的,但後來指定非第三方是首選?哦,等等 - 並提到「商業或免費」,這也暗示第三方。我覺得我很困惑... – 2012-02-23 03:16:11

回答

4

有一個ActiveX組件或另一種解決方案(商用或免費的),我們可以使用或與我們的應用程序集成,以實現這一目標?

最好的方法是使用Office本身進行轉換。
Office 2007是第一個可以將文檔保存爲PDF的版本。
因此,如果您在2007年以前安裝了一個版本(不是您,但是其他人),則必須安裝PDF打印機(如PDF-creator或whatnot)。

然後,您可以使用OLE自動化指示Word(僅適用於Office 2007和以上)

procedure ConvertToPDF(Filename: string); 
const 
    pdf = '.pdf'; 
var 
    NewFilename: string; 
    Extension: string; 
    WinWord, Document: OleVariant; 
    e: OleVariant; 
begin 
    e:= EmptyParam; 
    Extension:= ExtractFileExt(Filename); 
    NewFilename:= StringReplace(Filename, Extension, pdf, [rfReplaceAll, rfIgnoreCase]); 
    WinWord := CreateOleObject('Word.Application');   
    Document := WinWord.Documents.Open(Filename); 
    Document.SaveAs(NewFilename, wdFormatPDF, e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e,e); 
    .... 
4

一種選擇是使用OpenOffice,它可以打開MS Office文檔並將它們保存爲PDF。

這可以自動化,甚至通過網絡(中央轉換器服務)在OpenOffice的無頭模式下使用,該模式通過套接字連接接受控制命令。

有許多使用此服務API進行轉換的各種編程語言的實現。

+0

但OpenOffice是第三方,這意味着它不是首選。 :)無論如何。 – 2012-02-23 03:17:08