asp.net - 在 ASP.NET 中打印的最佳方式

标签 asp.net printing

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

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

干杯

最佳答案

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

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

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

这将允许您在大多数浏览器中打印时隐藏 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 具有相同的缺点,但更难以正确执行。

关于asp.net - 在 ASP.NET 中打印的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/262143/

相关文章:

javascript - 如何找到不会破坏给定文本的最大字体大小?

python - 在 Python 2.7 中使用多个占位符格式化程序打印字符串

javascript - 使用 javascript 打印 PDF

javascript - 如何从 Javascript 中的行获取包含的 WebDataGrid (Infragistics NetAdvantage) 控件?

c# - 对于多个Azure表存储帐户实现,如何实现每秒超过20,000+请求的插入和查询?

asp.net - 从代码隐藏扩展 ASP.Net TreeView 节点

c# - 使用 javascript 启用/禁用用户控制

Python3 在同一行打印 - 7 段设备格式的数字

c++ - 在 Xerces-C 中打印 XML 文档

asp.net - 在 ASP.NET 中使用什么好的临时目录?