How Do I Print From Internet Explorer Without Raising a Confirmation Dialog?


NOTE: the concepts presented in this article are now considered obsolete possibly because better alternatives are available.

Update!! 11-29-2005
There seems to be a problem with the code presented in this article, so don't rely on it work anymore. When you click the print button you get an error and nothing gets printed.

So far, I haven't been able to isolate the problem or come up with a solution. It looks like this problem is caused by some security mechanism in Windows XP Service Pack 2. I haven't tested various versions of IE and Windows XP yet, but I am sure it doesn't run on IE 6, SP2 with Windows XP SP2 (well, it doesn't run on *my* IE 6, SP2 with Windows XP SP2 ;-) )


In some scenario's, it could be useful if you were able to print a page from within the browser, without the Print dialog popping up, and without the user confirming the print operation.
It is possible to have your page printed automatically, without the dialog. It's a bit tricky, it works on IE only and you may need to lower your security settings, but it does work. Copy and paste the following code to a new HTML document, run it in your browser and hit the print button. The page gets printed on the default printer without a confirmation dialog.
<html>
<head>
  <script language="JavaScript" type="text/javascript">
    DA = (document.all) ? 1 : 0
    function HandleError()
    {
      alert('\nNothing was printed. \n\nIf you do want to print ' +
          'this page, then\n click on the printer icon in the ' +
          'toolbar above.')
      return true;
    }
  </script>
</head>
<body>
  <form>
    <input type="button" value="Print Page" onClick="window.print();">
  </form>
  <script language="VBScript">
    Sub window_onunload()
      On Error Resume Next
      Set WB = nothing
      On Error Goto 0
    End Sub
    Sub Print()
      OLECMDID_PRINT = 6
      OLECMDEXECOPT_DONTPROMPTUSER = 2
      OLECMDEXECOPT_PROMPTUSER = 1

      On Error Resume Next

      If DA Then
        call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1)
      Else
        call WB.IOleCommandTarget.Exec _
            (OLECMDID_PRINT ,OLECMDEXECOPT_DONTPROMPTUSER,"","","")
      End If

      If Err.Number <> 0 Then
        If DA Then
          Alert("Nothing Printed :" & err.number & " : " & err.description)
        Else
          HandleError()
        End if
      End If
      On Error Goto 0
    End Sub
    If DA Then
      wbvers="8856F961-340A-11D0-A96B-00C04FD705A2"
    Else
      wbvers="EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B"
    End If
    document.write("<object ID=""WB"" width=0 height=0 classid="" clsid:")
    document.write(wbvers & """> </object>")
  </script>
</body>
</html>

Where to Next?

Wonder where to go next? You can post a comment on this article.

Doc ID 243
Full URL https://imar.spaanjaars.com/243/how-do-i-print-from-internet-explorer-without-raising-a-confirmation-dialog
Short cut https://imar.spaanjaars.com/243/
Written by Imar Spaanjaars
Date Posted 02/05/2004 21:05
Date Last Updated 11/02/2020 16:29
Date Last Reviewed 12/06/2006 15:39
Listened to when writing Big Night Out by Fun Lovin' Criminals (Track 12 from the album: 100% Colombian)

Comments

Talk Back! Comment on Imar.Spaanjaars.Com

I am interested in what you have to say about this article. Feel free to post any comments, remarks or questions you may have about this article. The Talk Back feature is not meant for technical questions that are not directly related to this article. So, a post like "Hey, can you tell me how I can upload files to a MySQL database in PHP?" is likely to be removed. Also spam and unrealistic job offers will be deleted immediately.

When you post a comment, you have to provide your name and the comment. Your e-mail address is optional and you only need to provide it if you want me to contact you. It will not be displayed along with your comment. I got sick and tired of the comment spam I was receiving, so I have protected this page with a simple calculation exercise. This means that if you want to leave a comment, you'll need to complete the calculation before you hit the Post Comment button.

If you want to object to a comment made by another visitor, be sure to contact me and I'll look into it ASAP. Don't forget to mention the page link, or the Doc ID of the document.

(Plain text only; no HTML or code that looks like HTML or XML. In other words, don't use < and >. Also no links allowed.