可靠地呈现PDF,当加载到网页上时打开打印对话框

时间:2012-04-23 16:47:08

标签: javascript internet-explorer pdf

我有一个网页(SSL),其中包含一个几乎不可见的iframe,其源是从Java servlet流式传输的PDF。几乎看不见的iframe的目的是渲染PDF,在页面加载时立即打开打印对话框。

这个过程是以零星的方式进行的。通常,加载页面时,PDF打印对话框会正确显示。但有时,页面加载时永远不会呈现PDF打印对话框。我知道这不是Java servlet中的问题,因为我可以从日志中验证PDF是否正确地流式传输到调用页面。我需要找到一种方法使它99.9999 .......%可靠,如果可能的话,PDF打印对话框总是在页面加载时打开。所以,我正在寻找有关如何确保这种情况发生的任何提示。

这需要适用于Internet Explorer(特别是版本8)。

这是打开包含PDF iframe的页面的JavaScript:

function openPrintCheckWindow(){
    pc=window.open("/print_check.jsp", "pc", "toolbar=no,scrollbars=no,resizable=no");
    pc.resizeTo(1000,700);
    pc.moveTo(80,80);
}

以下是包含PDF iframe的页面的来源:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
    <TITLE></TITLE>

    <style> 
    #createpdf {
        position:absolute;
        top:0; 
        right:0; 
    }
    .micr {
        font-family: "MICR Encoding", sans-serif;
        font-size: 0.2in;
    }
    </style>

    <script type="text/javascript"> 
    function doAlert(msg){
    if(msg.length>0){
        alert(msg);
    }
    }

    //doesn't block the load event
    function createIframe(){
        var i = document.createElement("iframe");
        i.src = "/PrintCheckServlet";
        i.width = "2px";
        i.height = "2px";
        document.getElementById("createpdf").appendChild(i);
    };

    // Check for browser support of event handling capability
    if (window.addEventListener)
        window.addEventListener("load", createIframe, false);
    else if (window.attachEvent)
        window.attachEvent("onload", createIframe);
    else 
        window.onload = createIframe;
    </script>

</HEAD>

<BODY BGCOLOR="#DFD9D0" TEXT="#000066" onLoad="doAlert('')">
    <FORM METHOD="POST" TARGET="main_window" ACTION="ControllerServlet">            
    <P ALIGN="LEFT">
        <INPUT TYPE="BUTTON" NAME="CLOSE" VALUE="Close" 
         onClick="this.form.submit();window.close();window.opener.focus();window=null;">
        <br />
        <H3 id="print_message">A print dialog box will show momentarily</H3>
    </P>
    <div id="createpdf"></div>
    </FORM>
</BODY>
</HTML>

1 个答案:

答案 0 :(得分:-1)

您是否可以假设查看您文件的人使用的是Acrobat Reader或其他一些“启用javascript”的PDF阅读器?

如果是这种情况,您可以修改文件并generate a PDF that automatically prints instead.