我正在尝试在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> 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;
不幸的是,当我将代码移动到我的生产服务器(Windows Server 2012)时,我没有在iframe中获取内容(打印窗口即将到来)。虽然iframe填充了新的动态形成内容(我可以在检查页面元素时看到)但它没有显示在打印中。任何人都可以弄清楚我错在哪里。
以下是截图
我在本地主机试用时的打印
我在服务器中尝试时的打印
更新 奇怪的是,当我检查元素并在开发人员工具中展开内容,然后点击“导出PDF”时。按钮,它的工作..:O
无法追踪错误:(
答案 0 :(得分:0)
<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;
虽然我无法弄清楚这个问题,但这个解决方案非常完美。谢谢!!