2011-05-19 160 views
0

目前,我打印WPF WebBrowser控件的內容,像這樣:打印背景顏色

mshtml.IHTMLDocument2 doc = WebBrowser.Document as mshtml.IHTMLDocument2; 
doc.execCommand("Print", true, null); 

我的HTML內容與背景顏色表。目前,當我打印內容時,背景顏色不會打印 - 一切都是純白的。有沒有辦法告訴WebBrowser打印背景顏色?

此外,這仍然會導致打印對話框彈出。有誰知道這個命令是用來打印對話框內容嗎?

非常感謝!

回答

1

假設您使用'SHDocVw.WebBrowser',則可以使用ExecWB命令。要在沒有對話框的情況下打印,請使用OLECMDEXECOPT_PROMPTUSER1)常數。您還可以傳遞IE打印模板(只是一個HTML文件),以更好地控制頁面的顯示方式。

這件事情是這樣的(從this MSDN問題採取)

browser.ExecWB(SHDocVw.OLECMDID.OLECMDID_PRINT, 
       SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, 
       "print_template.html", ref nullObject); 

至於大背景下,這似乎是的,你可以在指定的一個選項的打印模板的LayoutRect。所有打印對話框設置爲stored in the registry,但打印模板更好,因爲它不會更改系統範圍的設置。

+1

我不是。我正在使用「System.Windows.Controls.WebBrowser」,其中使用ExecWB將無法工作。經過大量搜索之後,似乎沒有_WPF_ WebBrowser對話框的打印幾乎不可能,這主要是因爲它基本上是WinForms WebBrowser的一個很差的包裝。 – JToland 2011-06-13 20:08:04

+0

@JToland,感謝您的更新,儘可能不幸。 [怎麼樣?]你能解決你的問題嗎? – 2011-06-13 21:16:32

+0

不是真的。我簡單地轉向使用WinForms WebBrowser控件,然後使用一點點的解決方法來將對話框放在「頂部」(因爲Windows Forms主機控件中的WinForms WebBrowser不遵守z順序)。實際上,我只是沒有拍攝當前屏幕的「圖像」,隱藏WebBrowser,將圖像放在它的位置上,然後將對話框放在該圖像上,使其看起來像剛纔在當前屏幕上打開的對話框。 – JToland 2011-06-14 12:50:58