打印iframe内容jquery在远程服务器中不起作用

时间:2016-04-24 07:15:53

标签: jquery html

我正在尝试在html报告页面中执行打印操作。我只想将html页面的某些部分作为PDF打印在'导出PDF'按钮单击。 所以我将所需内容放到新的iframe中,然后在按钮点击时打印iframe。它的工作完美。

这是我的代码



$('#btnprint').on('click',function(){
      $('#print-iframe').contents().find('html').html($('#divprintheader').html() + $('#divreport').html());

    $("#print-iframe").get(0).contentWindow.print();
});

<table id="tblentrancereport" class="reporttable" style="width: 100%">
                                <thead>
                                <tr>
                                    <th>Name</th>
                                    <th>Count</th>
                                    <th>Amount</th>
                                </tr>

                                </thead>
                                <tbody></tbody>
                            </table>
 <div id="divprintheader" style="display: none">

                    From : <span id="spnfromdate"></span> &nbsp;&nbsp;&nbsp;&nbsp; To : <span id="spntodate"></span>
                    <div id="divprintfilter">
                        Filtered By : <span id="spnfilteredby"></span>
                        <div id="divcontentbelongto">

                        </div>
                    </div>

                </div>

<button id="btnprint">Export PDF</button>
                <iframe name="print_frame" id="print-iframe" width="0" height="0" frameborder="0" src="about:blank"></iframe>
&#13;
&#13;
&#13;

不幸的是,当我将代码移动到我的生产服务器(Windows Server 2012)时,我没有在iframe中获取内容(打印窗口即将到来)。虽然iframe填充了新的动态形成内容(我可以在检查页面元素时看到)但它没有显示在打印中。任何人都可以弄清楚我错在哪里。

以下是截图

Image 1我在本地主机试用时的打印

Image 2我在服务器中尝试时的打印

更新 奇怪的是,当我检查元素并在开发人员工具中展开内容,然后点击“导出PDF”时。按钮,它的工作..:O

无法追踪错误:(

1 个答案:

答案 0 :(得分:0)

&#13;
&#13;
<head>
<script type="text/javascript">
function ClickHereToPrint(){
    try{ 
        var oIframe = document.getElementById('ifrmPrint');
        var oContent = document.getElementById('divToPrint').innerHTML;
        var oDoc = (oIframe.contentWindow || oIframe.contentDocument);
        if (oDoc.document) oDoc = oDoc.document;
		oDoc.write("<html><head><title>title</title>");
		oDoc.write("</head><body onload='this.focus(); this.print();'>");
		oDoc.write(oContent + "</body></html>");	    
		oDoc.close(); 	    
    }
    catch(e){
	    self.print();
    }
}
</script>
</head>


<body>

<a onclick="ClickHereToPrint();">Print</a>

	<iframe id='ifrmPrint' src='#' style="width:0px; height:0px;"></iframe>
	<div id="divToPrint">
		content
	</div>
</body>
&#13;
&#13;
&#13;

虽然我无法弄清楚这个问题,但这个解决方案非常完美。谢谢!!