Easy Print Contents of Div Using Javascript
I have previously shared an article here explaining how to print HTML table with images using JavaScript. Now, here in this article I'll show you how to print the contents of a DIV element with images using plain old JavaScript.
An HTML <div> element can have different types of content inside different elements, like a <p> element, a header element like <h2>, it can have an <img /> element etc.
image
             
          
To print the contents of various (child) elements inside a <div> or any parent element, we'll have to first extract the contents and store it in a variable. Then we'll open a window (a pop window) and write the contents (stored in a variable) in the window and print.
Let's see an example.
In the first example, the <div> will have two <p> elements and an <h2> (for header) element.
<!DOCTYPE html> <html> <head>     <style>         div {             border: solid 1px #CCC;             padding: 10px;         }     </style> </head> <body>     <div            id='parent'>         <h2>This is header :-)</h2>                  <p>             Child element 1          </p>         <p>             Child element 2         </p>     </div>      <p>         <input type='button' value='Print Content'            onclick='myApp.printDiv()' />     </p> </body> <script>     var myApp = new function () {         this.printDiv            = function () {                          var div = document.getElementById('parent');                           var win = window.open('', '', 'height=700,width=700');              win.document.write(div.outerHTML);                  win.document.close();             win.print();                }     } </script> </html>                  The parent <div> element has an id. Using the element's id, I am first extracting the contents of it and storing it in a variable. See the above script.
The window object is important here. It represents a window in browser. I am using the object to open a new browser window.
window.open()
The method takes 4 parameters like url, name, features and replace. However, I have just assigned one value that is the height and width of the window. If you remove the first two blank parameters, the method will open a new window in new a tab.
The .write() method (win.document.write(div.outerHTML);) will write the contents in the new popup window, which is later closed using the .close() method.
After closing the window object, I am printing the contents using the .print() method.
win.print();
Note: If a printer is attached to the computer, it will ask you to choose a printer. Or else, it will print a PDF document.
Print <div> Content with Images
Now, lets print the contents of a <div> element along with images.
<!DOCTYPE html> <html> <head>     <style>         div {             border: solid 1px #CCC;             padding: 10px;         }          img { width: 75px; height: 75px; }         input { font-size: 20px; }     </style> </head> <body>     <div id='parent'>         <h2>This is header :-)</h2>                  <p>             Child element 1          </p>         <p>             Child element 2         </p>                           <div>             <img src='https://www.encodedna.com/images/theme/javascript.png' alt='JS' />             <img src='https://www.encodedna.com/images/theme/google.png' alt='Google' />         </div>     </div>      <p>         <input type='button' value='Print Content'            onclick='myApp.printDiv()' />     </p> </body> <script>    var myApp = new function () {         this.printDiv            = function () {                          var div = document.getElementById('parent');                           var win = window.open('', '', 'height=700,width=700');              win.document.write(div.outerHTML);                  win.document.close();             win.print();                }     } </script> </html>                  There is not much difference between the first and second example. The script is the same for both the examples, with or without images. There's not much to explain.
However, I have defined CSS style in the above example (the 2nd example) for the elements inside the <head> tag, especially the images (img { width: 75px; height: 75px; } ). The images have specific width and height defined. See the <style> tag inside the <head> tag. But, the styles were not applied when I tried to print it.
We can apply style to the images and other elements before printing it.
Add some Style to the Print
To define style to the print, add a variable and add few styles (CSS styles) according to you requirement. For example,
<script>     var myApp = new function () {         this.printDiv            = function () {             var div = document.getElementById('parent');             var win = window.open('', '', 'height=700,width=700');                           var style = '<style>';             style = style + 'div, p {border: solid 1px #CCC;' +             	'padding: 10px;}';             style = style + 'img { width: 75px; height: 75px;}';             style = style + '</style>';                           win.document.write(style);             win.document.write(div.outerHTML);             win.print();         }     } </script>                  Now, the <div> element has borders and padding. The image has specific width and height. Similarly, if you want you can define fonts, size, colours etc.
Thanks for reading ☺.
← Previous Next →
Source: https://www.encodedna.com/javascript/print-div-content-with-image-using-javascript.htm
0 Response to "Easy Print Contents of Div Using Javascript"
Post a Comment