2

내 WebBrowser (Internet Explorer/IWebBrowser2) 컨트롤에 PrintDlg 구조체 (또는 이와 비슷한)를 전달하여 사용자에게 인쇄 할 수있는 방법이 있습니까? 인쇄 대화 상자가 나타나지 않고 PrintDlg에 지정된 프린터? 기본 프린터를 변경하지 않고이 작업을 수행하려고합니다. IWebBrowser2 :: ExecWB는 대화 상자 팝업 (OLECMDEXECOPT_DONTPROMPTUSER)을 건너 뛰는 방법을 제공하지만 프린터를 지정하는 방법은 제공하지 않습니다.기본 프린터를 변경하지 않고 IE 컨트롤을 사용하여 특정 프린터로 인쇄

기본 프린터를 변경하는 데는 두 가지 문제점이 있습니다. 1) 속도가 느립니다. 2) Internet Explorer가 현재 프린터를 캐시 된 상태로 유지합니다. 기본 프린터로 인쇄하면 해당 프린터가 캐시됩니다. 그런 다음 기본 프린터를 변경하고 다시 인쇄하도록 지시하면 IE는 새 기본 프린터를 사용하지 않고 캐시 된 현재 프린터를 사용합니다.

IE 5.5 이후에는 현재 프린터가 Windows 레지스트리에 저장되지 않습니다. IViewObject :: 그리기를 사용

  1. :

    는 다른 방법으로, 나는 자신을 인쇄 할 컨트롤을 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);

  2. IE 컨트롤에 WM_PAINT를 보냅니다. 나는이 글을 많이 읽지는 ​​않았다. 글을 온라인으로 읽었을 때 이것이 잘 돌아 가지 않았기 때문이다.

  3. AxDHTMLEDLib. 아주 약간의 문서, 그리고 이것이 단지를위한 것 같아요. 닷넷을위한 것 같아요. 닷넷

  4. IHTMLElement를 사용하여, IHTMLElementRender -> SetDocumentPrinter, IHTMLElementRender -> DrawToDc. Microsoft는 IE9를 통해 지원을 철회했습니다.

당신이 가지고있는 아이디어는 크게 감사 할 것입니다! 미리 감사드립니다!

답변

1

기본 프린터를 사용할 수있는 유연성이 있다면 여기에 다른 아이디어가 있습니다. 그것은 약간 둥근 대략이다.

  • 기본 프린터를 (Amyuni PDF 또는 Adobe Distiller와 같은) 일부 PDF 작성기로 설정하십시오. 이 프린터 드라이버는 들어오는 작업을 PDF 파일로 변환하고 일부 디스크 위치에 파일을 저장하도록 설정할 수 있습니다.

  • PowerShell을 사용하여이 PDF 파일을 필요한 대상 프린터로 인쇄하십시오.PrintUI DLL 인터페이스를 사용하거나 "print"동사를 사용할 수 있습니다. http://www.eggheadcafe.com/software/aspnet/30441939/how-to-suppress-printdialog-when-using-print-verb.aspx이 예제를 제공합니다. 이렇게하면이 스크립트에서 모든 프린터 대기열 사용자 정의를 수행하고 기본 프린터를있는 그대로 그대로 둘 수 있습니다.

+0

감사합니다. 나는 그것을 고려하지 않았다. 사용자가 반드시 PDF 드라이버를 설치할 필요는 없으므로 까다로울 수 있습니다. –

+0

성능에 영향을 미칠 수도 있지만 다른 직접적인 방법으로는 나타나지 않을 경우 고려해 보겠습니다. –

관련 문제