C# Internet Explorer如何准备打印预览窗口

C# Internet Explorer如何准备打印预览窗口,c#,css,internet-explorer,firefox,browser,C#,Css,Internet Explorer,Firefox,Browser,我想知道Internet Explorer、Mozilla Firefox或任何其他浏览器如何生成加载到浏览器中的网页的打印预览窗口 预览图像将有各种变化,如横幅和广告被删除,将有白色背景和黑色文本等 我们希望使用C#WebBrowser控件实现类似的打印预览窗口,我不希望使用默认的浏览器打印预览功能,如ExecWB命令或任何其他命令 请给我们解释一下 谢谢 Ramanand Bhat.据我所知,在打印预览期间,浏览器不会删除横幅、广告等。CSS控制媒体打印时的外观。要打印屏幕,需要在javas

我想知道Internet Explorer、Mozilla Firefox或任何其他浏览器如何生成加载到浏览器中的网页的打印预览窗口

预览图像将有各种变化,如横幅和广告被删除,将有白色背景和黑色文本等

我们希望使用C#WebBrowser控件实现类似的打印预览窗口,我不希望使用默认的浏览器打印预览功能,如ExecWB命令或任何其他命令

请给我们解释一下

谢谢


Ramanand Bhat.

据我所知,在打印预览期间,浏览器不会删除横幅、广告等。CSS控制媒体打印时的外观。要打印屏幕,需要在javascript中设置对
window.print()的调用

<a href="javascript:window.print();">Print screen</a>


然后,它将使用您在页面中指定为“打印”的css将页面呈现为预览

您可以尝试通过访问和修改HTMLDocument链接元素来更改样式

HtmlDocument document = WebBrowser1.Document;

foreach (HtmlElement element in document.GetElementsByTagName("LINK"))
{
    string cssMedia = element.GetAttribute("Media");


    if (cssMedia == "print")
        element.SetAttribute("Media", "screen"); //sets print styles to display normally
    else
        element.SetAttribute("Media", "hidden"); //hides normal styles
}
这将更改您的打印样式以显示在屏幕视图中(即作为普通样式表而不必使用打印预览窗口),并更改您的屏幕样式以不显示(因为它们不再具有媒体类型的屏幕)


这是示例代码,因此没有任何错误检查。它可能也有一些语法错误,但这应该是实现您的目标的一个开始。

谢谢Alan,但是如何在webbrowser中为加载的网页调用“打印”媒体。您的意思是“如何强制webbrowser控件使用
@media Print
CSS而不是默认的
@media screen
”?是的,我们确实希望在web浏览器控件中呈现加载网页的打印媒体。任何可能的方法都可以做到这一点。谢谢,但是这个javascript将调用浏览器默认的打印预览和打印模块。我们想手动构建网页打印预览窗口,而不是使用浏览器打印窗口。谢谢Nick,我们接受您的回答作为我们查询的解决方案。我们发现,这个解决方案将是一个良好的启动起点。但我们发现,并非所有网站页面都具有“Media=Print或screen”标记属性,因此并非所有网页(Google、bing等)都以打印预览模式呈现。那么,我们如何支持不包含打印媒体标签的网页生成打印预览位图图像呢。谢谢。IE在“工具>互联网选项>高级>打印”下有一个高级设置,允许您“打印背景颜色和图像”。如果选中此选项,打印版本将显示屏幕上显示的所有内容。此设置的默认值为未选中,这是我认为您所追求的行为。我将解析CSS并删除所有背景颜色和背景图像引用(当然是在样式表中和嵌入html中)。