我试图在一页内打印数据表。其中有200或300行。它应该在单页中打印,如在线 MS Excel打印选项 - > 在一个页面上适合工作表。我怎么能实现这一点呢?
我尝试过以下代码,
var tble = document.createElement("table");
tble.id = "tble";
document.body.appendChild(tble);
var trtd = "<tr><td>123</td></tr>"
for (var i = 0; i < 300; i++) {
$("#tble").append(trtd);
}
var divs = "<div id='printing'></div>";
$("#printing").append($("#tble"));
$("#printData").click(function() {
var printToDiv = $("#printing");
var newWin = window.open("", "print-window");
newWin.document.open();
newWin.document.write('<html><body onload="window.print()">' + printToDiv.innerHTML + '</body></html>');
newWin.document.close();
setTimeout(function() {
newWin.close();
}, 10);
})
印刷内容应在一页上。有什么选择吗?
答案 0 :(得分:1)
JavaSript代码无法控制打印过程,除了启动它。从那时起,它是特定于浏览器的,并且不受代码的控制。
我能看到的唯一方法就是询问用户他们使用的页面大小以及利润率(因为浏览器不会告诉你),然后确保你的表格,当渲染时,适合边距内的区域(例如,通过缩小/放大字体大小等)。毕竟,你可以通过jQuery的outerWidth
和outerHeight
函数获得渲染大小(以像素为单位),一般来说你可以假设为96dpi(所以像素/ 96 =英寸)。