用C#打印一些页面;我不想在浏览器上显示
本文关键字:我不想 浏览器 显示 打印 | 更新日期: 2023-09-27 18:26:47
我正在处理一个项目,在该项目中,我必须打印我生成的一些报告。我有5个报告,我可以在html页面上显示。
但是,我只想打印所有这些报告,而不向用户显示它们。我只想直接从后端打印它们。
var getAll5Reports; // has all the reports
例如,以下是作为报告的html代码:
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>ListResult</title>
</head>
<body>
<div>
</div>
</body>
</html>
控制从浏览器打印或不打印内容的方法是使用@media CSS选择器(http://www.w3schools.com/css/css3_mediaqueries.asp)
在你的CSS中,你会有这样的东西:
@media print
{
@page
{
size: 8.5in 11in; /* width height */
}
.noprint
{
display: none;
}
}
然后使用JQuery或任何类型的JavaScript支持,将noprint
类添加到不需要的报告中。(https://api.jquery.com/addclass/)
$('#myreport').addClass('noprint');
同时,你可以使用@media打印来改变一些东西的格式,使其在纸上看起来很好看。您可能想查看有关页面资源的更多信息(http://www.tutorialspoint.com/css/css_paged_media.htm)
当然,您不必通过JavaScript添加"noprint"类。您可以在标记中执行此操作,也可以在生成页面时执行此操作。
如果您的报告是用HTML呈现的,并且您希望在用户看不到任何东西的情况下从后端打印它们(即没有打印对话框或类似的东西),那么我在过去使用MeadCo ScriptX组件实现这一目的时取得了很好的成功。
http://scriptx.meadroid.com/
我过去可以用它直接打印到打印机上。我当时发现有用的是,它将从服务器直接向打印机打印html页面(例如,您可以使用server.Execute检索html,然后将其与打印机路由信息一起传递给组件)。
这是一个商业组件,因此已经为许可问题付费,但在打印HTML页面时完全没有用户输入(即没有打印对话框弹出窗口等),这确实符合我的要求。很可能有竞争对手的产品,虽然我不熟悉,但不久前就使用过这种产品。
(我不为供应商工作,也不与供应商有任何关系!)