管理杂谈OA答疑ERP答疑教程搜索

【C#】利用WebBrowser、CSS、JS控制开发HTML网页文件的打印版


在项目中,有一个需求时是需要打印产品页面。但是打印出来的版本和网页上的版本不太一致,有些图片不需要,网页上以tab选项卡显示的内容,都需要在打印页面中看到..等等。

CSS针对这种需求,引入了一个@media 规则,@media规则允许你根据不同的media指定不同的css style.  @media print 指的就是print version的css样式:

@media screen   //screen的样式

{

    p.bodyCss {}

}

 

@media print //print的样式

{

   p.bodyCss {font-family: serif;}

}

 

@media screen, print

{

   p.bodyCss {font-size: 15pt}

}

在上面的例子中,对于p的bodyCss样式, 页面上(screen样式)呈现的和打印出来的(print样式)是不一样的字体,但是字体大小是一样的。

你也可以专门为打印print样式,引用一个专门的外部样式:

link rel="stylesheet" type="text/css" media="print" href="css/printpage.css"

也可以使用在页面中直接包含css的形式:

<style type="text/css" media="print">

       .noprint {display = none}

</style>


网页上打印时不需要显示的部分加上 class="noprint"

有时,需要在打印的页面上,显示网页上折叠隐藏的内容,将内容完整的展示在纸上: 

<style type="text/css" media="print">

        .print-show {display = block;}

 </style>

设置好需要打印内容的css后,我们一般会在页面上增加一个button,button上面的内容为"Print this Page". 当点击这个button时,会打印这个页面。这个是通过javascript来实现的:

<script type="text/javascript">

   function printpage()

   {

       window.print();

   }

 </script>

有的时候,一个网页内容非常丰富, 有整个网站共享的layout,包括该网页中的头部,底部。而我们只需要打印这个网页中间的内容,这种时候我们可以通过Javascript来实现。

假定网页中间的内容,我们用一个div来包裹,这个div的Id为printDiv, 那么写一个Javascript函数如下:

<script type="text/javascript">

function printversion()

{

   document.body.innerHTML = document.getElementById("printDiv").innerHTML;

   window.print();

   history.go(0);

}

</script>


 在用c#实现打印功能时,我们可以将内容先转化为网页形式或者吧模板写成固定的html格式,然后进行内容填充。

在打印过程中,我们可以用到的函数:

//转到某个网址 webBrowser.Navigate(""); //直接打印 webBrowser.Print(); //预览 webBrowser.ShowPrintPreviewDialog(); //打印 webBrowser.ShowPrintDialog();


更多精彩文章浏览...
点击右上角图标分享到朋友圈
官方网站:http://www.clicksun.cn
咨询热线:400-186-1886
服务邮箱:service@clicksun.cn