js 给html设置dpi,如何通过javascript访问屏幕显示的DPI设置?

首先,帮助与术语DPI(每英寸点数)可能(和非常常见的)混淆:

DPI不完全是“显示设置”的一部分。在两个不同的上下文中使用它(mis):

>每英寸显示器(或视频)的原始像素。它确定像素的小小。您可以在14“笔记本电脑屏幕和17”液晶显示器上具有相同的1024×768分辨率。前者大致为1280/14 = 91DPI,后者大致为1280/17 = 75DPI。屏幕的DPI是不可变的;它不能用显示设置更改。 More…

>在打印期间在纸上涂上的每英寸点数。这是打印机/复印机/传真机可以在一英寸纸上打印的并排点数。大多数打印机可以设置为以较低的DPI打印,只需将每个点打印为两个,四个等点。 More…

打印图像时,有许多事情会影响图像在纸张上的最终尺寸:

>源图像的尺寸 – 这是像素或数据的数量。

>源图像的DPI。此值确定在打印图像时如何解释尺寸。

>如果源图像没有嵌入的DPI信息(JPEG可以有一个,GIF从不),正在使用的程序可能有设置以指定DPI。这可以是图像查看器/编辑器或甚至是web浏览器。

>通常在打印对话框中指定的缩放系数。

>打印机的当前DPI设置。

>打印机的物理(最大)DPI。

底线是,您正在打印的图像将有效地重新采样(缩小或放大),以匹配打印过程中使用的最终DPI。任何当事人可能导致此(程序,打印驱动程序,打印机)。

现在,回到你的问题。不,您不能确定屏幕的DPI,因为它不在软件域中。这是一个硬件领域术语,描述了用户可以买多少监视器。更新:我最初写的这个回答在2009年,我的理解当前的技术。正如@thure指出,你现在可以(自2012年以来)使用window.matchMedia函数来确定屏幕的DPI。

如果你想要打印一个HTML布局的精度,像其他人建议的,你的CSS应该使用打印尺寸,如em,pt或pc而不是px。但是,最终的结果可能仍然取决于浏览器使用。如果将HTML转换为PDF(或从头开始生成PDF)是一个选择,打印PDF将给你最真实的所见即所得在屏幕和纸上。

你可能感兴趣的:(js,给html设置dpi)