用于将Word和Excel文档转换为PDF的ActiveX组件

时间:2012-02-22 16:55:26

标签: delphi pdf ms-office activex

我们需要在我们的内部Borland Delphi 7应用程序中添加一项功能,以将MS Office文档(.doc,.docx,.xls,.xlsx)转换为PDF。

是否有ActiveX组件或其他解决方案(商业或免费)我们可以使用或与我们的应用程序集成以实现此目的?

还需要它适用于早于2007年的Office版本,因为2007年转换可以通过附加组件获得,而在2010年它可以默认使用。

如果没有第三方组件,我们也会感兴趣。

2 个答案:

答案 0 :(得分:4)

一种选择是使用OpenOffice,它可以打开MS Office文档并将其另存为PDF。

这可以通过网络(中央转换器服务)实现自动化,甚至通过OpenOffice的无头模式使用,该模式通过套接字连接接受控制命令。

有各种编程语言可用的实现,它们使用此服务API进行转换。

答案 1 :(得分:4)

  

是否有ActiveX组件或其他解决方案(商业或免费)我们可以使用或与我们的应用程序集成来实现这一目标?

最好的方法是使用Office本身进行转换 Office 2007是第一个可以将文档另存为PDF的版本 因此,如果您在2007年之前安装了版本(不是您,而是其他人),则必须安装PDF打印机(如PDF创建者或诸如此类的东西)。

然后,您可以使用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);
  ....