用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>

用C#打印一些页面;我不想在浏览器上显示

控制从浏览器打印或不打印内容的方法是使用@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页面时完全没有用户输入(即没有打印对话框弹出窗口等),这确实符合我的要求。很可能有竞争对手的产品,虽然我不熟悉,但不久前就使用过这种产品。

(我不为供应商工作,也不与供应商有任何关系!)