Это объединенный ответ того, что я узнал из постов Ориона Эдвардса (особенно ссылки на webkit.org) и Билла.
Кажется, что ответ на самом деле всегда 96 DPI, хотя вы можете запустить следующий (по общему признанию неаккуратный) код, и я хотел бы услышать, если вы получите другой ответ:
var bob = document.body.appendChild(document.createElement('div'));
bob.innerHTML = "<div id='jake' style='width:1in'>j</div>";
alert(document.getElementById('jake').clientWidth);
Как говорится в статье на webkit.org, это число довольно стандартное и не зависит от вашего принтера или платформы, поскольку они используют другой DPI.
Даже если это не так, используя приведенный выше код, вы можете найти ответ, который вам нужен. Затем вы можете использовать DPI в своем JavaScript, ограничивая clientWidth, как это сделал Билл, в сочетании с CSS, использующим дюймы, чтобы иметь что-то, что выводится правильно, если пользователь не делает ничего интересного, как упоминал Орион Эдвардс, или по крайней мере, после этого, это зависит от пользователя, который, возможно, захочет сделать что-то помимо того, что имел в виду программист, например, распечатать на бумаге 11x17 что-то, что программист спроектировал, чтобы уместить в 8.5x11, но все же, это "работать правильно" для того, что пользователь хочет даже тогда.