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

Delphi 用于将Word和Excel文档转换为PDF的ActiveX组件,delphi,pdf,ms-office,activex,Delphi,Pdf,Ms Office,Activex,我们需要在内部Borland Delphi 7应用程序中添加一项功能,以将MS Office文档(.doc、.docx、.xls、.xlsx)转换为PDF 是否有ActiveX组件或其他解决方案(商业或免费)可供我们使用或与我们的应用程序集成以实现此目的 由于2007年的转换通过附加组件提供,2010年的转换默认可用,因此,对于早于2007年的Office版本也需要这样做 我们还对是否可以在没有第三方组件的情况下实现这一点感兴趣。一个选项是使用OpenOffice,它可以打开MS Office文

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

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

由于2007年的转换通过附加组件提供,2010年的转换默认可用,因此,对于早于2007年的Office版本也需要这样做


我们还对是否可以在没有第三方组件的情况下实现这一点感兴趣。

一个选项是使用OpenOffice,它可以打开MS Office文档并将其保存为PDF

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

各种编程语言中都有使用此服务API进行转换的实现

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

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

然后,您可以使用OLE自动化指导Word(仅适用于Office 2007及更高版本)


.docx和.pdf格式均由Microsoft和Adobe完整记录。doc标准也有文档记录,当然我几年前看过的文档有数百页。因此,您最好使用已经编写的组件。没有第三方组件?好的使用OLE自动化控制Microsoft Word,该版本可以打开Word文档并保存为PDF,如Office 2010。必须安装Office 2010才能通过OLE automation对其进行控制。您要求使用ActiveX控件,该控件很可能由第三方提供,但随后指定首选非第三方?哦,等等——提到了“商业或免费”,这两个词都暗示着第三方。我想我搞糊涂了…肯,你说得对。我们正在寻找更多的解决方案,看看我们的选择是什么。这个问题确实需要一些编辑才能弄清楚。但OpenOffice是第三方的,这意味着它不是首选+1无论如何。
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);
  ....