브라우저가 CSS에서 배경 이미지를 인쇄하도록하려면 어떻게해야합니까?


102

이 질문 은 이전에 요청 되었지만 내 경우에는 해결책이 적용되지 않습니다. 특정 배경 이미지가 페이지에 통합되어 인쇄되도록하고 싶습니다. (CSS 스프라이트로 사용되는 이미지가 여러 개 있기 때문에 페이지에서 직접 이미지가 아닙니다.)

같은 질문에 대한 또 다른 해결책 list-style-image은 모든 아이콘에 대해 다른 이미지가있는 경우에만 작동하며 CSS 스프라이트가 불가능한 경우에만 작동하는을 사용하는 것입니다.

아이콘이 인라인으로 된 별도의 페이지를 만드는 것 외에 다른 해결책이 있습니까?

답변:


51

브라우저의 인쇄 방법을 거의 제어 할 수 없습니다. 기껏해야 SUGGEST 할 수 있지만 브라우저의 인쇄 설정에 "배경 이미지를 인쇄하지 않음"이있는 경우 페이지를 다시 작성하지 않고는 배경 이미지를 다른 콘텐츠 뒤에있는 떠 다니는 "전경"이미지로 전환 할 수있는 방법이 없습니다.


210

Chrome 및 Safari -webkit-print-color-adjust: exact;를 사용하면 요소에 CSS 스타일 을 추가하여 배경색 및 / 또는 이미지를 강제로 인쇄 할 수 있습니다.


4
굉장합니다. phantomjs의 삶보다 쉽게 사용자 / 웹킷 만든다
제이슨

1
: 그것은 IE에서 작동하지 않는 @MuneemHabib, 실제로 지원되는 브라우저는 크롬입니다 developer.mozilla.org/en-US/docs/Web/CSS/...
마르코 Bettiolo

그게 크롬에 대한 트릭을 했어요 ... 운 좋게도이 경우에는 wekkit 만 지원하면 됐어요 ...
Davy

2
@DisgruntledGoat는 내 문제를 신속하게 해결했기 때문에 올바른 답으로 업데이트해야합니다 (직장에서 내 프로젝트는 Chrome에만 집중합니다). 분명히 모든 브라우저에서 작동하지는 않지만 상관없이 미리 알려야합니다.
Brett84c

1
@ Brett84c : 하나의 브라우저 전용 솔루션이기 때문에 동의하지 않습니다.
Kukeltje

84

기본적으로 브라우저에는 배경색 및 이미지 인쇄 옵션이 꺼져 있습니다. 이를 우회하기 위해 CSS에 몇 줄을 추가 할 수 있습니다. 다음을 추가하십시오.

* {
    -webkit-print-color-adjust: exact !important;   /* Chrome, Safari */
    color-adjust: exact !important;                 /*Firefox*/
}

ya는 잘 작동하지만 mozilla는 비표준으로 표시됩니다. 이 기능은 비표준이며 표준 트랙에 없습니다. 웹에 접하는 프로덕션 사이트에서는 사용하지 마십시오. 모든 사용자에게 작동하지 않습니다. 구현간에 큰 비 호환성이있을 수 있으며 향후 동작이 변경 될 수 있습니다.
Qh0stM4N

3
!important필요한가요?

나를 위해 일했습니다! 감사합니다.
Nick Woodhams 19 년

color-adjust불행히도 FireFox에서 제대로 지원되지 않습니다. colorcss 속성이 아닌 배경에만 적용되는 것 같습니다 . 많은 활동이나 투표없이 버그 로보고됩니다 . 배경을 유지하는 것은 글꼴 색상이 유지되지 않으면 읽을 수 없게되는 경우 매우 쓸모가 없습니다.
Frédéric

좋은 해결책입니다. IE11에서는 작동하지 않는다는 것을 명심하십시오 (알아요!).
Rafael S. Fijalkowski

76

CSS로 배경 이미지를 인쇄하는 방법을 찾았습니다. 배경이 어떻게 배치되어 있는지에 따라 약간 다르지만 내 응용 프로그램에서 작동하는 것 같습니다.

기본적으로 @media print 스타일 시트 끝에 하고 본문 배경을 약간 변경합니다.

예를 들어, 현재 CSS가 다음과 같은 경우 :

body {
background:url(images/mybg.png) no-repeat;
}

스타일 시트 끝에 다음을 추가합니다.

@media print {
body {
   content:url(images/mybg.png);
  }
}

이렇게하면 이미지가 본문에 "전경"이미지로 추가되어 인쇄 가능하게됩니다. z-index적절 하게 만들기 위해 몇 가지 추가 CSS를 추가해야 할 수도 있습니다 . 그러나 다시 말하지만, 페이지가 어떻게 배치되는지에 달려 있습니다.

이것은 인쇄보기에 표시 할 헤더 이미지를 가져올 수 없을 때 저에게 효과적이었습니다.


3
이것은 내가해야 할 일에 대한 멋진 솔루션이었습니다. 인라인 <img>(RWD의 경우)을 @media print. 웹 이미지가 어두운 배경에 있었기 때문에 해당 이미지를 인쇄하는 것이 백서에서 작동하지 않았으며 사용자가 헤더에 어두운 배경을 인쇄하도록 강요하고 싶지 않았습니다. 완전한!
JHogue

@JHogue-감사합니다! 도움이되어 다행입니다.
ckpepper02 2013

4
이것은 "정답"은 아니지만. 받아 들여진 답변보다 훨씬 도움이됩니다.
Xenology 2014-06-24

아래 답변 stackoverflow.com/a/15208258/915865 는 더 나은 설명이 있기 때문에 표시되어야합니다, imho
Kat Lim Ruiz

1
한스 대답 @ 예전처럼 : 파이어 폭스에서 그것은 콘텐츠 내부를 사용하는 경우에만 일
vaskort

18

아래 코드는 나에게 잘 작동합니다 (적어도 Chrome에서는).

여백 및 페이지 방향 컨트롤도 추가했습니다. (세로, 가로)

<style type="text/css" media="print">
@media print {
  body {-webkit-print-color-adjust: exact;}
}
@page {
    size:A4 landscape;
    margin-left: 0px;
    margin-right: 0px;
    margin-top: 0px;
    margin-bottom: 0px;
    margin: 0;
    -webkit-print-color-adjust: exact;
}
</style>

9

! important 속성을 사용해야합니다. 이렇게하면 인쇄 할 때 스타일이 유지 될 가능성이 크게 높아집니다.

#example1 {
    background:url(image.png) no-repeat !important;
}

#example2 {
    background-color: #123456 !important;
}

이 방법을 사용하여 회사에 대한 간단한 "프린터 친화적"보고서를 만들었습니다. OS X Chrome / Safari 및 Windows 8 Chrome / IE에서 작동합니다 (다른 플랫폼은 시도하지 않았습니다).
nuts-n-beer

3
Mac의 Chrome, Firefox 및 Safari에는 영향을 미치지 않는 것으로 보입니다.
intcreator

이것은 특정 요소의 모든 사용에 속성을 적용하고 문서를 적절하게 인쇄하는 데 필요한 것입니다. 감사!
johnny

7

@ ckpepper02가 말했듯이 body content : url 옵션이 잘 작동합니다. 그러나 약간 수정하면 다음과 같이 : before 의사 요소를 사용하여 일종의 헤더 이미지를 추가하는 데 사용할 수 있습니다.

@media print {
  body:before { content: url(img/printlogo.png);}
}

페이지 상단에 이미지가 표시되며 제한된 테스트에서 Chrome 및 IE9에서 작동합니다.

-hanz


5

유사 요소를 사용하십시오. 많은 브라우저가 배경 이미지를 무시하지만 콘텐츠가 이미지로 설정된 의사 요소는 기술적으로 배경 이미지가 아닙니다. 그런 다음 배경 이미지를 이미지가 있어야하는 대략적인 위치에 배치 할 수 있습니다 (원본 이미지만큼 쉽고 정확하지는 않지만).

한 가지 단점은 이것이 Chrome에서 작동하려면 인쇄 미디어 쿼리 외부에서이 동작을 지정한 다음 인쇄 미디어 쿼리 블록에서 표시되도록해야한다는 것입니다. 그래서 이렇게 ...

.image:before{
        visibility:hidden;
        position:absolute;
        content: url("your/image/path");
    }   

@media print {
.image{
   position:relative;
    }
    .image:before{
       visibility:visible;
       top:etc...
    }       
}

단점은 일반적인 페이지로드시 이미지가 자주 다운로드되어 불필요한 대량 추가가 발생한다는 것입니다. 원본의 보이는 이미지에 이미 사용한 것과 동일한 이미지 / 경로를 사용하여이를 방지 할 수 있습니다.


1

중요한 속성을 배경 이미지에 추가하면 Google 크롬에서 작동합니다. 먼저 속성을 추가하고 다시 시도하십시오. 그렇게 할 수 있습니다.

    .inputbg {
background: url('inputbg.png') !important;  

}


언급하기 좋은 점은 -webkit-print-color-adjust와 함께 내 문제를 해결했습니다. 정확한! important;
czmarc

0

고정 된 색상에 테두리를 사용할 수 있습니다.

 borderTop: solid 15px black;

그라데이션 배경의 경우 다음을 사용할 수 있습니다.

    box-sizing: border-box;
    border-style: solid;
    border-top: 0px;
    border-left: 0px;
    border-right: 0px;
    border-image: linear-gradient(to right, red, blue) 100%;
    border-image-slice: 1;
    border-width: 18px;

0

https://gist.github.com/danomanion/6175687 은 배경 이미지 대신 사용자 정의 글 머리 기호를 사용하여 우아한 솔루션을 제안합니다.

   a.logo {
     display: list-item;
     list-style-image: url("../images/desired-background.png");
     list-style-position: inside;
   }

이것을 포함함으로써

@media print {
}

블록, 나는 배경 이미지로 렌더링 된 화면의 투명에 흰색 로고를 인쇄용 투명에 검은 색 로고로 바꿀 수 있습니다.


이것은 귀여운 수정이지만 배경 이미지가 컨테이너보다 훨씬 크면 실제로 작동하지 않습니다. (내 포함 div를 확장)
Jabbamonkey

-1

다음과 같은 몇 가지 트릭을 할 수 있습니다.

<style>
    @page {
        size: 21cm 29.7cm;
        size: landscape
        /*margin: 30mm 45mm 30mm 45mm;*/

    }
    .whater{
        opacity: 0.05;
        height: 100%;
        width: 100%;
        position: absolute;
        z-index: 9999;
    }
</style>

본문 태그 :

<img src="YOUR IMAGE URL" class="whater"/>
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.