내 WebBrowser (Internet Explorer/IWebBrowser2) 컨트롤에 PrintDlg 구조체 (또는 이와 비슷한)를 전달하여 사용자에게 인쇄 할 수있는 방법이 있습니까? 인쇄 대화 상자가 나타나지 않고 PrintDlg에 지정된 프린터? 기본 프린터를 변경하지 않고이 작업을 수행하려고합니다. IWebBrowser2 :: ExecWB는 대화 상자 팝업 (OLECMDEXECOPT_DONTPROMPTUSER)을 건너 뛰는 방법을 제공하지만 프린터를 지정하는 방법은 제공하지 않습니다.기본 프린터를 변경하지 않고 IE 컨트롤을 사용하여 특정 프린터로 인쇄
기본 프린터를 변경하는 데는 두 가지 문제점이 있습니다. 1) 속도가 느립니다. 2) Internet Explorer가 현재 프린터를 캐시 된 상태로 유지합니다. 기본 프린터로 인쇄하면 해당 프린터가 캐시됩니다. 그런 다음 기본 프린터를 변경하고 다시 인쇄하도록 지시하면 IE는 새 기본 프린터를 사용하지 않고 캐시 된 현재 프린터를 사용합니다.
IE 5.5 이후에는 현재 프린터가 Windows 레지스트리에 저장되지 않습니다. IViewObject :: 그리기를 사용
:
는 다른 방법으로, 나는 자신을 인쇄 할 컨트롤을 IE 컨트롤에서 이미지를 얻고 자신을 인쇄보다는 얻기를위한 4 개 가지 아이디어를 연구. 이미지를 얻을 수는 있지만 IE 용으로 인쇄 할 때와 같은 방식으로 용지에 맞게 확대 할 수는 없습니다.RECTL rect;
rect.left = 0;
rect.top = 0;
rect.right = GetDeviceCaps (printerhdc, PHYSICALWIDTH);
rect.bottom = GetDeviceCaps (printerhdc, PHYSICALHEIGHT);StartDoc (printerhdc, & di);
StartPage (printerhdc);
HRESULT hr = pViewObj-> Draw (DVASPECT_DOCPRINT, 페이지, NULL, pTargetDevice, printerhdc, printerhdc, & rect, NULL, NULL, 0); // 너무 작게 인쇄합니다.
끝 페이지 (printerhdc);
EndDoc (printerhdc);IE 컨트롤에 WM_PAINT를 보냅니다. 나는이 글을 많이 읽지는 않았다. 글을 온라인으로 읽었을 때 이것이 잘 돌아 가지 않았기 때문이다.
AxDHTMLEDLib. 아주 약간의 문서, 그리고 이것이 단지를위한 것 같아요. 닷넷을위한 것 같아요. 닷넷
IHTMLElement를 사용하여, IHTMLElementRender -> SetDocumentPrinter, IHTMLElementRender -> DrawToDc. Microsoft는 IE9를 통해 지원을 철회했습니다.
당신이 가지고있는 아이디어는 크게 감사 할 것입니다! 미리 감사드립니다!
감사합니다. 나는 그것을 고려하지 않았다. 사용자가 반드시 PDF 드라이버를 설치할 필요는 없으므로 까다로울 수 있습니다. –
성능에 영향을 미칠 수도 있지만 다른 직접적인 방법으로는 나타나지 않을 경우 고려해 보겠습니다. –