Chrome에서 Bootstrap 화면을 인쇄하면 뭔가 작은 ...
라는 것을 깨달았습니다.
검증을 위해, 10mm각의 박스를 그린 곳입니다.
화면에 문제 없음
음, A4 상정으로, 가로 210mm X 세로 297mm이므로, 21개의 박스가 그려지는 것이 맞네요.
인쇄에서는?
미리 봤는데.
어라? 이상하네요, 25개 줄지어 있습니다. 그래서 1칸이 10mm가 아니라 8.4mm 정도로 줄어들군요.
CSS를 조사해 보았습니다.
인쇄시 CSS를 조사해 보았습니다. 아무래도, min-width가 지정되어 그것이 수상한 것 같습니다.
@media print
body {
min-width: 992px!important;
}
이것은 어디에서 오는가? Bootstrap의 소스를 살펴 보겠습니다.
_print.scss에서 $print-body-min-width라는 것을 끌어오고 있네요.
bootstrap/scss/_print.scss
// Specify a size and min-width to make printing closer across browsers.
// We don't set margin here because it breaks `size` in Chrome. We also
// don't use `!important` on `size` as it breaks in Chrome.
@page {
size: $print-page-size;
}
body {
min-width: $print-body-min-width !important;
}
.container {
min-width: $print-body-min-width !important;
}
$print-body-min-width는 _variables.scss에 정의되었습니다.
bootstrap/scss/_variables.scss
$grid-breakpoints: (
xs: 0,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1200px
) !default;
$print-page-size: a3 !default;
$print-body-min-width: map-get($grid-breakpoints, "lg") !default;
인쇄는 A4가 아니고 A3가 디포인지 ...
대책
그래서 min-width를 조정했습니다. 자신의 HTML CSS로 덮어 씁니다.
@media print {
body {
/* for chrome */
width: 210mm;
/* for chrome */
min-width: auto !important;
}
}
min-width를 auto로 하고 되돌릴 때 제대로 크기로 인쇄할 수 있습니다.
요약
Bootstrap에서는 각종 브라우저에서 같은 결과가 되도록 조정해 줍니다.
평상시 인쇄할 때는 특별히 문제 없습니다만, 장표 인쇄나 라벨 인쇄와 같이 제대로 사이즈로 인쇄하고 싶을 때에는 min-width의 지정을 신경쓰는 편이 좋을 것 같습니다.
이번은 body 태그였지만, class="container"등도 같은 지정이 있으므로 인쇄시에 정보의 덧쓰기가 필요합니다.
검증용 HTML
일단... 검증에 사용한 HTML입니다.
<!doctype html>
<html lang="ja">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css"
integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<title>print sample</title>
<style>
body {
/* for chrome */
width: 210mm;
margin: 0;
padding: 0;
}
.cell {
width: 10mm;
height: 10mm;
margin: 0;
padding: 0;
box-sizing: border-box;
border: 1px solid #333333;
float: left;
text-align: center;
}
@page {
size : A4;
}
@media print {
body {
/* for chrome */
width: 210mm;
/* for chrome */
min-width: auto !important;
}
}
</style>
<script>
window.addEventListener('load', init);
function init() {
const elements = document.getElementById('elements');
for (let y = 0; y < 29; y++) {
for (let x = 0; x < 21; x++) {
const ele = document.createElement('div');
ele.className = 'cell'
ele.innerText = x;
elements.appendChild(ele);
}
}
}
</script>
</head>
<body>
<div id="elements" />
</body>
</html>
Reference
이 문제에 관하여(Chrome에서 Bootstrap 화면을 인쇄하면 뭔가 작은 ...), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/qoAop/items/bd7023f99c4f267ea5f1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)