인쇄 가능한 Twitter-Bootstrap 페이지를 만드는 방법


162

Twitter-Bootstrap을 사용하고 있으며 브라우저에서 보이는 방식으로 페이지를 인쇄 할 수 있어야합니다. Twitter-Bootstrap으로 만든 다른 페이지를 잘 인쇄 할 수는 있지만 순전히 Twitter-Bootstrap을 사용하는 페이지를 인쇄 할 수 없습니다. 어딘가에 태그가 없습니까?

인쇄시 공식 TB 페이지 : 트위터 부트 스트랩 페이지

인쇄시 내 페이지 : 여기에 이미지 설명을 입력하십시오

내 페이지의 실제 모습 : 여기에 이미지 설명을 입력하십시오


2
media = "screen"속성을 지정하고 있습니까? 내 대답을 살펴보십시오.
albertedevigo

답변:


156

인쇄 할 스타일 시트를 지정하십시오.
별도의 스타일 시트 일 수 있습니다.

<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 */
}

29
방금 다음과 같이 추가했습니다. 매력처럼 일했다. 감사!
Jay Q.

13
이 스타일 시트를 이미 사용중인 경우 현재 media="screen"프린터를 사용하지 못할 가능성이 있습니다 . 이것을으로 전환 media="all"하거나 media위의 답변에서 제안하는대로 간단히 제거 할 수 있습니다 .
Wex

albertedevigo, 스타일링에 대한 도움이 필요합니다. 글꼴 크기, 너비 변경과 같이 ... 정확히 무엇을 변경해야합니까? 티아. @JayQ. : 그래도 작동하거나 오래 되었습니까? 작동시키지 못합니다.
musafar006

@dreamster, 인쇄에 적용되는 스타일 시트에 스타일을 포함 시키십시오. CSS 캐스 케이 딩은 여전히 ​​작동합니다. 따라서 순서, 상속 및 선택기 우선 순위가 결과에 영향을 미칩니다. 자신의 코드로 새로운 질문을 할 것입니다.
albertedevigo

181

부트 스트랩 3.2 업데이트 : (현재 릴리스)

현재 안정적인 부트 스트랩 버전은 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

부트 스트랩 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

부트 스트랩 2.3.1 버전 :

bootstrap.css 파일을 HTML에 추가 한 후
인쇄하지 않을 부분을 찾아서 hidden-print클래스를 태그에 추가하십시오 . CSS 파일에 다음이 포함되어 있기 때문에 :

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

4
모든 것을 ( body)으로 보이지 않게 .hidden-print하지만 표시 할 특정 요소를 재정의하려는 경우 브라우저와 프린터 모두에 무언가를 표시하는 클래스가 없습니까?
Vincent Poirier

1
@VincentPoirier-요소가 숨겨져 있으면 그 안에있는 모든 것이 숨겨집니다. 따라서 몸을 숨기는 것은 의미가 없지만 몸의 일부를 숨기는 것은 의미가 없습니다. 해당 하위 요소를 표시 할 컨텍스트 (컨테이너)가 없기 때문입니다. 대신 CSS를 사용하여 모든 리프 요소를 숨기고 (예 : 내부 div에 기본 클래스를 배치) 원하는 CSS 클래스 또는 ID를 사용하십시오. 이것을 정확히 얻으려면 약간의 실험이 필요할 것입니다.
ToolmakerSteve

112

모든 교체 col-md-와 함께col-xs-

예 : 모든 교체 col-md-6col-xs-6.

이것은 내가 당신이 대체해야 할 것을 볼 수있는이 문제를 없애기 위해 나를 위해 일한 것입니다.


감사 ! 인쇄보기와 비교하여 HTML보기의 배율에 문제가있었습니다 ... 이제 모든 것이 좋습니다!
David Bélanger

2
고마워! 페이지를 인쇄 할 때 문제가 발생했습니다. 각 페이지 div는 이전 페이지 보다 아래로 이동했습니다. 이 답변은 힌트를 줬습니다. col-xs-*각 질문 전에 추가 col-md-*했으며 문제가 해결되었습니다. 면책 조항 : <div class="row"></div>문제를 해결할 수도 있는 컨테이너 추가를 테스트하지 않았습니다 (명백한 것으로 보입니다).
Fr0zenFyr

6
좁은 화면 (예 : 전화)의 레이아웃과 인쇄 레이아웃이 다른 것이 아니라면. 부트 스트랩 프린터 로직이 인쇄 화면이 너무 좁다 고 생각하는 것이 이상합니다.
ToolmakerSteve

3
맨 위에 있어야합니다.
Suraj

대답에 따르면 col-md-를 대체하거나 col-xs를 추가 할 수 있다고 덧붙여서 : class = "col-md-6 col-xs-6"그리고 요구 사항에 따라 혼합하고 일치시킬 수 있습니다 당신의 디자인.
zaidorx

17

@media printcss 파일 (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;
  }
}

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

0.4와 0.5를 모두 시도했지만 둘 다 작동하지 않았습니다. 0.5는 내 페이지 다음에 멋진 것을 추가했지만 원래 페이지는 여전히 거기에 있었고 어떻게 인쇄해야합니까? 0.4를 시도하면 인쇄가 시작되었지만 원래 페이지도 그대로 있었고 렌더링이 약간 손상되었습니다.
Csaba Toth

3

누군가가 여기 에서 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.csshtml 및 본문에 웹 사이트의 "폭"을 추가하십시오.

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}


0

인쇄보기를 태블릿 또는 데스크탑처럼 보이게하려면 부트 스트랩을 .css가 아닌 .less로 포함하고 bootstrap_variables 파일의 끝에서 부트 스트랩 응답 클래스를 다음과 같이 덮어 쓸 수 있습니다.

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

이 변수를 파일 끝에 넣는 것에 대해 걱정하지 마십시오. LESS는 변수의 지연 로딩을 지원하므로 적용됩니다.


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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.