特定的打印機有沒有辦法對我來說,一個PRINTDLG結構(或類似的東西)傳遞給我的web瀏覽器(IE瀏覽器/ IWebBrowser2的)控制,使得打印輸出到在PrintDlg中指定的打印機無需彈出打印對話框?我想在不更改默認打印機的情況下執行此操作。 IWebBrowser2 :: ExecWB提供了一種跳過對話框彈出(OLECMDEXECOPT_DONTPROMPTUSER)的方法,但不能指定打印機。打印使用IE控件不改變默認打印機
有兩個問題,只是改變了默認打印機:1)它的速度慢,2)Internet Explorer中保持其當前的打印機緩存。當您打印到默認打印機時,它將緩存該打印機。如果您然後更改默認打印機並讓其再次打印,IE將不會使用新的默認打印機,它將使用其緩存的當前打印機。
IE 5.5之後,當前打印機不存儲在Windows註冊表中。
作爲替代,我研究了從IE控制獲取圖像和打印自己而不是得到控制打印自己4個不同的想法:
使用IViewObject ::平局。我能得到的圖像,但不能把它擴展到紙的方法相同,它打印的IE什麼時候:
RECTL RECT;
rect.left = 0;
rect.top = 0;
rect.right = GetDeviceCaps(printerhdc,PHYSICALWIDTH);
rect.bottom = GetDeviceCaps(printerhdc,PHYSICALHEIGHT);StartDoc(printerhdc,&二);
StartPage(printerhdc);
HRESULT HR = pViewObj->繪製(DVASPECT_DOCPRINT,頁,NULL,pTargetDevice,printerhdc,printerhdc,& RECT,NULL,NULL,0); //打印太小
EndPage(printerhdc);
EndDoc(printerhdc);發送WM_PAINT到IE控制。我在這方面做得並不多,因爲我在網上讀到一篇文章,認爲這種方式並不好。
AxDHTMLEDLib。非常少的文檔,我認爲這只是爲了.net
使用IHTMLElement,IHTMLElementRender-> SetDocumentPrinter,IHTMLElementRender-> DrawToDc。微軟已經撤銷對IE9的支持
任何想法,你可能會瘋狂讚賞!提前致謝!
感謝您的想法!我沒有考慮過。這將是棘手的,因爲我們的用戶不一定會安裝PDF驅動程序。 – 2011-05-02 18:12:47
也會有性能問題,但如果沒有其他直接方法出現,我會考慮它。 – 2011-05-02 18:24:22