>  기사  >  웹 프론트엔드  >  자바스크립트에서 인쇄 미리보기 기능을 구현하는 방법

자바스크립트에서 인쇄 미리보기 기능을 구현하는 방법

PHPz
PHPz원래의
2023-04-19 14:13:381811검색

네트워크 기술의 급속한 발전과 함께 인터넷 애플리케이션이 점점 더 널리 보급되고 있으며, 그 중 웹 애플리케이션도 없어서는 안 될 부분이 되었습니다. 많은 웹 애플리케이션에서 인쇄 기능은 매우 중요한 기능이지만, 브라우저와 운영 체제에 따라 인쇄 효과가 다를 수 있으므로 인쇄 효과의 정확성을 보장하기 위해 인쇄 미리보기를 수행해야 합니다. JavaScript로 인쇄 미리보기를 구현하는 방법 역시 개발자들의 관심을 점점 더 많이 끌고 있습니다.

선행 지식

Javascript에서 인쇄 미리보기를 구현하는 방법을 소개하기 전에 몇 가지 전제 지식을 이해해야 합니다.

  1. window.print() 메서드

window.print()는 javascript에 제공되는 메서드입니다. 주로 인쇄 기능을 구현하는 데 사용됩니다. 이 메서드를 호출하면 브라우저가 현재 페이지를 직접 인쇄하기 시작합니다.

  1. CSS 인쇄 스타일

인쇄 미리보기에서 CSS 스타일도 매우 중요한 부분입니다. CSS 스타일을 통해 인쇄된 페이지의 레이아웃, 글꼴, 색상 등을 제어할 수 있습니다.

  1. 인쇄 페이지 크기

기기마다 인쇄 용지 크기가 다를 수 있으므로 기기의 인쇄 용지 크기에 따라 인쇄 페이지의 레이아웃을 조정해야 합니다.

  1. window.matchMedia() 메소드

window.matchMedia()는 JavaScript와 함께 제공되는 메소드로 현재 기기의 디스플레이 크기를 결정하는 데 주로 사용됩니다. 이 방법을 사용하여 다양한 장치의 디스플레이 효과를 조정할 수 있습니다.

구현 단계

사전 지식을 바탕으로 자바스크립트에서 인쇄 미리보기를 구현하는 방법을 소개할 수 있습니다.

  1. 인쇄 버튼 만들기

먼저 사용자가 버튼을 클릭하여 인쇄 미리보기 기능을 실행할 수 있도록 페이지에 인쇄 버튼을 만들어야 합니다. 버튼 코드는 다음과 같습니다.

<button onclick="printPreview()">打印预览</button>
  1. 인쇄 미리보기 기능 만들기

인쇄 버튼에서 printPreview()라는 함수를 호출하여 인쇄 미리보기 기능을 구현해야 합니다. 함수 코드는 다음과 같습니다.

function printPreview(){
  //创建新的窗口
  var printWindow = window.open('', 'printWindow', 'height=600, width=800');

  //将样式表和HTML代码添加到新窗口中
  printWindow.document.write('<html><head>');
  printWindow.document.write('<link href="print.css" rel="stylesheet" type="text/css" media="print"/>');
  printWindow.document.write('</head><body>');
  printWindow.document.write(document.getElementById('printContent').innerHTML);//printContent为需要打印的内容区域的ID,需要在页面中定义
  printWindow.document.write('</body></html>');

  //设置新窗口的打印样式和相关属性
  printWindow.document.close();
  printWindow.focus();
  printWindow.print();
  printWindow.close();
}

위 코드에서는 먼저 printWindow라는 이름의 새 창을 만들고 해당 창에 스타일 시트와 HTML 코드를 추가합니다. 여기서는 print.css라는 CSS 스타일 시트를 사용하고 있으며 이는 인쇄할 때만 적용됩니다. 그런 다음 새 창의 인쇄 스타일과 속성을 설정하고 인쇄 미리보기를 위해 화면에 창을 팝업합니다. 마지막으로 인쇄가 끝나면 창을 닫습니다.

  1. 인쇄 스타일 설정

인쇄 미리보기 기능에 인쇄용 CSS 스타일 시트를 추가했습니다. 다음은 일반적으로 사용되는 몇 가지 인쇄 스타일을 포함하는 예제 print.css 파일의 코드입니다.

/*隐藏页面中的所有元素*/
* {
  display:none;
}

/*显示需要打印的区域*/
#printContent {
  display:block;
}

/*设置打印页面的字体和颜色*/
body {
  font-family:宋体, Arial;
  font-size:16px;
  color:#000;
}

/*为打印页面进行分页*/
.my-pagebreak{
  page-break-after: always;
}

/*设置打印页面的边距*/
@media print {
  @page {
    margin:20mm 15mm !important;
  }
}

여기에서는 CSS를 사용하여 페이지의 모든 요소를 ​​숨기고 인쇄해야 하는 영역만 표시합니다. 동시에 인쇄된 페이지의 글꼴과 색상을 설정하고 페이지의 페이지 매김과 여백을 설정합니다.

  1. 페이지 레이아웃 조정

기기마다 인쇄 용지 크기가 다를 수 있으므로 기기의 인쇄 용지 크기에 따라 인쇄 페이지의 레이아웃을 조정해야 합니다. window.matchMedia() 메서드를 사용하여 현재 장치의 디스플레이 크기를 결정하고 그에 따라 인쇄된 페이지의 레이아웃을 조정할 수 있습니다. 코드는 다음과 같습니다.

function printPreview(){
  //创建新的窗口
  var printWindow = window.open('', 'printWindow', 'height=600, width=800');

  //根据设备的显示尺寸调整页面布局
  if (window.matchMedia('print and (max-width: 768px)').matches) {
    //设备宽度小于768px,调整页面布局
    //...
  } else if (window.matchMedia('print and (max-width: 992px)').matches) {
    //设备宽度小于992px,调整页面布局
    //...
  } else {
    //设备宽度大于等于992px,调整页面布局
    //...
  }

  //将样式表和HTML代码添加到新窗口中
  printWindow.document.write('<html><head>');
  printWindow.document.write('<link href="print.css" rel="stylesheet" type="text/css" media="print"/>');
  printWindow.document.write('</head><body>');
  printWindow.document.write(document.getElementById('printContent').innerHTML);//printContent为需要打印的内容区域的ID,需要在页面中定义
  printWindow.document.write('</body></html>');

  //设置新窗口的打印样式和相关属性
  printWindow.document.close();
  printWindow.focus();
  printWindow.print();
  printWindow.close();
}

위 코드에서는 window.matchMedia() 메서드를 사용하여 현재 장치의 디스플레이 크기를 결정하고 다양한 너비 범위에 따라 페이지 레이아웃을 조정합니다. 실제 상황에 따라 인쇄된 페이지의 레이아웃을 직접 조정할 수 있습니다.

요약

Javascript로 인쇄 미리보기를 구현하면 인쇄된 페이지의 효과를 보다 정확하고 정확하게 제어하여 인쇄 경험을 향상시킬 수 있습니다. 구현 과정에서 인쇄 효과의 일관성을 보장하기 위해 다양한 장치 크기와 브라우저 특성에 따라 스타일과 레이아웃을 조정해야 합니다. 동시에 CSS3의 @page 규칙과 같은 다른 기술을 사용하여 인쇄 페이지 효과 제어를 더욱 향상시킬 수도 있습니다.

위 내용은 자바스크립트에서 인쇄 미리보기 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.