2012-11-23 53 views
0

在我的Asp.net Web应用程序中,我必须将一个docx文件以编程方式转换为pdf文件。我使用了Microsoft互操作性文件包并使用saveAs()方法。如何以编程方式将Word 2007文档保存为asp.net中的PDF文档?

这是我的C#代码...

var TheDocument = wdApp.Documents.Open("sample.docx"); //control stopped here... 

TheDocument.ExportAsFixedFormat("sample.pdf", Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF, 
       OptimizeFor: Microsoft.Office.Interop.Word.WdExportOptimizeFor.wdExportOptimizeForOnScreen, 
       BitmapMissingFonts: true, DocStructureTags: false); 

((Microsoft.Office.Interop.Word._Document)TheDocument).Close(); 

但在执行这条线时,var TheDocument = wdApp.Documents.Open("sample.docx");控制停在这条线上,没有进一步的response.Browser符号看起来像加载,加载...

我不知道什么是这里的问题...

请指引我走出这个问题...

+0

是在系统上安装PDF扩展办公室吗?没有这个词就不会拯救它。 –

+0

@MaximZabolotskikh:是的,当我手动打开使用WORD 2007的文件时,有一个选项叫做“保存为”。因此,我可以选择pdf。然后将文档成功保存为PDF文件 – Saravanan

+0

这是一个可怕的想法使用ASP.NET的Office Interop或其他服务器技术。这些API被编写用于桌面应用程序,用于自动化Office(一套桌面应用程序)。服务器应用程序在许多方面有所不同,因此在其中使用Office Interop是非常非常糟糕的主意。它也不受Microsoft的支持,并可能违反您的Office许可证。请参阅[服务器端自动化Office的注意事项](http://support.microsoft.com/kb/257757) –

回答

0

检查此链接 - >convert doc to pdf in c#

它使用Microsoft.Office.Interop。

private Microsoft.Office.Interop.Word.ApplicationClass MSdoc;  

     //Use for the parameter whose type are not known or say Missing 
     object Unknown = Type.Missing; 

    private void word2PDF(object Source, object Target) 
     { //Creating the instance of Word Application   
     if (MSdoc == null)MSdoc = new Microsoft.Office.Interop.Word.ApplicationClass(); 

      try 
      { 
       MSdoc.Visible = false;    
       MSdoc.Documents.Open(ref Source, ref Unknown, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown, ref Unknown, 
        ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown); 
       MSdoc.Application.Visible = false; 
       MSdoc.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize;    

       object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF; 

       MSdoc.ActiveDocument.SaveAs(ref Target, ref format, 
         ref Unknown, ref Unknown, ref Unknown, 
         ref Unknown, ref Unknown, ref Unknown, 
         ref Unknown, ref Unknown, ref Unknown, 
         ref Unknown, ref Unknown, ref Unknown, 
         ref Unknown, ref Unknown); 
      } 
      catch (Exception e) 
      { 
       MessageBox.Show(e.Message); 
      } 
      finally 
      { 
       if (MSdoc != null) 
       { 
        MSdoc.Documents.Close(ref Unknown, ref Unknown, ref Unknown); 
        //WordDoc.Application.Quit(ref Unknown, ref Unknown, ref Unknown); 
       }    
       // for closing the application 
       WordDoc.Quit(ref Unknown, ref Unknown, ref Unknown); 
      } 
     } 
+0

谢谢...如果我的web应用程序未在IIS(5.1)中配置。因此,我只是运行应用程序使用vs-2010部署服务器,然后它运行完美。假设如果我在IIS(5.1)配置我的应用程序,那么它不工作...它继续加载...加载...没有错误...没有输出... – Saravanan

+0

我需要更改IIS上的任何设置5.1? – Saravanan

+0

选中此项:先决条件: 带有(主要互操作性程序集将默认安装)的MS word2007。 插件SaveAsPDFandXPS(免费从MS网站) 请确保您参考了Word.12。它会自动将Microsoft.Office.interop.word添加到您的参考。按照这些为其他办公应用程序。 (注意:你应该已经安装了VS 2005 Tools for Office 2nd Ed。Runtime(VSTO 2005 SE)(x86) –

0
Object missing = Type.Missing; 

Globals.ThisAddIn.Application.ActiveDocument.ExportAsFixedFormat(@"D:\MyPDF.pdf", 

Microsoft.Office.Interop.Word.WdExportFormat.wdExportFormatPDF, false, 

Microsoft.Office.Interop.Word.WdExportOptimizeFor.wdExportOptimizeForPrint, 

Microsoft.Office.Interop.Word.WdExportRange.wdExportAllDocument, 1, 1, 

Microsoft.Office.Interop.Word.WdExportItem.wdExportDocumentWithMarkup, true, true, 

Microsoft.Office.Interop.Word.WdExportCreateBookmarks.wdExportCreateNoBookmarks, 

true, true, false,ref missing); 
相关问题