打印页面而不显示它?

时间:2010-07-27 16:19:45

标签: c# asp.net html printing

我有一个页面,用户可以从中打印。但是,要打印的页面不是用户正在查看的页面,而是我想在后台生成的新页面,并且(可能)仅显示打印对话框。

只是为了说清楚:

  1. 用户点击“ View.aspx ”并点击我的打印按钮(不是浏览器的按钮)。
  2. 打印按钮加载“ Printable.aspx ”的内容,并在用户仍在“ View.aspx <时显示该对话框的打印对话框/强>”。
  3. 仅供参考,我要避免的是在新窗口中打开“ Printable.aspx ”,然后显示其打印对话框。

    提前致谢。

4 个答案:

答案 0 :(得分:12)

在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">

答案 1 :(得分:1)

点击打印按钮后,将 Printable.aspx 添加到 view.aspx的隐藏面板中。 通过在 view.aspx &amp;的onload事件中添加javascript来做出回应使用 window.print()

打印隐藏的面板

答案 2 :(得分:0)

我不认为你想要的是可能的。但我可能是错的。虽然更好的方法是使用不同的css样式表。

答案 3 :(得分:0)

您可以将页面加载到隐藏的IFrame元素中,然后使用javascript执行该页面的打印功能。

但是,像@carter建议的那样,CSS是更好的方法。为什么在重新设置当前内容时,为什么要多次加载重复内容?