2011-04-06 59 views
2

下面是我的ASP.Net代碼。當用戶點擊window.print()窗口中的「Print」按鈕時,系統會調用onPrintPage檢查打印頁邊距。ASP.Net打印

如何做到這一點?請幫忙。

謝謝。

Page.ClientScript.RegisterStartupScript(this.GetType(), "OnPrintPage", "window.print();", true); 

private void OnPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
{ 
    System.Drawing.Printing.PageSettings oPagesettup1 = new System.Drawing.Printing.PageSettings(); 
    PrintDocument PrintDoc = new PrintDocument(); 

    if (PrintDoc.DefaultPageSettings.Margins.Right < e.PageSettings.Margins.Right || PrintDoc.DefaultPageSettings.Margins.Bottom < e.PageSettings.Margins.Bottom) 
    { 
     string script = "<script language='javascript'>alert('Please set your Printer Orientation option to Landscape and your Page (Under File -> Page Setup) right margin to minimum value.')</script>"; 
     Page.ClientScript.RegisterClientScriptBlock(GetType(), "key", script); 
    } 
} 

回答

1

你似乎在這裏混淆服務器端&客戶端腳本。

RegisterStartupScript中的第二個字符串是允許您檢查此腳本是否已註冊的鍵。

OnPrintPage上的代碼在Web服務器上運行,所以只會檢查服務器的打印設置,而不是客戶端。它也永遠不會像你寫的那樣被調用。

DOM對打印功能的支持很少,例如檢查邊距。你需要使用Javascript來操縱它&如果你需要做任何你不能做的事情,就使用AJAX回調函數。對於clientscriptmanager

參考頁: http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager%28VS.80%29.aspx

+0

+1。我唯一要補充的是,如果打印設置很重要,那麼通常最好使用必要的設置生成PDF並將其發送給客戶端。 – NotMe 2011-04-07 16:53:15

0

當用戶決定從瀏覽器打印網頁時,瀏覽器是控制印刷工藝之一。

您無法看到或設置邊距值。但是,您可以使用僅適用於打印的CSS樣式,然後您可以使用該樣式以不同的方式格式化文檔。

0

您似乎在這裏混淆了服務器端的客戶端腳本&。

RegisterStartupScript中的第二個字符串是允許您檢查此腳本是否已註冊的鍵。

OnPrintPage上的代碼在Web服務器上運行,所以只會檢查服務器的打印設置,而不是客戶端。它也永遠不會像你寫的那樣被調用。

DOM對打印功能的支持很少,例如檢查邊距。你需要使用Javascript來操縱它&如果你需要做任何你不能做的事情,就使用AJAX回調函數。

clientscriptmanager的參考頁面:http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager%28VS.80%29.aspx