如何在javascript中找出打印纸的维度

时间:2010-11-21 06:21:43

标签: html5 printing css3 qtwebkit

我正在生成HTML格式的报告,并希望使用Qt自动打印它们(qt有一个基于webkit的浏览器,可以将其内容呈现为PDF文件)。 我想根据目标页面大小定位报告的元素。 为此,我需要访问纸张的大小(最好是像素)。

由于我使用的是webkit,它具有所有最新的html5和css3功能。

是否有一些api可用于访问javascript中的打印页面属性。例如,写起来会很好: window.print_paper.width或window.print_paper.height

提前谢谢

4 个答案:

答案 0 :(得分:3)

你所要求的是standards-track @page spec的后退。 CSS3分页媒体(@page)允许您执行的操作是指定应在其上打印文档的方向和页面大小 - 而不是在系统中查询当前选定的方向和页面大小。据我所知,即使是CSS3媒体查询内容也不允许你这样做。

答案 1 :(得分:2)

这是不可能的。 Javascript无法访问您的打印机以检测纸张大小。您甚至无法使用像素测量,因为它与屏幕相关,因此您必须使用其他单位,如pt,inches,centimeters

答案 2 :(得分:2)

使用Accept-Language请求标头确定用户是in还是Letter-using locale,否则假定为A4。如果适合您的用户,请假设肖像。然后嗅浏览器猜测边距(IE9 = = 19.05mm,FF5 = 12.7mm,IE6 = 7.5mm,Chrome = ~10mm)。

答案 3 :(得分:0)

您可以通过QWebFrame :: contentsSize()获取内容大小,并将其提供给JavaScript世界,例如:使用QWebFrame :: addToJavaScriptWindowObject()。