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

时间:2012-01-11 16:42:46

标签: delphi ms-word pdf-generation ole

我正在开发一个传统的Delphi 6(Build 6.240,Update Pack 2)应用程序,该应用程序在Windows XP和Office 2000 - 2003上运行良好。

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

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

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

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

所以,问题是 - 如何在Word 7中使用Word 2010保存来自Delphi 6中OleContainer的Word文档,格式可以通过Word重新打开?

1 个答案:

答案 0 :(得分:0)

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

OleContainer.OleObject.SaveAs(DocumentName);

OleContainer.OleObject.Saved := True;

我看到你提到你正在使用.doc,但希望无论如何这都会对你有帮助。