【问题标题】:Best way to print in ASP.NET [closed]在 ASP.NET 中打印的最佳方式 [关闭]
【发布时间】:2008-11-04 15:23:20
【问题描述】:

在使用 XSLT 转换为所需模板后,我在内存中保存了一个 html 字符串。将其发送到客户端打印机的最佳机制是什么?

在以前的项目中,我无耻地作弊并创建了一个打印预览屏幕,它本质上是一个白色背景的 ASPX 页面,然后我使用Window.print() 打印。

干杯

【问题讨论】:

    标签: asp.net printing


    【解决方案1】:

    我认为“打印预览”根本不是作弊。由于您的字符串很可能在服务器上(即在 ASP.NET 代码隐藏中创建),因此您必须以某种方式将其输出到客户端并调用 window.print() 进行打印。网络服务器无法访问客户端的打印机。但是,您可以使用一些技巧来简化事情:

    - 在 CSS 中使用 @media 标签为您的页面提供可打印的样式。在许多情况下,您可以使用它来隐藏任何导航等,而不需要“打印预览”。我通常会在我的 .css 文件中添加如下内容:

    .showwhenprinting {position:absolute; display:none;}
    @media print
    {
      .hidewhenprinting {position:absolute; display:none;}
      .showwhenprinting {position:relative; display:block;}
    }
    

    这将让您在大多数浏览器中打印时隐藏块。例如:

    <div class="someclass hidewhenprinting">Navigation Menu</div>
    <div class="someclass showwhenprinting">Printed Page Title</div>
    

    这种方法的另一个好处是它允许用户像通常在浏览器中一样简单地单击“打印”。缺点是一些较旧的浏览器不支持它,并且在某些情况下它无法让您对布局进行足够的控制(例如,如果您需要页眉/页脚)。

    -如果以上内容没有为您提供所需的输出(例如,您不希望打印结果中的页面 URL 等),则另一种选择是使用打印机友好的格式,例如作为PDF。为此,请使用 Reporting Services 或类似工具生成 PDF。

    -我不会真正推荐的最后一个选项是向页面添加一个隐藏的 iframe,用“可打印”HTML 填充它,然后在其中调用 print()。这可能有效,但需要一些 javascript 才能完成,因此您需要注意使其跨浏览器。这将具有与选项 #1 相同的缺点,但更难做到正确。

    【讨论】:

    • 我将我的课程命名为“PrintOnly”和“ScreenOnly”(如果我也在考虑移动设备,则为“PrintNever”)。 “showwhenprinting”真是满口。
    • 您可以执行“ForPrint”和“ForScreen”,它们会更有意义,并且您可以保存一个角色! :)
    【解决方案2】:

    查看 CSS 媒体选择器。您可以使用它们在屏幕上创建您想要的外观的单个页面,并且当用户在浏览器中选择打印时也可以很好地打印。

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 2017-10-17
      • 1970-01-01
      • 2022-03-25
      相关资源
      最近更新 更多