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

发布于 2024-10-03 18:10:32 字数 292 浏览 6 评论 0原文

我正在生成 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

无可置疑 2024-10-10 18:10:32

您所要求的是从 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.

ぃ弥猫深巷。 2024-10-10 18:10:32

这是不可能的。 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

万劫不复 2024-10-10 18:10:32

使用 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).

滥情空心 2024-10-10 18:10:32

您可以通过 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().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文