Answers:
确保为打印分配了样式表。
它可以是一个单独的样式表:
<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 */
}
media="screen"
,打印机不会看到它。您可以将其切换为media="all"
,也可以media
按照上述答案将其删除。
当前稳定的Bootstrap版本是3.2.0。
随着版本3.2的可见打印已弃用,因此您应使用以下代码:
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
打印类现已包含在文档中:http : //getbootstrap.com/css/#sensitive-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.css文件添加到HTML中之后,
找到您不想打印的部分并将hidden-print
类添加到标签中。由于css文件包含以下内容:
@media print {
.visible-print { display: inherit !important; }
.hidden-print { display: none !important; }
}
body
)不可见.hidden-print
,但又想覆盖要显示的特定元素,是否没有一个类可以使某些内容在浏览器和打印机上都可见?
替换col-md-
为col-xs-
例如:将所有替换col-md-6
为col-xs-6
。
这是对我有用的东西,它使我摆脱了这个问题,您可以看到必须替换的东西。
div
低于上一页。这个答案给了我一个提示,我col-xs-*
在每次添加之前都添加了一个col-md-*
,这解决了这个问题。免责声明:我没有测试添加一个容器,因为<div class="row"></div>
它也可能解决了问题(似乎很明显)。
@media print
css文件中有一段代码(Bootstrap 3.3.1 [UPDATE:]至3.3.5),这几乎消除了所有样式,因此即使工作正常,您也可以获得相当平淡的打印输出。
现在,我不得不求助于剥出@media print
从bootstrap.css部分-这我真的不开心,但我的用户希望直接屏幕抓斗所以这必须现在做的事。如果有人知道如何在不更改引导文件的情况下抑制它,我将非常感兴趣。
这是“令人反感”的代码块,从第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;
}
}
我发现的最佳选择是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();
}
});
如果有人在这里寻找Bootstrap v2.XX的解决方案。我要离开正在使用的解决方案。尚未在所有浏览器上都经过全面测试,但这可能是一个好的开始。
1)确保的媒体属性bootstrap-responsive.css
为screen
。
<link href="/css/bootstrap-responsive.min.css" rel="stylesheet" media="screen" />
2)创建一个print.css
并确保其媒体属性print
<link href="/css/print.css" rel="stylesheet" media="print" />
3)在内print.css
,在html和body中添加网站的“宽度”
html,
body {
width: 1200px !important;
}
4.)重现必要的媒体查询类,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
:
html,
body {
width: 1200px !important;
}
.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}
仅供参考2件事-