Как создать печатную страницу Twitter-Bootstrap



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



официальная страница ТБ при печати:
Twitter Bootstrap Page



Моя страница при печати:
enter image description here



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

650   9  

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       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; }
}

заменить все 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 и убедитесь, что его медиа атрибут print

<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 -

  1. на данный момент они добавили несколько классов переключения. Смотрите, что доступно в последней стабильной версии -печать переключается в responsive-utilities.меньше
  2. новое и улучшенное решение, поступающее в 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

    Ничего не найдено.