我有一个HTML报告,需要打印的景观,因为许多列。是否有一种方法可以做到这一点,而不需要用户更改文档设置?
浏览器中有哪些选项。
我有一个HTML报告,需要打印的景观,因为许多列。是否有一种方法可以做到这一点,而不需要用户更改文档设置?
浏览器中有哪些选项。
当前回答
我用横向设置创建了一个空白的MS文档,然后在记事本中打开它。复制并粘贴以下内容到我的html页面
<style type="text/css" media="print">
@page Section1
{size:11 8.5in;
margin:.5in 13.6pt 0in 13.6pt;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:4;}
div.Section1
{page:Section1;}
</style>
<div class="Section1"> put text / images / other stuff </div>
打印预览以横向大小显示页面。这似乎在IE和Chrome上工作得很好,没有在FF上测试。
其他回答
引用自css - discussion Wiki
The @page rule has been cut down in scope from CSS2 to CSS2.1. The full CSS2 @page rule was reportedly implemented only in Opera (and buggily even then). My own testing shows that IE and Firefox don't support @page at all. According to the now-obsolescent CSS2 spec section 13.2.2 it is possible to override the user's setting of orientation and (for example) force printing in Landscape but the relevant "size" property has been dropped from CSS2.1, consistent with the fact that no current browser supports it. It has been reinstated in the CSS3 Paged Media module but note that this is only a Working Draft (as at July 2009). Conclusion: forget about @page for the present. If you feel your document needs to be printed in Landscape orientation, ask yourself if you can instead make your design more fluid. If you really can't (perhaps because the document contains data tables with many columns, for example), you will need to advise the user to set the orientation to Landscape and perhaps outline how to do it in the most common browsers. Of course, some browsers have a print fit-to-width (shrink-to-fit) feature (e.g. Opera, Firefox, IE7) but it's inadvisable to rely on users having this facility or having it switched on.
我面临的问题可能和你一样。这里的每个人都使用CSS来静态地提供它,但我不得不寻找一个动态的解决方案,这样它就会根据活动元素而改变,而无需重新加载页面。
我创建了两个文件,肖像。css和风景。css。
Portrait.css是空的,但是landscape.css只有一行。
@media print{@page {size: landscape}}
在我的主文件中,我添加了这一行html来指定portrait.css为默认值。
<link rel="stylesheet" id="PRINTLAYOUT" href="portrait.css" type="text/css" /></link>
现在,要切换,你只需要改变元素中的href来切换打印模式。
$("#PRINTLAYOUT").attr("href","landscape.css")
// OR
document.getElementById("PRINTLAYOUT").href = "landscape.css" // I think...
这对我来说很有效,我希望它能帮助其他人像我一样做艰难的事情。注意,$表示JQuery..如果你还没有使用它,我强烈建议你现在就开始使用。
这是我想到的-添加一个负旋转<html>元素和一个正旋转等于abs值<身体>。这节省了添加大量的CSS样式的身体,它的工作就像一个魅力:
html {
transform: rotate(-90deg);
}
body {
transform: rotate(90deg);
}
我曾经尝试解决这个问题,但我所有的研究都将我引向了ActiveX控件/插件。浏览器(至少在3年前)没有允许更改任何打印设置(副本数量,纸张大小)的技巧。
我努力提醒用户,当浏览器打印对话框出现时,他们需要选择“横向”。我还创建了一个“打印预览”页面,这比IE6的要好得多!我们的应用程序在一些报告中有非常宽的数据表,打印预览会清楚地告诉用户什么时候表格会溢出纸张的右边缘(因为IE6也不能处理2张纸的打印)。
是的,人们至今仍在使用IE6。
在CSS中,您可以设置如下所示的@page属性。
@media print{@page {size: landscape}}
@page是css2.1规范的一部分,但是这个尺寸并没有像回答“@page {size:landscape}过时了吗?:
CSS 2.1不再指定size属性。目前的工作 CSS3页面媒体模块的草案没有指定它(但这不是 标准或接受)。
如上所述,大小选项来自css3草案规范。理论上,它可以设置为页面大小和方向,尽管在我的示例中,大小被省略了。
这种支持与firefox中的bug报告混合在一起,大多数浏览器都不支持它。
它在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选项相对容易,但在许多浏览器中,没有确定的方法,这将取决于你的内容和环境。 这可能是为什么谷歌文档在选择打印时创建PDF,然后允许用户打开并打印。