인쇄 미리 보기에 배경색이 표시되지 않음
페이지를 인쇄하려고 합니다.그 페이지에서 나는 테이블에 배경색을 표시했습니다.크롬으로 인쇄 미리보기를 볼 때 배경색 속성을 사용하지 않습니다.
그래서 이 부동산을 사용해 보았습니다.
-webkit-print-color-adjust: exact;
그래도 색깔이 안 나와요.
.vendorListHeading {
background-color: #1a4567;
color: white;
-webkit-print-color-adjust: exact;
}
<div class="bs-docs-example" id="soTable" style="padding-top: 10px;">
<table class="table" style="margin-bottom: 0px;">
<thead>
<tr class="vendorListHeading" style="">
<th>Date</th>
<th>PO Number</th>
<th>Term</th>
<th>Tax</th>
<th>Quote Number</th>
<th>Status</th>
<th>Account Mgr</th>
<th>Shipping Method</th>
<th>Shipping Account</th>
<th style="width: 184px;">QA</th>
<th id="referenceSO">Reference</th>
<th id="referenceSO" style="width: 146px;">End-User Name</th>
<th id="referenceSO" style="width: 118px;">End-User's PO</th>
<th id="referenceSO" style="width: 148px;">Tracking Number</th>
</tr>
</thead>
<tbody>
<tr class="">
<td>22</td>
<td>20130000</td>
<td>Jim B.</td>
<td>22</td>
<td>510 xxx yyyy</td>
<td>zznn@abc.co</td>
<td>PDF</td>
<td>12/23/2012</td>
<td>Approved</td>
<td>PDF</td>
<td id="referenceSO">12/23/2012</td>
<td id="referenceSO">Approved</td>
</tr>
</tbody>
</table>
</div>
CSS는print-color-adjust: exact;
알맞게 작동합니다.
그러나 인쇄를 위한 올바른 CSS를 가지고 있는지 확인하는 것은 종종 까다로울 수 있습니다.당신이 겪고 있는 어려움을 피하기 위해 몇 가지 일을 할 수 있습니다.우선 모든 프린트 CSS를 화면 CSS에서 분리합니다.이 작업은 다음을 통해 수행됩니다.@media print
그리고.@media screen
.
종종 약간의 추가적인 설정을 합니다.@media print
인쇄할 때도 다른 CSS가 모두 포함되어 있기 때문에 CSS로는 부족합니다.이러한 경우 인쇄 규칙이 인쇄되지 않은 CSS 규칙을 자동으로 이기는 것이 아니기 때문에 CSS의 특수성을 인식하기만 하면 됩니다.
당신의 경우,print-color-adjust: exact
작동 중입니다.하지만 당신의background-color
그리고 색 정의는 더 높은 특수성을 가진 다른 CSS에 의해 능가되고 있습니다.
사용하는 것을 지지하지는 않습니다.!important
거의 모든 환경에서 다음 정의가 적절하게 작동하여 문제를 노출합니다.
@media print {
tr.vendorListHeading {
background-color: #1a4567 !important;
print-color-adjust: exact;
}
}
@media print {
.vendorListHeading th {
color: white !important;
}
}
다음은 fiddle(인쇄 미리보기를 쉽게 하기 위해 내장됨)입니다.
그 CSS 속성은 당신이 필요로 하는 전부입니다. 나에겐 효과가 있습니다.Chrome에서 미리 보기를 할 때 BW와 Color(색: 옵션 - 색상 또는 흑백)를 볼 수 있는 옵션이 있으므로, 해당 옵션이 없다면 이 Chrome 확장 기능을 사용하여 보다 편리하게 사용할 것을 제안합니다.
fiddle에 추가한 사이트는 미디어 프린트 CSS에 필요합니다(추가하기만 하면 됩니다)
본문의 미디어 인쇄 CSS:
@media print {
body {-webkit-print-color-adjust: exact;}
}
업데이트 OK(확인)로 문제는 bootstrap(부트스트랩)입니다.css... 미디어 프린트 CSS가 있고 사용자도 마찬가지입니다.그걸 제거하면 색깔이 나올 겁니다...당신이 직접 하거나 부트스트랩 프린트 CSS를 고수해야 합니다.
인쇄를 클릭하면 색상이 표시됩니다.http://jsfiddle.net/rajkumart08/TbrtD/1/embedded/result/
배경 그래픽 설정이 꺼져 있으면 크롬에서 배경색이나 다른 여러 스타일을 인쇄할 때 렌더링하지 않습니다.
이것은 CSS, @media, 또는 특정성과는 아무런 관련이 없습니다.아마도 해킹을 통해 배경색과 기타 그래픽을 표시할 수 있지만 크롬을 사용하여 배경색과 기타 그래픽을 표시하는 가장 쉬운 방법은 추가 설정에서 이 확인란을 적절하게 선택하는 것입니다.
저는 단지 추가할 필요가 있었습니다.!important
백그라운드-컬러 태그에 속성을 부여하여 표시할 수 있습니다. 웹킷 부분이 필요하지 않았습니다.
background-color: #f5f5f5 !important;
CSS는 다음과 같습니다.
@media print {
body {
-webkit-print-color-adjust: exact;
}
}
.vendorListHeading th {
background-color: #1a4567 !important;
color: white !important;
}
부츠트랩을 사용하는 사람들을 위해.CSS, 이게 해결책입니다!
모든 해결책을 시도해봤는데 효과가 없었어요...부트스트랩.css가 엄청 짜증났다는 걸 알게 될 때까지@media print
모든 색, 배경, colors, 그림자 등을 재설정할 수 있습니다
@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}
따라서 bootstrap.css(또는 bootstrap.min.css)에서 이 섹션을 제거합니다.
또는 인쇄할 페이지의 CSS에서 이러한 값을 재정의합니다.@media print
@media print {
body {
-webkit-print-color-adjust: exact;
}
.customClass{
//customCss + !important;
}
//more of your custom css
}
IE의 경우
IE를 사용하는 경우 인쇄 미리 보기로 이동하고(문서 오른쪽 클릭 -> 인쇄 미리 보기), 설정으로 이동하고 "배경색 및 이미지 인쇄" 옵션이 있는 경우 해당 옵션을 선택한 후 시도합니다.
부트스트랩이나 다른 타사 CSS를 사용하는 경우에는 미디어 화면에만 미디어 화면을 지정하여 자체 CSS 파일에서 인쇄 미디어 유형을 제어할 수 있도록 해야 합니다.
<link rel="stylesheet" media="screen" href="">
부트스트랩을 사용하는 경우.이 코드를 사용자 지정 CSS 파일에 사용합니다.부트스트랩은 인쇄 미리보기에서 모든 색상을 제거합니다.
@media print{
.box-text {
font-size: 27px !important;
color: blue !important;
-webkit-print-color-adjust: exact !important;
}
}
이것이 CSS 문제인 것이 확실합니까?이 문제와 관련하여 Google에 http://productforums.google.com/forum/ #!category-topic/chrome/discuss-chrome/eMlLBCKqd2s라는 게시물이 있습니다.
인쇄 과정과 관련이 있을 수 있습니다.웹킷이기도 한 사파리에서는 프린터 대화상자에서 배경 이미지와 색상을 인쇄할 수 있는 확인란이 있습니다.
다음을 사용합니다.@media print
스타일시트
h1 {
background-color:#404040;
background-image:url("img/404040.png");
background-repeat:repeat;
box-shadow: inset 0 0 0 1000px #404040;
border:30px solid #404040;
height:0;
width:100%;
color:#FFFFFF !important;
margin:0 -20px;
line-height:0px;
}
다음은 몇 가지 유의 사항입니다.
- 배경색은 절대적인 단점이며 대부분 후세를 위해 존재합니다.
- background-image는 PNG로 만들어진 #404040의 1px1px픽셀을 사용합니다. 만약 사용자가 이미지를 활성화했다면, 그렇지 않다면...
- 상자 그림자를 설정하고 그게 안 되면...
- 테두리 = 원하는 높이 및/또는 상자 너비, 단색, 색상의 1/2.위의 예에서 나는 60px 높이의 박스를 원합니다.
- 테두리 특성에서 제어하는 내용에 따라 높이/폭을 0으로 조정합니다.
- !important를 사용하지 않으면 글꼴 색이 기본적으로 검은색으로 바뀝니다.
- 실제 치수가 없는 상자에 대해 고정하려면 선 높이를 0으로 설정합니다.
- 자신만의 PNG를 만들어 진행하기 :-)
- 블록의 텍스트를 래핑해야 하는 경우 디브에 넣고 디브 위치:상대적인 위치를 사용하여 디브 위치를 지정하고 선 높이를 제거합니다.
좀 더 자세한 시연은 제 바이올린을 보세요.
여기(그리고 다른 많은 질문에서) 제안된 모든 해결책을 시도했습니다. 예를 들어, 적용된 것과 같이background-color: #000 !important;
스타일시트와 인라인 모두 또는 세트
@media print {
* {
color-adjust: exact !important;
-webkit-print-color-adjust: exact !important;
print-color-adjust: exact !important;
}
}
, 그것들을 합치기도 했지만 아무것도 효과가 없었습니다.
아무런 결과 없이 몇 시간 동안 조사한 결과, 저는 "버그"의 배경색 손실이 테이블(th, td)에만 나타나지만 다른 HTML 요소(div,...)나 다른 CSS 속성(경계색,...)은 여전히 작동한다는 것을 알았습니다.
그래서 저는 안에 있는 것들을 정리하는 "핵"을 생각해 냈습니다.<th>
아니면<td>
와 함께<div>
(이전과 동일하게 표시되도록 패딩을 조정할 수 있습니다.)
여기서 리액트와.makeStyles
의@material-ui/core
.
JSX:
<Table bordered>
<thead className={classes.thead}>
<tr>
<th><div>Col 1</div></th>
<th><div>Col 2</div></th>
<th><div>Col 3</div></th>
</tr>
</thead>
<tbody>
<tr>
<td className={classes.tdGreen}><div>Row 1 - Col 1</div></td>
<td><div>Row 1 - Col 2</div></td>
<td><div>Row 1 - Col 3</div></td>
</tr>
<tr>
<td><div>Row 2 - Col 1</div></td>
<td className={classes.tdBlue}><div>Row 2 - Col 2</div></td>
<td><div>Row 2 - Col 3</div></td>
</tr>
</tbody>
</Table>
스타일:
const useStyles = makeStyles(() => ({
thead: {
textAlign: 'center',
'& th:not(:last-child)': {
padding: '0',
'& > div': {
padding: '.75rem',
backgroundColor: '#D8D8D8 !important',
}
}
},
tdGreen: {
padding: '0 !important',
'& > div': {
padding: '.75rem',
color: 'white',
backgroundColor: 'green !important',
}
},
tdBlue: {
padding: '0 !important',
'& > div': {
padding: '.75rem',
color: 'white',
backgroundColor: 'blue !important',
}
}
}));
아이디어를 가지고 순수 HTML/CSS 솔루션으로 변환할 수 있습니다.
이것이 이 문제로 어려움을 겪고 있는 사람들에게 도움이 되기를 바랍니다!
@media print{*,:fter,:before..} 색상 및 배경 스타일에 !important 레이블을 지정하여 요소의 배경 색상을 제거합니다.그 두 개의 css를 죽이면 효과가 있을 겁니다.
부트스트랩은 인쇄물에 어떠한 배경색도 있어서는 안 된다는 실행 결정을 내리는 것이므로 CSS를 편집하거나 더 높은 우선 순위인 다른 !중요한 스타일을 가져야 합니다.잘 했어요 부트스트랩...
연옥 101의 답변을 사용했지만 모든 색상(아이콘, 배경, 텍스트 색상 등)을 유지하는 데 문제가 있었습니다. 특히 CSS 스타일시트는 DOM 요소의 색상을 동적으로 변경하는 라이브러리와 함께 사용할 수 없습니다.따라서 요소의 스타일을 변경하는 스크립트가 있습니다 (background-colour
그리고.colour
)을 인쇄하기 전에, 인쇄가 완료되면 스타일을 지웁니다.CSS를 많이 쓰지 않는 것이 유용합니다.@media print
스타일시트는 페이지 구조에 상관없이 작동합니다.
스크립트에는 FontA 일부 아이콘의 색상을 유지하도록 특별히 제작된 부분이 있습니다(또는 A를 사용하는 모든 요소).:before
컬러 컨텐츠를 삽입할 셀렉터).
호환성: Chrome에서 작동하며 다른 브라우저는 테스트하지 않았습니다.
function setColors(selector) {
var elements = $(selector);
for (var i = 0; i < elements.length; i++) {
var eltBackground = $(elements[i]).css('background-color');
var eltColor = $(elements[i]).css('color');
var elementStyle = elements[i].style;
if (eltBackground) {
elementStyle.oldBackgroundColor = {
value: elementStyle.backgroundColor,
importance: elementStyle.getPropertyPriority('background-color'),
};
elementStyle.setProperty('background-color', eltBackground, 'important');
}
if (eltColor) {
elementStyle.oldColor = {
value: elementStyle.color,
importance: elementStyle.getPropertyPriority('color'),
};
elementStyle.setProperty('color', eltColor, 'important');
}
}
}
function resetColors(selector) {
var elements = $(selector);
for (var i = 0; i < elements.length; i++) {
var elementStyle = elements[i].style;
if (elementStyle.oldBackgroundColor) {
elementStyle.setProperty('background-color', elementStyle.oldBackgroundColor.value, elementStyle.oldBackgroundColor.importance);
delete elementStyle.oldBackgroundColor;
} else {
elementStyle.setProperty('background-color', '', '');
}
if (elementStyle.oldColor) {
elementStyle.setProperty('color', elementStyle.oldColor.value, elementStyle.oldColor.importance);
delete elementStyle.oldColor;
} else {
elementStyle.setProperty('color', '', '');
}
}
}
function setIconColors(icons) {
var css = '';
$(icons).each(function (k, elt) {
var selector = $(elt)
.parents()
.map(function () { return this.tagName; })
.get()
.reverse()
.concat([this.nodeName])
.join('>');
var id = $(elt).attr('id');
if (id) {
selector += '#' + id;
}
var classNames = $(elt).attr('class');
if (classNames) {
selector += '.' + $.trim(classNames).replace(/\s/gi, '.');
}
css += selector + ':before { color: ' + $(elt).css('color') + ' !important; }';
});
$('head').append('<style id="print-icons-style">' + css + '</style>');
}
function resetIconColors() {
$('#print-icons-style').remove();
}
그리고 수정합니다.window.print
인쇄하기 전에 스타일을 설정하고 이후에 재설정할 수 있도록 기능합니다.
window._originalPrint = window.print;
window.print = function() {
setColors('body *');
setIconColors('body .fa');
window._originalPrint();
setTimeout(function () {
resetColors('body *');
resetIconColors();
}, 100);
}
요소 이전에 CSS를 생성할 아이콘 경로를 찾는 부분은 이 SO 답변의 복사본입니다.
사용할 수도 있습니다.box-shadow
소유물.
부트스트랩을 사용하는 경우 가장 좋은 해결책은 @media print {} 이 안의 모든 코드를 제거하고 인쇄 미리 보기를 수행하는 동안 더 많은 설정에서 배경 그래픽을 활성화하는 것입니다.
!important와 함께 인라인 CSS 스타일을 사용할 수 있습니다.예.
<p style="background:red!important">ABCD</p>
nextjs를 사용하거나 대응하는 경우 이를 글로벌 CSS에 추가합니다.
@media print {
body {
-webkit-print-color-adjust: exact;
}
}
저는 이게 통했어요.
부트스트랩 웹에서 부트스트랩 4 cs를 다운받아서 코드가 어디에 있는지 하단 코드 룩을 볼 수 있습니다.
그리고 이 css 스타일을 제거합니다. 왜냐하면 이것은 당신의 css 컬러 테이블 스타일을 재정의하기 때문입니다.
해라
background: linear-gradient(#1a4567 , #1a4567)
저는 이게 통했어요.
"미디어 스타일 인쇄" 옵션 없이 부트스트랩을 다운로드하는 경우, 이 문제가 발생하지 않으며 bootstrap.css 파일에서 "@media print" 코드를 수동으로 제거할 필요가 없습니다.
외부 CSS 소스 파일을 이중으로 로드하고 media="screen"을 media="print"로 변경하면 테이블의 모든 테두리가 표시됩니다.
시도해 보기:
<link rel="stylesheet" media="print" href="bootstrap.css" />
<link rel="stylesheet" media="screen" href="bootstrap.css" />
언급URL : https://stackoverflow.com/questions/14987496/background-color-not-showing-in-print-preview
'sourcecode' 카테고리의 다른 글
종료하지 않고 PowerShell 세션 새로 고침/다시 시작 (0) | 2023.10.21 |
---|---|
mariadb - 테이블 XXX가 엔진에 없습니다. (0) | 2023.10.21 |
wc_get_products()의 결과를 json 인코딩할 수 없습니다. (0) | 2023.10.21 |
SHA256으로 문자열 해시 (0) | 2023.10.21 |
부트스트랩-선택 - 변경 시 이벤트를 발생시키는 방법 (0) | 2023.10.21 |