브라우저가 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.