11

我目前正在使用 IE9 和媒体查询,我不需要在其他浏览器上使用它。

我尝试使用一组规则,例如:

@page {
    size: auto;
    margin: 10mm 10mm 10mm 10mm;
}

//... 匹配所有 A 格式(A0、A1、A2 等)的毫米数的规则,包括边距和容差

/* A4 210x297 mm */
@media print and (min-height: 266mm) and (max-height: 288mm) and
    (min-width: 179mm) and (max-width: 201mm) {
    .img_port {
        height: 267mm !important;
    }
}

// ...

它似乎正在工作,但它并不可靠,因为即使始终选择 A4 格式,传递给 CSS 的尺寸高度和宽度值似乎也取决于打印机。

我想问的是是否有任何其他可能的方式来获得相同的结果(根据纸张尺寸将图像放在一页上)。

先感谢您。

4

5 回答 5

2

在 IE 中打印的长短是你永远无法准确控制这样的事情。

在物理上,当涉及到多少页面是可打印区域时,打印机具有不同的功能。然后,您还必须处理 IE 从用户打印的最后一页中记住的任何设置,例如缩放、边距、每页页数等。

在为此苦苦挣扎多年之后,我终于放弃了尝试控制 IE 对打印页面所做的事情,并开始将我的打印样式表视为建议。

IE < 9 根本不以任何有意义的方式支持分页符或@page,并且在我的测试中,IE9 几乎忽略了所有@page 规则,而支持用户上次配置的任何设置。

要建议 IE 以页面的全宽和全高打印图像,请尝试从 HTML 进行横向打印的答案

于 2012-10-03T15:19:13.160 回答
0

听起来这可能是一份工作page-break

.img_port {
    height: 267mm !important;  /* might also try height: 100%; */
    page-break-after: always;
    page-break-before: always;
    page-break-inside: avoid;
}
于 2012-09-11T16:32:59.603 回答
0

没有任何可靠的方法可以这样做AFAIK。
我们让用户选择页面大小/方向并生成包含图像的正确大小的 PDF。实际上,您可以生成高分辨率(更大)图片以获得更好的打印 DPI 并使其适合页面。

于 2012-10-22T09:22:06.380 回答
0

你总是可以这样做:

创建一个新的 CSS 文件,其中仅包含要在打印时应用的 CSS。

*{display: hidden;}
img{display: block; width: 100%; height: 100%;}

然后你可以在你的 html 文档中链接到它:

<link rel="stylesheet" href="link/to/print.css" media="print" type="text/css" />

我不是 100% 了解“显示:块;”,您可能需要尝试使用“块”的其他值。我还没有测试过,但如果你这样做了,请告诉我它是否有效!

于 2012-10-18T22:47:22.030 回答
-2

如果您使用分页符,它将显示一个空页面。

img{
    page-break-inside: avoid;
    padding:0; margin:0; 
    top:0; left:0; right:0;bottom:0;  border:0;
    /*width:2480px; height:3508px!important;*/ /*a4 size */
    width:100%; height:100%; max-width:100% important!
}
.page-break  { display: block; page-break-before: always; }
@page {
size: landscape;
}
@page :first {
  margin-top: 10cm    /* Top margin on first page 10cm */
}
于 2012-09-11T17:48:24.507 回答