如何制作网页的可打印版本?

时间:2012-01-24 21:25:35

标签: html css printing

我想制作一个可打印的网页版本。我已经尝试使用CSS为页面创建一个单独的样式表但它无法正常工作。(即它不会在顶部删除边距,菜单栏背景也不会消失。)页面包含数百个表格和当我进行打印预览时,它们有时会在页面之间分割。

这些表是根据用户在复选框中的选择动态生成的,是否可以添加一个可打印的链接,该链接将从当前页面获取内容并将其放入可以使打印机更友好的页面中?

4 个答案:

答案 0 :(得分:16)

您可以使用@media print

制作适合打印的网页版本
@media print {
        your styles here
}

例如,在Foundation中,他们有基本规则,您可以添加自己的任何内容:

@media print {
    * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important;
    -ms-filter: none !important; } /* Black prints faster: sanbeiji.com/archives/953 */
    p a, p a:visited { color: #444 !important; text-decoration: underline; }
    p a[href]:after { content: " (" attr(href) ")"; }
    abbr[title]:after { content: " (" attr(title) ")"; }
    .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; }  /* Don't show links for images, or javascript/internal links */
    pre, blockquote { border: 1px solid #999; page-break-inside: avoid; }
    thead { display: table-header-group; } /* css-discuss.incutio.com/wiki/Printing_Tables */
    tr, img { page-break-inside: avoid; }
    @page { margin: 0.5cm; }
    p, h2, h3 { orphans: 3; widows: 3; }
    h2, h3{ page-break-after: avoid; }
    .hide-on-print { display: none !important; }
    .print-only { display: block !important; }
}

答案 1 :(得分:8)

将CSS与@media rules一起使用。使用@media screen@media print定义您的样式,以便在屏幕上显示打印视图。使用page-break-* attributes控制分页符。

@media screen {
    body {
        background-image: url(/images/background.png);
    }
}
@media print {
    body {
        background-image: none;
    }
    tr {
        page-break-inside: avoid;
    }
}

答案 2 :(得分:6)

不需要两个不同的页面。您应该创建一个不同的CSS表。复制现有的一个后,只需将所有内容设置为黑/白(如果确实需要它们,可以设置几种颜色),通过将display: none;放入CSS声明中来删除任何不需要的菜单和元素,以及摆脱不必要的边缘。你应该在这里和那里放一个margin: 0margin-top: 0声明。如果你没有显示你的HTML和CSS代码很难更具体。

答案 3 :(得分:2)

最简单的方法是为打印版本制作另一个样式表,并为media="print"添加属性<link/>