2015-01-08 71 views
0

我正在開發一個ASP.NET Web窗體應用程序,其中我必須生成pdf並在客戶端打印它。我的朋友給出了這段代碼:在服務器端生成PDF並使用itextsharp.dll在客戶端打印它

 Response.ContentType = "application/pdf"; 
     Response.AddHeader("content-disposition", a); 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     StringWriter sw = new StringWriter(); 
     HtmlTextWriter hw = new HtmlTextWriter(sw); 
     n.RenderControl(hw); 
     deg.RenderControl(hw); 
     n.RenderControl(hw); 
     StringReader sr = new StringReader(sw.ToString()); 
     Document pdfDoc = new Document(PageSize.A4, 70f, 70f, 70f, 70f); 
     HTMLWorker htmlparser = new HTMLWorker(pdfDoc); 
     PdfWriter.GetInstance(pdfDoc, Response.OutputStream); 
     pdfDoc.Open(); 
     pdfDoc.NewPage(); 

     htmlparser.Parse(sr); 
     pdfDoc.Close(); 

     Response.Write(pdfDoc); 
     Response.End(); 

此代碼生成pdf,但在客戶端自動下載。我不希望它被下載,而是直接打印在客戶端。

我不知道如何繼續下去,但我認爲pdf不應該寫爲'響應',而應該寫成內存流並作爲Adobe Reader的後臺進程打印。怎麼做?請分享一些代碼。

+0

檢查出來:)它可能會幫助你:) http://stackoverflow.com/questions/8294057/how-to-open-pdf-file-in-a-new-tab- or-window-instead-of-downloading-it-using-asp – Jonny

+0

由於PDF查看器需要磁盤上的文件才能呈現,因此無法阻止文檔被下載。見http://stackoverflow.com/questions/22880444/disable-save-button-in-adobe-pdf-reader-and-hide-menu-bar-in-ie-window –

+1

你不能「強制打印」一個PDF文件下載到客戶端,因爲這被認爲是一個安全隱患:http://stackoverflow.com/questions/26751910/print-pdf-created-using-itextsharp –

回答

0

僅從ASP.NET就無法觸發它在客戶端自動打印。您可以做的最好的是彈出打印對話框。也許這對你的用例足夠了。請看這個答案:https://stackoverflow.com/a/9639241/94853

相關問題