【发布时间】:2021-09-10 09:00:34
【问题描述】:
基本上我需要创建一个 PDF 存档器,将 MailItem 的内容保存到 PDF 文件中。 代码如下:
mailItem.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
string pdfPath = Path.Combine(fullPath + fileName + ".pdf");
Microsoft.Office.Interop.Word.Document doc = mailItem.GetInspector.WordEditor;
doc.SaveAs(pdfPath, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF);
异常发生在 .SaveAs 方法上。我基本上把它归结为,它与文件路径有关,因为我尝试将文件路径更改为更短,但没有发生异常。问题是,它必须位于较长的文件路径结构中。我也确实考虑过它可能达到了文件路径的最大长度(255),但是从运行 pdfPath.Length 可以看出,长度是 81。
有人有什么想法吗?
【问题讨论】:
-
COMException 肯定有更多细节吗?
-
@cjb110 它所说的只是“抛出异常:EmailArchiverOutlook.dll 中的'System.Runtime.InteropServices.COMException'”,堆栈跟踪仅指向 .SaveAs 方法发生的行
-
抱歉刚刚重读了您的帖子,SaveAs 命令的路径太长(可能是由于一般历史窗口对路径长度的限制)。所以拆分它,SaveAs 到一个较短的路径,然后使用 .NET IO File 方法将它移动到最终位置。
-
是的,有效。太感谢了!我不知道为什么我没有想到自己这样做。
标签: c# visual-studio office-interop office-addins