最近开发项目时遇到了网页打印的问题,这是问题之二,打印宽度设置
在公制长度单位与屏幕分辨率进行换算时,必须用到一个DPI(Dot Per Inch)指标。
经过我仔细的测试,发现了网页打印中,默认采用的是96dpi,并非传闻的72dpi
A4纸张的尺寸是210×297mm,按1英寸=25.41mm换算,即8.264×11.688英寸
所以,A4纸96dpi下的分辨率是794×1123,这就是我们在制作网页的时候需要的象素。
但是打印机是无法满幅打印的,总要有页边距,所以我们在制作网页时候必须减去页边距。
以下是我测试的各种页边距下,A4纸对应的象素尺寸:
打印页边距设定为 0mm 时,网页内最大元素的分辨率:794×1123
<div style="width:794px;height:1123px;border:1px solid #000000;"> </div>
打印页边距设定为 5mm 时,网页内最大元素的分辨率:756×1086
<div style="width:756px;height:1086px;border:1px solid #000000;"> </div>
打印页边距设定为 19.05mm 时,网页内最大元素的分辨率:649×978
<div style="width:649px;height:978px;border:1px solid #000000;"> </div>
附:
A4纸的尺寸:210×297mm
A3纸的尺寸:297×420mm
测试源代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>网页打印A3、A4文档大小</title>
<style>
body{text-align:center;}
div{margin:0 auto;overflow:hidden;font-size:12px;display:block;}
p{margin:15px 30px;position:relative;overflow:hidden;padding:0;}
</style>
</head>
<body>
<div style="width:794px;height:1123px;border:1px solid #000000;"><p>这是你要的打印内容</p></div>
打印页边距设定为 5mm 时,网页内最大元素的分辨率:756×1086
<div style="width:756px;height:1086px;border:1px solid #000000;"><p>这是你要的打印内容</p></div>
打印页边距设定为 19.05mm 时,网页内最大元素的分辨率:649×978
<div style="width:649px;height:978px;border:1px solid #000000;"><p>这是你要的打印内容</p></div>
<script>
//复制内容
var divs=document.getElementsByTagName("div");
var ps=document.getElementsByTagName("p");
for(var i=0;i<divs.length;i++)
{
ps[i].innerHTML=copy(11,ps[i].innerHTML);
ps[i].style.height= parseInt(divs[i].style.height.replace("px"))-30+"px";
}
function copy(count,cont)
{
for(var j=0;j<count;j++)
{
cont+=""+cont;
}
return cont;
}
</script>
</body>
</html>
(完)
大家有什么问题或技术上的想法可以在此与大家分享,也可以加入前端爱好者QQ群(141999928)一起学习进步:
【幸凡前端技术交流群】
如果您觉得本文的内容对您的学习有所帮助,捐赠与共勉,支付宝(左)或微信(右)