一尘不染

从HTML横向打印

css

我有一个HTML报告,由于列很多,因此需要横向打印。是否有一种方法可以执行此操作,而无需用户更改文档设置?

在浏览器中有哪些选择。


阅读 260

收藏
2020-05-16

共1个答案

一尘不染

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

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

@page是CSS 2.1规范的一部分,但是size问题的答案并未突出显示@page{size:landscape}是否已过时?:

CSS 2.1不再指定size属性。CSS3 Paged Media模块的当前工作草案确实指定了它(但这不是标准的或不可接受的)。

如前所述,size选项来自CSS 3 Draft Specification。从理论上讲,可以将其设置为页面大小和方向,尽管在我的示例中省略了页面大小。

支持与在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,然后允许用户打开并打印该PDF的原因。

2020-05-16