1

我正在使用以下代码将文件夹中的文档转换为 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# 中以编程方式停止此警报。

4

1 回答 1

1

您必须将第二个参数设置为MsoTriState.msoFalse

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

因为您正在查看 Convert File 对话框,并且ConfirmConversions控制该对话框是否显示在您的面前:

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

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

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

于 2021-03-23T13:43:22.283 回答