WordXP Delphi命令未能保存为PDF
我有一个应用程序,它在保存为.doc文件时运行良好。 我已经尝试过获取它,因此程序将同时保存为.doc和.pdf,这是使用WordXP单元完成的WordXP Delphi命令未能保存为PDF,delphi,pdf,automation,save-as,Delphi,Pdf,Automation,Save As,我有一个应用程序,它在保存为.doc文件时运行良好。 我已经尝试过获取它,因此程序将同时保存为.doc和.pdf,这是使用WordXP单元完成的 procedure TDocCreator.CloseDocument(ASaveAs : string); var LFileName : OleVariant; begin LFileName := ASaveAs; FDoc.SaveAs(LFileName, EmptyParam,EmptyParam, EmptyParam, Em
procedure TDocCreator.CloseDocument(ASaveAs : string);
var
LFileName : OleVariant;
begin
LFileName := ASaveAs;
FDoc.SaveAs(LFileName, EmptyParam,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
LFileName := ChangeFileExt(ASaveAs, '.pdf');
FDoc.SaveAs(LFileName,PDFFileFormat,EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
FWordApp.NormalTemplate.Saved := true;
FWordApp.Quit(True);
FWordApp.Disconnect;
end;
如果我删除第二个saveas,代码就可以正常工作。并非每次保存文档时都会弹出“EOleException Command Failed”异常,但中断发生的时间点是.pdf文件的保存时间
注意:我只有两个可用的保存过程SaveAsUsed和SaveAs2000。我也远离一台可以编译delphi的机器
如果我遗漏了任何东西或者需要清理任何东西,我将能够做出响应,但是直到星期二我才能测试任何代码更改
多谢各位
编辑:
好的,程序正在远程调试,执行所有代码的机器无法访问office,因为它位于VM上。应用程序将通过一组模板进行邮件合并,一旦完成,保存过程将开始。所以我做了两个文档,这个过程是在for循环中完成的。这很有效。然后,我尝试在第三个文件上执行5,它会出现“命令失败”错误。这样就不会关闭word并取消剩余的进程。当查看LFileName时,其内容是“??”。这有时是外国字符。尽管它仍然能够使用正确的filenam创建.doc文件。如果“ASaveAs”有任何区别,则此文件名在过程外部设置。另一件事是该文件没有使用任何其他应用程序打开。它使用程序打开的单词application完成整个过程
LFileName := ASaveAs;
try
try
FDoc.SaveAs(LFileName,EmptyParam, EmptyParam, EmptyParam, ...);
except
on E : Exception do
ShowMessage(E.ClassName + ' error creating document');
end;
try
if FileExists(LFileName) then
begin
Sleep(5000);
LFileName := ChangeFileExt(ASaveAs, '.pdf');
FDoc.SaveAs(LFileName,PDFFileFormat,EmptyParam, EmptyParam, ...;
end;
except
on E : Exception do
ShowMessage(E.ClassName + ' error creating PDF');
end;
finally
FWordApp.Quit(True);
FWordApp.Disconnect;
end;
可能会更好,我仍然不确定尝试和例外,但它的工作没有崩溃感谢战术睡眠。可能会更好,也很乐意,但目前看来这是一个不错的解决方案。感谢David Heffernan指出该文件可能正在使用。如何定义PdfileFormat?安装了哪个版本的Word?@DavidHeffernan PDFFileFormat是一个常量,设置为17。Word 2010,但对我来说,我不能保证将使用哪个版本的Word,我想对任何使用该应用程序的人来说都是2010年,但我不是100%确定。它依赖于Office 97的加载项。请找出失败时正在运行的版本。使用该应用程序的任何人都不会使用office 97。最早的版本是2007年。但回到问题上来,office 2010正在失败。哦,我在说什么?Office 2007我的意思不是97。