如何在javascript中找出打印纸的维数
我正在生成 HTML 格式的报告,并希望使用 Qt 自动打印它们(qt 有一个基于 webkit 的浏览器,可以将其内容呈现为 PDF 文件)。 我想根据目标页面大小来定位报告的元素。 为此,我需要访问纸张的大小(最好以像素为单位)。
由于我使用的是 webkit,它具有所有最新的 html5 和 css3 功能。
是否有一些 api 可用于访问 javascript 中的打印页面属性。例如,最好写: window.print_paper.width 或 window.print_paper.height
预先感谢您
I am generating reports in HTML formats, and want to print them automatically using Qt (qt has a webkit based browser, and one can render its contents to a PDF file).
I want to position the elements of the report depending on the target page size.
For that i need to access the size of the paper (preferably in pixels).
Since i am using webkit, it has all the latest html5 and css3 features.
is there some api available to access printed page properties inside javascript. for example, would be nice to write:
window.print_paper.width or window.print_paper.height
Thank you in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您所要求的是从 standards-track @page 规范 倒退的。 CSS3 分页媒体 (@page) 允许您指定打印文档的方向和页面大小,而不是向系统查询当前选择的方向和页面大小。据我所知,即使是 CSS3 媒体查询也不允许你这样做。
What you're asking for is backwards from the standards-track @page spec. What CSS3 paged media (@page) allows you to do is specify an orientation and page size that your document should be printed on - not query your system for the currently selected orientation and page size. Even the CSS3 media query stuff won't allow you to do this, to the best of my knowledge.
这是不可能的。 JavaScript 无法访问您的打印机来检测纸张尺寸。你甚至不能使用像素测量,因为它是相对于屏幕的,所以你必须使用其他单位,如磅、英寸、厘米
it's not possible. Javascript can't access to your printer to detect paper size. You can't even use pixel measurement because it's relative to the screen so you have to use other units like pt, inches, centimeters
使用 Accept-Language 请求标头确定用户是否在 a 使用字母的区域设置,否则假设为 A4。如果适合您的用户,请假设纵向。然后嗅探浏览器来猜测边距(IE9 = =19.05mm,FF5 = 12.7mm,IE6 = 7.5mm,Chrome = ~10mm)。
Use the Accept-Language request header to determine if the user is in a Letter-using locale, otherwise assume A4. Assume portrait if that suits your users. Then sniff the browser to guess at the margins (IE9 = =19.05mm, FF5 = 12.7mm, IE6 = 7.5mm, Chrome = ~10mm).
您可以通过 QWebFrame::contentsSize() 获取内容大小,并将其提供给 JavaScript 世界,例如使用 QWebFrame::addToJavaScriptWindowObject()。
You could get the contents size via QWebFrame::contentsSize() and the make it available to the JavaScript world, e.g. using QWebFrame::addToJavaScriptWindowObject().