2012-02-22 133 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