我想调整SPAN元素样式的字体大小,直到SPAN的文本在纸上打印时为7.5英寸宽,但JavaScript只报告SPAN的clientWidth属性(以像素为单位).
123456
然后:
#test { font-size:1.2in; /* adjust this for yourself until printout measures 7.5in wide */ }
然后:
console.log(document.getElementById('test').clientWidth);
我已经在一台机器上通过实验确定它使用大约90 DPI作为转换因子,因为上面的代码记录大约675,至少在Firefox 3下.
在不同的浏览器,打印机,屏幕等配置下,此数字不一定相同.
那么,我如何找到浏览器使用的DPI?我可以打电话给我的系统取回"90"?
总结一下:
这不是您可以使用HTML解决的问题.除了CSS2打印属性之外,浏览器还没有定义或预期的方式来打印东西.
首先,像素(在CSS中)不一定与像素(在屏幕上)的大小相同,因此某个值适用于您的事实并不意味着它将转换为其他设置.
其次,用户可以使用页面缩放等功能更改文本大小.
第三,因为没有确定的如何为打印目的布置网页的方法,所以每个浏览器都有不同的方式.只需在Firefox和IE中打印预览,看看差异.
第四,打印带来了一大堆其他变量,例如打印机的DPI,纸张尺寸.此外,大多数打印机驱动程序支持在浏览器永远不会看到的打印对话框中对输出集进行用户缩放.
最后,很可能因为打印不是HTML的目标,所以Web浏览器的"打印引擎"(在我所见过的所有浏览器中)都与其他浏览器断开连接.您的javascript无法与打印引擎"对话",反之亦然,因此"浏览器用于打印预览的DPI号码"不会以任何方式公开.
我推荐一个PDF文件.