从Delphi创建Word文档,另存为Doc和PDF
发布时间:2020-12-15 09:24:38 所属栏目:大数据 来源:网络整理
导读:我需要使用特定模板从Delphi创建Word文档,将文档保存为具有给定名称的Word文档,然后使用相同的名称保存相同的文档,但保存为PDF文件. (在Word 2007中,可以使用SaveAsPdf …插件完成.在Word 2010中,它是内置功能) 如何使用Delphi XE完成这项工作? 解决方法 首
我需要使用特定模板从Delphi创建Word文档,将文档保存为具有给定名称的Word文档,然后使用相同的名称保存相同的文档,但保存为PDF文件. (在Word 2007中,可以使用SaveAsPdf …插件完成.在Word 2010中,它是内置功能)
如何使用Delphi XE完成这项工作? 解决方法
首先使用组件|将“Microsoft Word 12对象”(MS Word 2007)类型库导入到项目中“导入组件”菜单项.然后,您可以使用此示例代码加载MS Word文件,并使用内部PDF转换器将其另存为PDF.如果您使用的是Microsoft Word 2010,请加载其类型库而不是Word 2007.
unit fMain; interface uses Windows,SysUtils,Variants,Classes,Controls,Forms,Dialogs,StdCtrls,Word_TLB; type TfrmMain = class(TForm) btnLoad: TButton; btnSaveAs: TButton; FileOpenDialog1: TFileOpenDialog; FileSaveDialog1: TFileSaveDialog; procedure btnLoadClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure btnSaveAsClick(Sender: TObject); private FWordApp : WordApplication; FWordDoc : WordDocument; procedure InitializeApp; procedure FinalizeApp; function LoadFile(const AFileName: string): WordDocument; procedure SaveAsPdf(ADocument: WordDocument; const AFileName: string); public { Public declarations } end; var frmMain: TfrmMain; implementation uses ComObj; {$R *.dfm} procedure TfrmMain.btnLoadClick(Sender: TObject); begin if FileOpenDialog1.Execute then FWordDoc := LoadFile(FileOpenDialog1.FileName); end; procedure TfrmMain.btnSaveAsClick(Sender: TObject); begin if FileSaveDialog1.Execute then begin if Assigned(FWordDoc) then SaveAsPdf(FWordDoc,FileSaveDialog1.FileName); end; end; procedure TfrmMain.FinalizeApp; var SaveChanges: OleVariant; begin if Assigned(FWordApp) then begin SaveChanges := False; FWordApp.Quit(SaveChanges,EmptyParam,EmptyParam); FWordApp := nil; end; end; procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction); begin FinalizeApp; end; procedure TfrmMain.InitializeApp; begin FWordApp := createOleObject('Word.Application') as WordApplication; if Assigned(FWordApp) then begin FWordApp.Visible := False; end else raise Exception.Create('Cannot initialize Word application'); end; function TfrmMain.LoadFile(const AFileName: string): WordDocument; var FileName: OleVariant; Doc : WordDocument; begin if not Assigned(FWordApp) then InitializeApp; FileName := AFileName; Doc := FWordApp.Documents.Open(FileName,EmptyParam); Result := Doc; end; procedure TfrmMain.SaveAsPdf(ADocument: WordDocument; const AFileName: string); var FileName,FileFormat : OleVariant; begin if Assigned(ADocument) then begin FileName := AFileName; FileFormat := wdFormatPDF; ADocument.SaveAs(FileName,FileFormat,EmptyParam); end; end; end. 我只是编写了代码并运行了一次,它可以工作,但我没有彻底测试它,所以可能会有一些故障. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |