如何解决在 C# 中将 Word 转换为 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);
}
解决方法
您必须像这样将第二个参数设置为 <!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">
<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">
<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">
<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">
<a href="/files/HMI/"><tt>HMI/</tt></a></td>
<td align="right"><tt> </tt></td>
<td align="right"><tt>Wed,10 Mar 2021 13:10:49 GMT</tt></td>
</tr>
<tr bgcolor="#eeeeee">
<td align="left">
<a href="/files/HMIApplication/"><tt>HMIApplication/</tt></a></td>
<td align="right"><tt> </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 举报,一经查实,本站将立刻删除。