如何创建可打印的Twitter-Bootstrap页面

时间:2012-09-06 14:54:08

标签: printing twitter-bootstrap

我正在使用Twitter-Bootstrap,我需要能够以在浏览器上看起来的方式打印页面。我可以打印用Twitter-Bootstrap制作的其他页面,但我似乎无法打印纯粹使用Twitter-Bootstrap的页面。我在某个地方错过了标签吗?

打印时的官方TB页面: Twitter Bootstrap Page

我的页面打印时: enter image description here

我的网页实际上是什么样子: enter image description here

9 个答案:

答案 0 :(得分:179)

Bootstrap 3.2更新:(当前版本)

当前稳定的Bootstrap版本为3.2.0 对于版本3.2,不推荐使用visible-print,所以你应该这样使用:

Class                        Browser    Print
 -------------------------------------------------
.visible-print-block         Hidden        Visible (as block)
.visible-print-inline        Hidden        Visible (as inline)
.visible-print-inline-block  Hidden        Visible (as inline-block)
.hidden-print                Visible       Hidden

Bootstrap 3更新:

打印课程现在位于文档中:http://getbootstrap.com/css/#responsive-utilities-print

Similar to the regular responsive classes,
       use these for toggling content for print.

Class            Browser    Print
 ----------------------------------------
.visible-print   Hidden     Visible
.hidden-print    Visible    Hidden

Bootstrap 2.3.1版本:

将bootstrap.css文件添加到HTML后,
找到您不想打印的部分,并将hidden-print类添加到标记中。 因为css文件包含这个:

@media print {
  .visible-print  { display: inherit !important; }
  .hidden-print   { display: none !important; }
}

答案 1 :(得分:154)

请务必为打印指定样式表 它可以是一个单独的样式表:

<link rel="stylesheet" type="text/css" media="print" href="print.css">

或您为所有设备分享的内容:

<link rel="stylesheet" type="text/css" href="bootstrap.min.css"> # Note there's no media attribute

然后,您可以使用媒体查询在单独的样式表或共享样式表中为打印机编写样式:

@media print {
    /* Your styles here */
}

答案 2 :(得分:108)

将每个col-md-替换为col-xs-

例如:将每个col-md-6替换为col-xs-6

这对我有用,让我摆脱这个问题你可以看到你必须要替换的东西。

答案 3 :(得分:16)

css文件中有@media print代码的一部分(Bootstrap 3.3.1 [更新:]到3.3.5),这几乎剥离了所有样式,因此你得到相当平淡的打印输出即使它在工作。

现在我不得不求助于从bootstrap.css中删除@media print部分 - 我真的高兴但我的用户想要直接屏幕抓取所以现在必须这样做。如果有人知道如何在不更改引导文件的情况下抑制它,我会非常感兴趣。

这是“冒犯&#39;代码块,从第192行开始:

@media print {
  *,
  *:before,enter code here
  *:after {
    color: #000 !important;
    text-shadow: none !important;
    background: transparent !important;
    -webkit-box-shadow: none !important;
            box-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;

    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  select {
    background: #fff !important;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}

答案 4 :(得分:6)

我找到的最佳选择是http://html2canvas.hertzen.com/
http://jsfiddle.net/nurbsurf/1235emen/

html2canvas(document.body, {  
  onrendered: function(canvas) {
    $("#page").hide();
    document.body.appendChild(canvas);
    window.print();
    $('canvas').remove();
    $("#page").show();
  }
});

答案 5 :(得分:3)

如果有人在这里寻找 Bootstrap v2.X.X 的解决方案。我要离开我正在使用的解决方案。 这并未在所有浏览器上进行过全面测试,但它可能是一个良好的开端。

1)确保Format(frmChangeData.txtBirthDate.value, "dd-mm-yyyy") 的媒体属性为bootstrap-responsive.css

screen

2)创建<link href="/css/bootstrap-responsive.min.css" rel="stylesheet" media="screen" /> 并确保其媒体属性print.css

print

3)在<link href="/css/print.css" rel="stylesheet" media="print" /> 内,在html&amp;中添加您网站的“宽度”体

print.css

4.。)在html, body { width: 1200px !important; } 中重现必要的媒体查询类,因为它们在print.css内,我们在打印时禁用了它。

bootstrap-responsive.css

以下是.hidden{display:none;visibility:hidden} .visible-phone{display:none!important} .visible-tablet{display:none!important} .hidden-desktop{display:none!important} .visible-desktop{display:inherit!important} 的完整版:

print.css

答案 6 :(得分:2)

2件事FYI -

  1. 目前,他们已经添加了一些切换类。查看最新稳定版本中提供的内容 - print toggles in responsive-utilities.less
  2. Bootstrap 3.0中新增和改进的解决方案 - 他们正在添加一个单独的print.less文件。请参阅separate print.less

答案 7 :(得分:0)

要使打印视图看起来像平板电脑或桌面包括bootstrap asless,而不是.css然后你可以在bootstrap_variables文件的末尾覆盖bootstrap响应类,例如:

@container-sm:      1200px;
@container-md:      1200px;
@container-lg:      1200px;
@screen-sm:         0;

不要担心将这些变量放在文件的末尾。 LESS支持延迟加载变量,因此它们将被应用。

答案 8 :(得分:0)

如果你想在A4打印上保留列(大约540px),这是一个好主意

@media print {
    .make-grid(print-A4);
}

.make-print-A4-column(@columns) {
    @media print {
        float: left;
        width: percentage((@columns / @grid-columns));
    }
}

你可以像这样使用它:

<div class="col-sm-4 col-print-A4-4">