2012-04-21 113 views
2

我需要提供一个功能到RTF/WORD文件转换为PDF并将其作为附件在电子邮件中,为了这个,我试过代码如下所示:转换RTF文件,PDF在C#

// Create a new Microsoft Word application object 
    Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); 

    // C# doesn't have optional arguments so we'll need a dummy value 
    object oMissing = System.Reflection.Missing.Value; 

    Document doc; 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     ConvertToPDF("test.doc"); 
    } 

    void ConvertToPDF(string sFileName) 
    { 
     // Create a new Microsoft Word application object 
     Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); 

     // C# doesn't have optional arguments so we'll need a dummy value 
     object oMissing = System.Reflection.Missing.Value; 

     Document doc; 
     try 
     { 
      word.Visible = false; 
      word.ScreenUpdating = false; 

      DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath(".") + "\\TempDoc"); 
      FileInfo[] wordFile = dirInfo.GetFiles(sFileName); 

      if (wordFile.Length > 0) 
      { 
       Object filename = (Object)wordFile[0].FullName; 

       // Use the dummy value as a placeholder for optional arguments 
       doc = word.Documents.Open2000(ref filename, ref oMissing, 
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
        ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); 
       doc.Activate(); 

       object outputFileName = wordFile[0].FullName.Replace(".doc", ""); 
       object fileFormat = WdSaveFormat.wdFormatPDF; 

       // Save document into PDF Formats 
       doc.SaveAs2000(ref outputFileName, ref fileFormat, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); 
      } 
     } 
     catch (Exception ex) 
     { 
      Response.Write(ex); 
     } 
     finally 
     { 
      // Close the Word document, but leave the Word application open. 
      // doc has to be cast to type _Document so that it will find the 
      // correct Close method. 
      doc = null; 

      // word has to be cast to type _Application so that it will find 
      // the correct Quit method. 
      word = null; 
     } 

    } 

但是它给出了 doc.SaveAs2000(ref outputFileName,ref fileFormat,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing,ref oMissing); 声明。

这可能有理由,我们有Microsoft Office 2007,在这里,没有任何选项可以保存为PDF文件。在Microsoft Office 2010中,它具有该选项,以便在服务器上安装Microsoft Office 2010时可以使用此代码。

+0

的可能的复制补丁[如何将RTF文件转换为pdf文件?](http://stackoverflow.com/questions/1853314/how-can-i-convert-an-rtf-file-to-a-pdf-file) – 2016-12-15 15:59:24

回答

1

是的,它在2010年的工作,我最近使用过它,但我相信这是对2007添加保存为PDF格式的功能太

也许尝试这个http://msdn.microsoft.com/en-us/library/bb412305(v=office.12).aspx

+0

I我正在试试这个方法。非常感谢你。 – 2012-04-21 12:15:43

+0

检索具有CLSID {000209FF-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因是出现以下错误:80070005 .......我在应用程序中遇到此错误,之前我做了一个演示将docx转换为pdf的项目。你有什么关于硫的知识.. ?? – 2012-04-24 09:54:32