Detailed explanation of html printing related operations and implementation

Detailed explanation of html printing related operations and implementation

The principle is to call the window.print() method, but this method can only print the entire current page, so the following solution is used to solve partial printing

1: Use iframe to inject the elements and styles that need to be printed and then call print

// Example code function print () {
    let ifElement = document.getElementById('ifId')
    const addHtmlPrint = () => {
        const content = ifElement.contentWindow || ifElement.contentDocument
        content.document.body.innerHTML = this.detailTable
        const styleEle = document.createElement('style')
        /* Remove the header and footer when printing*/
        styleEle.innerHTML = '@media print {@page { margin: 5mm; }}'
        content.document.getElementsByTagName('head')[0].appendChild(styleEle)

        /* Ensure that the resources in the iframe are loaded, and the image should be imported in the form of img*/
        ifElement.onload = () => {
            content.print()
        }
    }
    this.getDetailTable()

    if (ifElement) {
        // If it has been created, print it directly addHtmlPrint()
    } else {
        ifElement = document.createElement('iframe')
        ifElement.setAttribute('id', 'ifId')
        ifElement.setAttribute('style', 'display:none')
        document.body.appendChild(ifElement)

        addHtmlPrint()
    }
}

2: Use @media print to set the elements that need to be hidden when printing on the current page

@media print{
    /* Here, set the elements that do not need to be printed to not be displayed*/
    .hidden-element{
        display:none;
        /* visibility:hidden; */
    }
    /*The paper is set to 1200px wide and 800px high*/
    @page{
        size:1200px 800px;
    }
}
  • <link href="/example.css" media="print" rel="stylesheet" /> Marks the style that will be used when printing
  • Listen for print events window.addEventListener('beforeprint|| afterprint', ()=> {});

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

<<:  Detailed analysis of the chmod command to modify file permissions under Linux

>>:  Introduction to fourteen cases of SQL database

Recommend

Best Practices for Sharing React Code

When any project develops to a certain complexity...

Problems encountered when uploading images using axios in Vue

Table of contents What is FormData? A practical e...

I have compiled a few cool design sites that I think are good.

You must have inspiration to design a website. Goo...

Mysql sorting to get ranking example code

The code looks like this: SELECT @i:=@i+1 rowNum,...

Example of implementing QR code scanning effects with CSS3

Online Preview https://jsrun.pro/AafKp/ First loo...

Basic security settings steps for centos7 server

Turn off ping scanning, although it doesn't h...

Solution for Tomcat to place configuration files externally

question When we are developing normally, if we w...

How to install MySQL 5.7 on Ubuntu and configure the data storage path

1. Install MySQL This article is installed via AP...

React antd realizes dynamic increase and decrease of form

I encountered a pitfall when writing dynamic form...

What does the n after int(n) in MySQL mean?

You may already know that the length 1 of int(1) ...

How is MySQL transaction isolation achieved?

Table of contents Concurrent scenarios Write-Writ...