微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 C# 中将 Word 转换为 PDF 时防止警报

如何解决在 C# 中将 Word 转换为 PDF 时防止警报

我正在使用下面的代码文件夹中的文档转换为 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.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);
                    }

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

enter image description here

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

解决方法

您必须像这样将第二个参数设置为 <!doctype html><html> <head> <title>Directory Listing For [/]</title> <style>body {font-family:Tahoma,Arial,sans-serif;} h1,h2,h3,b {color:white;background-color:#525D76;} h1 {font-size:22px;} h2 {font-size:16px;} h3 {font-size:14px;} p {font-size:12px;} a {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style> </head> <body><h1>Directory Listing For [/]</h1><hr class="line"><table width="100%" cellspacing="0" cellpadding="5" align="center"> <tr> <td align="left"><font size="+1"><strong>Filename</strong></font></td> <td align="center"><font size="+1"><strong>Size</strong></font></td> <td align="right"><font size="+1"><strong>Last Modified</strong></font></td> </tr> <tr bgcolor="#eeeeee"> <td align="left">&nbsp;&nbsp; <a href="/files/DataRetrieval.config.xml"><tt>DataRetrieval.config.xml</tt></a></td> <td align="right"><tt>0.6 kb</tt></td> <td align="right"><tt>Mon,09 Mar 2020 04:47:57 GMT</tt></td> </tr> <tr> <td align="left">&nbsp;&nbsp; <a href="/files/DataRetrievalTask.exe"><tt>DataRetrievalTask.exe</tt></a></td> <td align="right"><tt>21.4 kb</tt></td> <td align="right"><tt>Mon,09 Mar 2020 04:52:27 GMT</tt></td> </tr> <tr bgcolor="#eeeeee"> <td align="left">&nbsp;&nbsp; <a href="/files/DataRetrievalTask.pdb"><tt>DataRetrievalTask.pdb</tt></a></td> <td align="right"><tt>25.4 kb</tt></td> <td align="right"><tt>Mon,09 Mar 2020 04:52:27 GMT</tt></td> </tr> <tr> <td align="left">&nbsp;&nbsp; <a href="/files/HMI/"><tt>HMI/</tt></a></td> <td align="right"><tt>&nbsp;</tt></td> <td align="right"><tt>Wed,10 Mar 2021 13:10:49 GMT</tt></td> </tr> <tr bgcolor="#eeeeee"> <td align="left">&nbsp;&nbsp; <a href="/files/HMIApplication/"><tt>HMIApplication/</tt></a></td> <td align="right"><tt>&nbsp;</tt></td> <td align="right"><tt>Thu,04 Feb 2021 14:25:11 GMT</tt></td> </tr> </table> <hr class="line"><h3>Apache Tomcat/10.0.2</h3></body> </html>

MsoTriState.msoFalse

因为您正在查看“转换文件”对话框,而 ConfirmConversions 控制着该对话框是否被抛出:

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

MSDN 上的 Documents.Open 规范中提到了这一点。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。