2009-11-02 61 views
1

我想知道Internet Explorer,Mozilla Firefox或任何其他瀏覽器如何生成加載到瀏覽器中的網頁的打印預覽窗口。Internet Explorer如何準備「打印預覽」窗口

預覽圖像將被刪除的各種變化,例如橫幅和進階,將有白色背景和黑色文字等

我們想用C#WebBrowser控件實現類似的打印預覽窗口,我不想要使用默認瀏覽器打印預覽功能,如ExecWB命令或任何其他。

請給我們一些關於這一點。

謝謝,

Ramanand Bhat。

+1

你的意思是「如何強制WebBrowser控件使用'@media print' CSS而不是默認的'@media screen'渲染」? – Piskvor 2009-11-02 09:47:46

+0

是Piskvor, 我們完全想要在Web瀏覽器控件中呈現加載的網頁的打印介質。 任何可能的方式來做到這一點.. – 2009-11-02 09:54:47

回答

2

您可以嘗試通過訪問和修改HTMLDocument的LINK元素改變風格。

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 
} 

這將改變你的打印樣式屏幕視圖中顯示(即作爲一個正常的樣式表,而不必使用打印預覽窗口),您的屏幕樣式不會顯示(因爲它們不有媒體類型的屏幕了)

這是示例代碼,因此沒有任何錯誤檢查。它也可能有一些語法錯誤,但它應該是實現您的目標的開始。

+0

感謝Nick,我們接受您的答案作爲我們查詢的解決方案。 我們發現這個解決方案將成爲啓動的良好起點。 但是,當我們發現並非所有網站頁面都具有'Media = Print或screen'標籤屬性,因此並非所有網頁(Google,bing等)都以打印預覽模式呈現。 那麼我們如何支持不包含打印介質標籤的網頁來生成打印預覽位圖圖像。 謝謝。 – 2009-11-03 05:32:22

+0

IE在「工具> Internet選項>高級>打印」下有一個高級設置,可讓您「打印背景顏色和圖像」。如果選中此項,打印版本將顯示屏幕上顯示的所有內容。此設置的默認值未經檢查,這是我相信您之後的行爲。我會解析CSS並刪除所有背景顏色和背景圖像引用(在樣式表中並嵌入到html中以確保)。 – NickGPS 2009-11-03 14:15:40

0

據我所知,在打印預覽期間,瀏覽器刪除了橫幅,廣告等等而非。當媒體爲print時,CSS支配外觀。

+0

謝謝艾倫, 但如何調用「打印」媒體爲webbrowser加載的網頁。 – 2009-11-02 09:34:52

1

要打印一個屏幕,您需要在javascript中設置對window.print()的呼叫。

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

然後,它會使用任何CSS你在頁面指定爲「打印」來渲染頁面的預覽

+0

謝謝,但是這個javascript會調用瀏覽器的默認打印預覽​​和打印模塊。 我們想手動構建網頁打印預覽窗口,而不是使用瀏覽器打印窗口。 – 2009-11-02 10:11:00