2011-01-07 193 views
2

我正在编写一个Outlook07加载项,它应该将电子邮件 及其所有附件的文本存储在单独的pdf文件中。当然这只是为了合理的附件,对于zip文件等是没有意义的。将Outlook电子邮件的所有附件转换为PDF

我已经达到了将所有文件存储在临时目录(针对每封邮件)的程度。邮件 本身很容易转换,但我遇到附件有问题。

想法是从每个相应的办公室interop使用exportAs方法,所以我不必在客户端电脑上安装aditional软件。

要导出每个文件及其相应的办公应用程序,首先必须找出哪个办公应用程序可以打开它。当然,想到的第一件事就是尝试扩展名,但必须有一些更有效的方式,然后

if(fileExt == "doc" or "docx" or "wordformat i forgot") Open Word and Convert 
if(fileExt == "xls") Open Excel and Convert 

我试图找到在MSDN单证的东西,谷歌,但Office.Interops是 真的很糟糕的文件记录,这使得它已经很难得到我现在的位置。而在上述意义上开放 文件并不在任何地方。

任何暗示都会让我真的很开心。

编辑 - 下面是例子,如何转换我的Word文档:

Word.Application wordApp = new Word.Application(); 
object oFilename = filename + ".html"; 
wordApp.Documents.Open(ref oFilename, x,x,x,x,x,x); 
wordApp.ActiveDocument.ExportAsFixedFormat(filename+".pdf", 
Word.WdExportFormat.wdExportFormatPDF,x,x,x,x,x); 
wordApp.ActiveDocument.Close(); 
wordApp.Close(); 
wordApp = null; 

编辑 - 成功之路:

var key = registry.ClassesRoot.OpenSubKey(Path.GetExtension(filename)); 
string openType = key.GetValue("").ToString().ToLower(); 

if(openType.StartsWith("word.")) return DocumentType.Word; 
if(openType.StartsWith("excel.")) return DocumentType.Excel; 

return DocumentType.Unusable; 

它看起来不错。 Thx寻求帮助,开始进入周末的好方法。

回答

2

要做的最好的事情是使用注册表来找出哪些应用程序与扩展关联。如果你看看这个链接:

Script to associate an extension to a program

它显示了在注册表中,你需要寻找。

+0

你可能误解了我打开Word的意思。我通过Word打开文档。应用程序wordApp = new Word.Application();然后wordApp.Open(xxxxx); – TiGoRn 2011-01-07 13:14:01

相关问题