我有一個頁面,用戶將可以從中打印。但是,打印的頁面不是用戶正在查看的頁面,而是我想在背景上生成的新頁面,並且可能僅顯示打印對話框。打印頁面而不顯示它?
只是爲了把事情說清楚:
- 用戶是在 「View.aspx」,並點擊我的打印按鈕(不是瀏覽器的一個)。
- 的打印按鈕載入「Printable.aspx」的內容和顯示的打印對話框,使其在用戶仍對「View.aspx」。
僅供參考,我想要避免是有「Printable.aspx」打開一個新的窗口,然後顯示其打印對話框。
在此先感謝。
我有一個頁面,用戶將可以從中打印。但是,打印的頁面不是用戶正在查看的頁面,而是我想在背景上生成的新頁面,並且可能僅顯示打印對話框。打印頁面而不顯示它?
只是爲了把事情說清楚:
僅供參考,我想要避免是有「Printable.aspx」打開一個新的窗口,然後顯示其打印對話框。
在此先感謝。
在CSS中使用MEDIA標籤的組合來顯示/隱藏要打印的對象。
<STYLE type="text/css">
@media print {
.PrintOnly {font-size: 10pt; line-height: 120%; background: white;}
}
@media screen {
.PrintOnly {display: none}
}
</STYLE>
你可以說,是媒體畫面風格Display:none
控制,因此用戶只有在打印時會看到他們。
<DIV class="PrintOnly">
This control will only show up during printing
</DIV>
您的任何控件都可以分類爲「PrintOnly」,因此您只能在打印時看到它們。您只需要爲「@media screen」定義一次css類,然後再爲「@media print」定義一次,以確保它們的行爲不同。
您還可以將整個樣式表用於打印。
<LINK rel="stylesheet" type"text/css" href="screen.css" media="screen">
<LINK rel="stylesheet" type"text/css" href="print.css" media="print">
我不認爲你想要什麼是可能的。但我可能是錯的。儘管更好的方法是使用不同的CSS樣式表。
您可以將頁面加載到隱藏的iframe元素中,然後使用javascript執行該頁面的打印功能。
但是,像@carter建議的那樣,CSS是更好的方法。爲什麼只要重新放置當前內容,爲什麼要重複加載重複內容?
如果要顯示的數據未加載到當前頁面上,並且可打印版本包含所有詳細信息,該怎麼辦:最好是通過類似ajax的方式加載剩餘的內容,或者只是將內容加載到隱藏的面板上? – rebelliard 2010-07-27 16:55:21
當點擊打印按鈕,將Printable.aspx添加到隱藏面板view.aspx。 通過將javascript添加到視圖的onload事件來響應。aspx &用打印隱藏面板window.print()
+1:這樣你甚至不需要第二個頁面,只需要第二個樣式表。同一頁面將通過打印機簡單渲染。 – David 2010-07-27 16:25:17
我很喜歡這個工作的例子。我有幾個控件和容器,我不想打印,但完全不知道如何有效地這樣做。謝謝。 – rebelliard 2010-07-27 16:33:07
@Rafael:我將示例更新爲非DIV特定。 – 2010-07-27 16:45:57