gpt4 book ai didi

html - 打印html元素时如何获得正确的渲染尺寸

转载 作者:太空狗 更新时间:2023-10-29 13:25:28 24 4
gpt4 key购买 nike

我无法理解如何在将 html 元素打印到 A4 尺寸的纸张时以正确的尺寸渲染它们。

为了说明我的目的,我将我的代码简化为一个带有单个红色边框表格的 html 页面,该表格应为 210mmx297mm(A4 纸尺寸):

<!DOCTYPE html>
<html>
<head>
<style>
@page
{
size: 210mm 297mm portrait; /* Set paper size to A4 (portrait) */
}

html, body
{
width: 210mm;
padding:0;

margin: 0 auto; /* Left, right are auto for body to appear as centered on screen */
}
html
{
background: rgb(204,204,204); /* gray client window for screen (so as to emphase the body as looking as A4 paper) */
}

table
{
width:100%;
height:297mm;
-moz-box-sizing: border-box;

border: solid 3px red;
border-spacing:0;
border-collapse: collapse;
}
td
{
padding: 0;
text-align: center;
box-shadow: inset 0 0 0 1000px white;
}
</style>
</head>
<body>
<table><tr><td>Hello world!</td></tr></table>
</body>
</html>

  • 当我尝试使用 Firefox (49.0.2) 打印此文件时,小心地将所有边距设置为 0 并将渲染大小设置为 100%,我得到的表格显然过大:

FullSize

  • 如果我为呈现大小选择“适应页面”,我会得到一个明显缩小的表格:

AdaptSize

  • 如果我尝试使用 Chrome (54.0.2840.87 m),我也不会更幸运

我试图在 css 中将尺寸一直强制为 210mmx297mm,但仍然有问题。我不知道它是什么......要么是渲染引擎中的错误,要么是我的代码中缺少设置。

注意

根据上下文,我正在尝试使用 html+css+javascript 创建自动报告,以便可以轻松查看它们,并最终从网络浏览器将其打印为 pdf 或纸质文件。封面应该在 A4 纸的边缘填满一些图像。

下面是一些更完整的例子:

Example (JSFiddle)

我快到了,一切都在屏幕上显示得很好(firefox+chrome)但是打印时仍然有那些边距(打印仅适用于 firefox+nomargin+adaptsize ... chrome 被窃听了打印时重复表格页眉/页脚)。

最佳答案

您正在解决一个困扰许多程序员的难题。从 HTML 打印并确保与不同浏览器的兼容性基本上是 unicorn 。你不应该自己解决这个问题。 CSS 样式的怪癖和浏览器生态系统的碎片化将确保您不会成功。

我的建议是你看一下像 PDF Kit 这样的 PDF 生成器 API。或 iText .

根据我的研究,页面和表单打印在 Firefox 上尤其成问题。正如您从第一手经验中注意到的那样,您无法以理智的方式管理利润。我也尝试使用 Firefox 49.0.2 但没有成功。

我考虑过使用 @media print{}但 Firefox 不愿意合作。

也就是说,您的代码对我在您提到的版本上运行 Chrome 来说工作得很好。请注意,我将边距设置为“无”。

It worked

关于html - 打印html元素时如何获得正确的渲染尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40497481/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com