Как создать печатную страницу Twitter-Bootstrap
Я использую Twitter-Bootstrap, и мне нужно иметь возможность печатать страницу так, как она выглядит в браузере. Я могу печатать другие страницы, сделанные с помощью Twitter-Bootstrap, но я не могу распечатать свою страницу, которая использует чисто Twitter-Bootstrap. Я где-то пропустил тег?
официальная страница ТБ при печати:

Моя страница при печати:

Как на самом деле выглядит моя страница:

9 ответов:
убедитесь, что для печати назначена таблица стилей.
Это может быть отдельная таблица стилей:<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 */ }
Bootstrap 3.2 обновление: (текущая версия)
текущая стабильная версия 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 HiddenBootstrap 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 HiddenBootstrap 2.3.1 версия:
после добавления bootstrap.css файл в ваш HTML,
Найдите детали, которые вы не хотите печатать и добавитьhidden-printкласса в теги. Потому что css файл включает в себя следующее:@media print { .visible-print { display: inherit !important; } .hidden-print { display: none !important; } }
заменить все
col-md-сcol-xs-например: заменить все
col-md-6доcol-xs-6.это то, что сработало для меня, чтобы избавиться от этой проблемы, вы можете увидеть, что вам нужно заменить.
есть раздел
@media printкод в файле css (Bootstrap 3.3.1 [UPDATE:] to 3.3.5), это удаляет практически все стили, поэтому вы получаете довольно мягкие распечатки, даже когда он работает.Сейчас мне пришлось прибегнуть к удалению
@media printраздел из начальной загрузки.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.Х. Х здесь. Я оставляю решение, которое я использовал. это не полностью протестировано на всех браузерах, однако это может быть хорошим началом.
1) Убедитесь, что медиа атрибут
bootstrap-responsive.cssиscreen.<link href="/css/bootstrap-responsive.min.css" rel="stylesheet" media="screen" />2) создать
print.cssи убедитесь, что его медиа атрибут<link href="/css/print.css" rel="stylesheet" media="print" />3) внутри
print.css, добавьте "ширину" вашего сайта в html & тело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 вещи FYI -
- на данный момент они добавили несколько классов переключения. Смотрите, что доступно в последней стабильной версии -печать переключается в responsive-utilities.меньше
- новое и улучшенное решение, поступающее в Bootstrap 3.0-они добавляют отдельную печать.меньше файлов. Смотрите отдельной печати.меньше
чтобы сделать вид печати похожим на планшет или рабочий стол, включите bootstrap as .меньше, не как .css, а затем вы можете перезаписать классы Bootstrap responsive в конце файла bootstrap_variables, например, следующим образом:
@container-sm: 1200px; @container-md: 1200px; @container-lg: 1200px; @screen-sm: 0;Не беспокойтесь о том, чтобы поместить эти переменные в конец файла. LESS поддерживает ленивую загрузку переменных, поэтому они будут применяться.
Если вы хотите сохранить столбцы на 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">
Comments