2

有没有其他方法可以达到这个要求。

我正在使用filter: progid:DXImageTransform.Microsoft.BasicImage(Rotation=3);旋转有效的页面,但如果内容很长,则无法正确打印页面。

4

1 回答 1

3

使用打印 CSS。在您的 CSS 中,您可以设置 @page 属性,如下所示。

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

@page 是CSS 2.1 规范的一部分,但这size并没有像问题的答案所强调的那样@Page { size:landscape} 已过时?

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

如前所述,尺寸选项来自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 Documents 在选择打印时创建 PDF 并允许用户打开并打印的原因。

于 2012-06-26T16:30:24.787 回答