我有一个HTML报告,由于列很多,因此需要横向打印。是否有一种方法可以执行此操作,而无需用户更改文档设置?
在浏览器中有哪些选择。
在CSS中,您可以设置@page属性,如下所示。
@media print{@page {size: landscape}}
@page是CSS 2.1规范的一部分,但是size问题的答案并未突出显示@page{size:landscape}是否已过时?:
size
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的原因。