2012-11-23 82 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); 
相關問題