【问题标题】:Word Interop acting differently on Save/SaveAs2 on different machinesWord 互操作在不同机器上的 Save/SaveAs2 上的作用不同
【发布时间】:2015-05-23 14:20:12
【问题描述】:

我有以下代码可以将 docx 文件转换为 pdf

MSWord.Application app = new MSWord.Application();
MSWord.Document doc = app.Documents.Open("C:/temp/mydoc.docx");
doc.Activate();
doc.Save("c:/temp/mydoc.pdf", WdSaveFormat.wdFormatPDF); //also tried with doc.SaveAs2(...)
((MSWord._Document)doc).Close(WdSaveOptions.wdDoNotSaveChanges);

这在我的电脑上完美运行(Win7 64b 和 Office 2013)但是当我在客户端机器上运行它时(Win8 64b 和 Office 2013),它总是在执行@987654322 时显示一个文件对话框@ 或 doc.SaveAs2() 来电。文件对话框还默认使用 Docx 选项而不是 PDF 选项,导致用户必须手动选择它。

在文件对话框中单击“确定”时,PDF 已正确创建,但在 doc.Save()doc.SaveAs2() 方法中仍会出现错误并显示“命令失败”消息。如果我将代码包装在 try-catch 中并在 finally 块中执行 doc.Close() 方法,我可以绕过错误,但这不是真正的解决方案(文件对话框仍然存在)。

有没有人知道什么可能导致文件对话框弹出?是 Win8 的行为吗?

【问题讨论】:

    标签: c# .net pdf ms-word office-interop


    【解决方案1】:

    您需要改用 Document 类的 ExportAsFixedFormat 方法。它将文档保存为 PDF 或 XPS 格式。

    【讨论】:

    • 我也发现了,今晚会试试。我的电脑上的 Save/SaveAs 方法在没有提示的情况下也能正常工作的原因是什么?
    • 确保在有问题的 PC 上安装了最新的 Office 更新和服务包。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多