我正在使用 AJAX 将表单数据发送到构建和发送 html 电子邮件的服务器 php 文件。我在服务器 php 文件中回显了这些数据的一部分。回显的 html 构建了一个我希望用户打印的表(在纸上)。我想打开默认浏览器打印对话框,以便用户可以打印他/她看不到的表格。我不在乎是否必须打开一个新选项卡以显示回显的内容。这甚至可能吗?
问问题
9510 次
3 回答
10
返回该 html 表单 ajax 请求,然后使用 javascript 打印
此代码未经测试
jQuery/Javascript
$.post("EmailFile.php", { "EmailParam": "EmailVal" },
function(data){
var HTML = data.EmailHTML;
var WindowObject = window.open("", "PrintWindow", "width=750,height=650,top=50,left=50,toolbars=no,scrollbars=yes,status=no,resizable=yes");
WindowObject.document.writeln(HTML);
WindowObject.document.close();
WindowObject.focus();
WindowObject.print();
WindowObject.close();
}, "json");
PHP 文件(EmailFile.php)
$EmailData = $_POST['EmailParam'];
//...Send Email...
//..Build HTML...
$TableHTML = "<table></table>";
//Return HTML
$JSONArr['EmailHTML'] = $TableHTML;
echo json_encode($JSONArr);
于 2012-06-26T20:10:45.763 回答
3
如果您尝试打印不可见的内容,您可以为不同的媒体(屏幕与打印)使用两个不同的 css 文件,您可以在其中通过display: none; 隐藏/取消隐藏所需的内容;然后通过window.print()生成打印对话框。
你的问题有点令人困惑。
例如:
<link rel="stylesheet" type="text/css" href="theme1.css" media="screen" />
<link rel="stylesheet" type="text/css" href="theme2.css" media="print" />
<div class="hidden_on_page">YOU CAN'T SEE ME BUT YOU CAN PRINT ME!</div>
<div class="on_page">YOU CAN SEE ME BUT YOU CAN'T PRINT ME</div>
然后在theme1.css中:
.hidden_on_page { display: none; }
然后在theme2.css中:
.on_page { display: none; }
您可以在需要时通过以下方式触发打印对话框:
window.print();
于 2012-06-26T20:12:36.440 回答
0
找到解决方案有完整的代码:
http://codexhelp.blogspot.in/2017/04/php-ajax-window-print-page-content.html
<script>
function printContent(id){
$.ajax({
type: "POST",
url: 'printContent.php',
data: {id: id},
type: 'get',
success: function( response ) {
var contents = response;
var idname = name;
var frame1 = document.createElement('iframe');
frame1.name = "frame1";
frame1.style.position = "absolute";
frame1.style.top = "-1000000px";
document.body.appendChild(frame1);
var frameDoc = frame1.contentWindow ? frame1.contentWindow : frame1.contentDocument.document ? frame1.contentDocument.document : frame1.contentDocument;
frameDoc.document.open();
frameDoc.document.write('<html><head><title></title>');
frameDoc.document.write('<style>table { border-collapse: collapse; border-spacing: 0; width:100%; margin-top:20px;} .table td, .table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th{ padding:8px 18px; } .table-bordered, .table-bordered > tbody > tr > td, .table-bordered > tbody > tr > th, .table-bordered > tfoot > tr > td, .table-bordered > tfoot > tr > th, .table-bordered > thead > tr > td, .table-bordered > thead > tr > th { border: 1px solid #e2e2e2;} </style>');
// your title
frameDoc.document.title = "Print Content with ajax in php";
frameDoc.document.write('</head><body>');
frameDoc.document.write(contents);
frameDoc.document.write('</body></html>');
frameDoc.document.close();
setTimeout(function () {
window.frames["frame1"].focus();
window.frames["frame1"].print();
document.body.removeChild(frame1);
}, 500);
return false;
}
});
}
</script>
于 2017-04-30T11:58:36.410 回答