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

时间:2015-12-14 15:19:53

标签: c# asp.net asp.net-mvc

我正在开展一个项目,我必须打印一些我生成的报告。我有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>

2 个答案:

答案 0 :(得分:5)

您控制从浏览器打印或不打印内容的方式是使用@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”类。您可以在标记中或在生成页面时执行此操作。

答案 1 :(得分:0)

如果您的报告是以HTML格式呈现的,并且您希望从后端打印它们而用户没有看到任何内容(即没有打印对话框或类似内容),那么过去使用MeadCo ScriptX组件我已经取得了很大的成功为了这个目的。

http://scriptx.meadroid.com/

我以前能够使用它直接打印到打印机。我当时觉得有用的是它会从服务器直接打印到打印机的html页面(例如,您可以使用Server.Execute检索HTML,然后将其传递给组件,以及打印机路由信息)。 p>

这是一个商业组件,因此已经支付了许可问题,但在打印HTML页面方面确实符合我的要求,用户根本没有任何输入(即没有打印对话框弹出窗口等)。可能有很多竞争对手的产品,我不熟悉它们,不久前就用过了。

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