2012-12-11 24 views
0

我使用C#,asp.net作爲工具。如何在打開文檔的同時打開任何應用程序(如word,pdf閱讀器)的打印對話框,以編程方式

我使用以下代碼在客戶端傳輸和打開文件,並希望在打開客戶端文檔的同時打開任何應用程序(如word,pdf閱讀器)的內置打印對話框。

   if (lfileFormat.ToUpper() == "Excel") 
       { 
        Response.ContentType = "application/vnd.ms-excel"; 
       } 
       else if (lfileFormat.ToUpper() == "PDF") 
       { 
        Response.ContentType = "application/pdf"; 
       } 
       else if (lfileFormat.ToUpper() == "HTML") 
       { 
        Response.ContentType = "text/HTML"; 
       } 


       Response.AddHeader("Content-Disposition", string.Format("attachment; filename = {0}", fi.Name)); 
       Response.AddHeader("Content-Length", fi.Length.ToString()); 
       Response.TransmitFile(fi.FullName); 
       Response.End(); 
+0

爲什麼比較了'TOUPPER()'價值的東西寫在混合大小寫? – Vogel612

回答

0

沒有直接的方法來做到這一點。您正在生成文件服務器端,並將其發送到客戶端。你無法控制客戶計算機上正在發生的事情(正如HollyStyles提到的,想象一下這個混亂)。

你最好的賭注是包括了Excel/Word文件,裏面一個宏,這樣它會顯示在文件打開打印對話框。最簡單的方法就是創建一個包含功能性的模板,並使用該模板來生成文檔,而不用搞混VBE(Visual Basic Extensibility,它允許動態操作Office文檔的代碼模塊)。

對於爲例,在Excel worbook開放的事件處理程序,你可以有:

Private Sub Workbook_Open() 

    Application.Dialogs(xlDialogPrint).Show 

End Sub 

但具有其他含義(請確保您的文檔簽名,或該用戶允許宏的執行,.. )。更不用說每次使用該文件時都會顯示「打印」對話框,這可能會......刺激。

Additionnally,這不會解決非Office文件的問題。您可以使用Window.Print in JS來處理這些情況。

但所有的一切,這將是混亂:)

0

你可以做類似下面

String FileName = filename; 
String FilePath = filepath; 
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response; 
response.ClearContent(); 
response.Clear(); 
response.ContentType = "text/plain"; 
response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";"); 
response.TransmitFile(FilePath + FileName); 
response.Flush(); 
response.End(); 

如果你想下載的.pdf文件例如,一旦下載,你可以通過後面的代碼打開然後文件..但你將不得不編寫單獨的代碼..

0

你不能這樣做,從ASP.NET或任何Web的平臺,瀏覽器沙盒,想象中的混亂,如果你是大聲到用戶PC上執行命令!

你將不得不創建最終用戶必須安裝自己的客戶端應用程序。

相關問題