Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 6 OleContainer SaveAsDocument在Windows 7/Word 2010中创建损坏的文件,在XP/Word 2003中正常_Delphi_Ms Word_Pdf Generation_Ole - Fatal编程技术网

Delphi 6 OleContainer SaveAsDocument在Windows 7/Word 2010中创建损坏的文件,在XP/Word 2003中正常

Delphi 6 OleContainer SaveAsDocument在Windows 7/Word 2010中创建损坏的文件,在XP/Word 2003中正常,delphi,ms-word,pdf-generation,ole,Delphi,Ms Word,Pdf Generation,Ole,我正在开发一个遗留的Delphi6(Build 6.240,Update Pack 2)应用程序,它在Windows XP和Office 2000-2003上运行良好 我们的客户现在希望能够使用Office 2010在Windows 7上运行该应用程序 代码似乎仍然成功地创建了Word合并文档,并将其保存到Oracle数据库中的BLOB字段中,并且可以在Word 2010中成功地从数据库重新打开文档 问题是应用程序随后需要创建文档的PDF版本(使用PDF XChange),因此它使用olcont

我正在开发一个遗留的Delphi6(Build 6.240,Update Pack 2)应用程序,它在Windows XP和Office 2000-2003上运行良好

我们的客户现在希望能够使用Office 2010在Windows 7上运行该应用程序

代码似乎仍然成功地创建了Word合并文档,并将其保存到Oracle数据库中的BLOB字段中,并且可以在Word 2010中成功地从数据库重新打开文档

问题是应用程序随后需要创建文档的PDF版本(使用PDF XChange),因此它使用
olcontainer.SaveAsDocument
将文档写入磁盘上的临时文件。试图在Word 2010(甚至Word 2003)中打开此文档时,会显示一个“文件转换”对话框,以“选择使文档可读的编码”。这些选项似乎都不能使文档可读(即使它们可读,也会有问题,因为这是一个自动化的过程)

使用
CreateObject('Word.document.8',false)
我还尝试了其他值,而不是8-9、10、11和14。当12或仅“Word.document”运行时,会导致“无效类字符串”错误,但与8的效果相同,即无法在Word中打开保存的文档


因此,问题是-如何在Delphi 6中,在Windows 7上,使用Word 2010,以可由Word重新打开的格式从
OleContainer
中保存Word文档?

从我可以得知,OleContainer无法保存.docx文件。总是腐蚀他们。我通过使用容器的OleObject变量绕过了这个问题,这样我就可以直接访问Words过程。以下是一个例子:

OleContainer.OleObject.SaveAs(DocumentName);

OleContainer.OleObject.Saved := True;

我看到您提到您正在使用.doc,但希望这对您有所帮助。

Stab in dark:您是否可能使用docx扩展名保存临时文件,但将其保存为当前(doc)格式?如果是这种情况,那么您随后将向Word提供一个具有docx扩展名的doc格式文件,而Word无法确定要使用哪种xml编码?不,该文件将以.doc扩展名保存。(不过,谢谢你的建议)