JS获取DPI解决打印页面像素计算问题
文 / @WordPress主题
一般电脑默认96DPI或72DPI,JS可以通过以下方法获取DPI的值:
function get_dpi() { for (var i = 56; i < 2000; i++) { if (matchMedia("(max-resolution: " + i + "dpi)").matches === true) { return i; } } }
有了DPI值就可以计算出毫米与像素之间的等值:
1毫米=DPI/25.4
因为DPI为每英寸长度内的像素点数,1英寸=25.4mm,所以DPI除以25.4就是1毫米的像素数。
根据以上,我们可以计算96DPI下的A4纸页面像素大小:
宽:210mm×(96/25.4)≈794px 高:297mm×(96/25.4)≈1123px
注意计算得到的结果是向上取整的,因此,如果指定页面的高度为1123px,打印时会显示2页,即多出一个空白页。
最好的办法还是在JS中为打印页面指定高度:
height = 297*(DPI/25.4)
有了毫米与像素的单位换算,以及页面的宽度、高度像素,就可以非常精确的控制打印页面样式了,实际上就是在编写一个宽794px和高1123px的页面。
注意:浏览器打印页面可以设置边距,默认情况下是有边距的,我们可以使用打印样式设置这个边距,从而将打印边距的控制权也掌握在自己手里。
@page { size: A4 portrait; margin: 0; }
以上CSS样式设置打印页面大小为A4纸,纵向打印,横向打印为landscape,margin属性指定页边距。

相关文章
-
搭建一个WordPress网站需要多少成本 2023-11-06 00:09:51
-
Symlink介绍(附:如何使用Symlink进行WordPress开发) 2023-11-05 23:38:32
-
让WordPress实现数据库同步的插件:HyperDB 2023-10-24 23:40:49
-
allegro电商平台值得做吗(附:2023年Allegro注册流程指南) 2023-10-08 21:53:39
-
印度跨境电商平台有哪些(附:印度跨境电商做什么产品好) 2023-10-08 21:34:23
-
跨境电商必看的几大海外二手电商平台 2023-10-08 18:04:42
-
WordPress同城互联网产品解决方案:UBASE 2023-10-03 16:40:39
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45
-
WordPress 6.3版本(2023年8月)性能提升了哪些? 2023-08-28 16:56:02