【问题标题】:Prevent alert while converting Word to PDF in C#在 C# 中将 Word 转换为 PDF 时防止警报
【发布时间】:2021-03-23 13:30:18
【问题描述】:

我正在使用下面的代码将文件夹中的文档转换为 PDF

string[] filePaths = Directory.GetFiles(txtFolderPath.Text, "*.doc",
                                          SearchOption.TopDirectoryOnly);
                  foreach (string path in filePaths)
                {
                    Application app = new Application();
                    app.DisplayAlerts = WdAlertLevel.wdAlertsNone;
                    app.Visible = true;

                    var objPresSet = app.Documents;
                    var objPres = objPresSet.Open(path, MsoTriState.msoTrue, MsoTriState.msoTrue, MsoTriState.msoFalse);
                    var temppath = path;
                    var pdfFileName = Path.ChangeExtension(path, ".pdf");
                    var pdfPath = Path.Combine(Path.GetDirectoryName(path), pdfFileName);

                    try
                    {
                        objPres.ExportAsFixedFormat(
                            pdfPath,
                            WdExportFormat.wdExportFormatPDF,
                            false,
                            WdExportOptimizeFor.wdExportOptimizeForPrint,
                            WdExportRange.wdExportAllDocument
                        );
                    }
                    catch
                    {
                        pdfPath = null;
                    }
                    finally
                    {
                        objPres.Close();                      
                        System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                    }

但是对于每个文档,即使我已将警报设置为无,我也会在下面弹出。

由于文件数量巨大,如何在 C# 中以编程方式停止此警报。

【问题讨论】:

    标签: c# pdf ms-word wordtopdf


    【解决方案1】:

    您必须将第二个参数设置为 MsoTriState.msoFalse,如下所示:

    var objPres = objPresSet.Open(
                    path, 
                    MsoTriState.msoFalse /* ConfirmConversions */, 
                    MsoTriState.msoTrue, 
                    MsoTriState.msoFalse);
    

    因为您正在查看“转换文件”对话框,而 ConfirmConversions 控制该对话框是否显示在您面前:

    如果文件不是 Microsoft Word 格式,则显示转换文件对话框。

    这在 MSDN 上的 Documents.Open 规范中有所提及。

    看起来并非所有 *.doc 文件都是实际的 Word 文档,因此会弹出转换文件对话框。我认为如果 Word 的梦想转换(在您的富文本格式示例中)结果是错误的,也就是不是 RTF 文件格式,Word 会抛出异常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-30
      • 2016-02-21
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多