从HTML横向打印

我有一个HTML报告,由于列数很多,所以需要打印格式。 有没有办法做到这一点,用户不必更改文档设置?

浏览器中有什么选择。


在你的CSS中,你可以设置@page属性,如下所示。

@media print{@page {size: landscape}}

@page是CSS 2.1规范的一部分,但是这个size不像问题的答案Is @Page {size:landscape} obsolete?

CSS 2.1不再指定size属性。 目前CSS3分页媒体模块的工作草案确定了它(但这不是标准或被接受的)。

如前所述,尺寸选项来自CSS 3草案规范。 理论上它可以设置为页面大小和方向,尽管在我的示例中大小被省略了。

该支持与Firefox中提交的错误报告非常混杂,大多数浏览器不支持它。

它似乎可以在IE7中工作,但这是因为IE7会记住用户在打印预览中最后选择横向或纵向(仅重新启动浏览器)。

本文提供了一些使用JavaScript或ActiveX将用户浏览器发送密钥的建议方法,尽管它们并不理想,并依赖于更改浏览器安全设置。

或者,您可以旋转内容而不是页面方向。 这可以通过创建一个样式并将其应用到包含这两行的主体来完成,但这也会造成很多对齐和布局问题。

<style type="text/css" media="print">
    .page
    {
     -webkit-transform: rotate(-90deg); 
     -moz-transform:rotate(-90deg);
     filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
    }
</style>

我发现的最后一种选择是在PDF中创建一个横向版本。 当用户选择打印时,您可以指向它打印PDF。 但是,我无法得到这个在IE7中自动打印工作。

<link media="print" rel="Alternate" href="print.pdf">

总之,在某些浏览器中,使用@page size选项相对容易,但是在许多浏览器中,没有确定的方法,这取决于您的内容和环境。 这可能是为什么Google文档在选择打印后创建PDF,然后允许用户打开并打印该文档。


我的解决方案

<style type="text/css" media="print">
    @page { 
        size: landscape;
    }
    body { 
        writing-mode: tb-rl;
    }
</style>

这适用于IEFirefoxChrome


引自CSS-Discuss Wiki

@page规则在CSS2到CSS2.1的范围内被缩减了。 据报道,完整的CSS2 @page规则仅在Opera中实现(即使那时也很脆弱)。 我自己的测试表明,IE和Firefox根本不支持@page。 根据现在已过时的CSS2规范第13.2.2节,可以覆盖用户的定向设置和(例如)在Landscape中强制打印,但相关的“尺寸”属性已从CSS2.1中删除,与事实一致没有当前的浏览器支持它。 它已被恢复到CSS3分页媒体模块中,但请注意,这只是一份工作草案(截至2009年7月)。

结论:忘记目前的@page。 如果您觉得您的文档需要以横向打印方式打印,请问问自己是否可以让设计更流畅。 如果您真的不能(可能是因为文档包含多列数据表),您将需要建议用户将方向设置为横向,并可能概述如何在最常见的浏览器中执行此操作。 当然,某些浏览器具有适合打印的宽度(缩小到适合)功能(例如Opera,Firefox,IE7),但依靠拥有此功能的用户或开启它是不可取的。

链接地址: http://www.djcxy.com/p/52463.html

上一篇: Landscape printing from HTML

下一篇: CSS3 transform: rotate; in IE9