html在几张A4纸上打印一个很宽的页面

时间:2009-10-12 22:22:15

标签: html printing

我的页面有一个宽的(比如3000px左右)水平图,通常可以滚动。

在打印版本中,我渲染整个图形,(实际上我有一个单独的JAvascript / HTML代码用于打印版本),所以需要在屏幕上显示三个A4宽度(横向)

在这种情况下,我看到浏览器(本例中为FF3)不允许我在几张纸上打印宽页(基于打印预览)。

似乎打印整个文档的唯一方法是让用户将缩放级别设置为30%,然后整个图形适合单个A4。

我必须在那里遗漏一些CSS指令,但无法在任何地方谷歌。

非常感谢指点/想法。

感谢。

4 个答案:

答案 0 :(得分:3)

您可以向打印样式表添加旋转变换。作为长桌的部分解决方案现在太宽了......

.rotated-when-printed {
    -moz-transform:rotate(90deg);
    -webkit-transform:rotate(90deg);
    -o-transform:rotate(90deg);
    filter:DXImageTransform.Microsoft.Matrix(sizingMethod='auto expand',M11=6.123233995736766e-17,M12=-1,M21=1,M22=6.123233995736766e-17)
}

<!-- some very wide table -->
<table class="rotated-when-printed">
    ...
</table>

答案 1 :(得分:1)

(我之前对这个问题的回答被删除了,不知道为什么:我再试一次)

很长一段时间我都在寻找基于CSS的解决方案来解决这个问题,我认为不可能通过CSS实现HTML表的垂直分页(至少不会对HTML TABLE标签中的表格数据进行分页,但它应该是可以使用在DIV中组织的表格数据。)

我认为唯一的解决方案是让javascript进行拆分。 加载页面时,javascript可以检查表是否宽于所需的页面宽度:在这种情况下,可以动态创建一个新表,并在其中仅复制超出允许宽度的列,并从原始表中删除它们。 所有过程都有点棘手,但结果令人满意。

也可以让javascript代码仅用于打印而不是用于屏幕上显示的表:页面上的打印按钮可以安排运行服务器端代码,例如php,它可以生成pdf思想库wkhtmltopdf,传递给它的html页面是表格,包括javascript代码。事实上,wkhtmltopdf会生成一个模拟浏览器的pdf,并且javasript代码将被正确执行。

现在,这个javascrpt库已经存在,我编写它并且工作得非常好(至少对我的需求而言),它可以在Internet上免费获得:我不想链接它,因为已经删除了之前的答案,并且我不知道是不是因为这个原因。但如果有人感兴趣,你可以在评论中提出,我会给你。

答案 2 :(得分:0)

在这样的多个页面上打印html不是一件好事

您可能希望将图形分解为页面大小的块(例如每个页面的div),因此当它们彼此浮动时,图形看起来是必需的。然后使用CSS page-break-beforepage-break-after确保打印的页面正确分解,并且不会丢失页面旁边的任何内容。

另外,请确保您为可打印版本使用的css指定了media类型的打印。

答案 3 :(得分:0)

您无法以任何实际方式控制HTML的打印方式 - HTML / CSS / JS无法访问打印驱动程序或浏览器打印设置。 唯一的选择是将您的可打印输出转换为PDF(或其他一些以打印为中心的格式)并改为服务。