?
Solved

Printing multpile pages with javascript

Posted on 2004-08-03
2
Medium Priority
?
1,702 Views
Last Modified: 2012-06-27
Is there an easy way of printing a range of html pages from a javascript on the first page ?
Ideally this should not involve loading those pages visibly into the browser, but this might be too much to ask.
0
Comment
Question by:niner
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 36

Accepted Solution

by:
Zyloch earned 375 total points
ID: 11706828
The best way I can think of is to popup windows. The windows themselves, in their <body> should have onload="opener.focus();" to lose focus. (or self.blur(); if you want)

The first page you want to print would have this:
<body onload="opener.focus();window.print();self.close();" onunload="window.open('nextPrintPage.html','printPage','');">

Each following printed page would have the same thing. The last printed page will just not have the onunload at all.

Of course, each of this displays the print dialog. If you want it gone (and I'm warning you that if you don't tell the users clearly there will be no dialog, you'll get tons of negative feedback):

http://www.experts-exchange.com/Web/Q_21068168.html

my accepted answer
0
 
LVL 53

Expert Comment

by:COBOLdinosaur
ID: 11708355
You can load the pages into hidden layers and then using styling to make them visible to the printer as needed:

<html>
<head>
<title> multi page print </title>
<style type="text/css">
@media print {
.printyes {display:block}
.printno {display:none}
}
</style>
<script type="text/javascript">
var pagecnt=6;
var str='page0';
var i=0;
function printMulti()
{
   window.print();
   document.getElementById(str).className='printno';
   i++;
   str='page'+i;
   document.getElementById(str).className='printyes';
   if (i<pagecnt)
   setTimeout('printMulti()',2000);
}
</script>
</head>
<body>
<div id="page0" class="printyes">
Main page of content here and visible on the screen
</div>
<div id="page1" class="printno" style="display="none">
page 1 content not displayed on the screen
</div>
<div id="page2" class="printno" style="display="none">
page 2 content not displayed on the screen
</div>
<div id="page3" class="printno" style="display="none">
page 3 content not displayed on the screen
</div>
<div id="page4" class="printno" style="display="none">
page 4 content not displayed on the screen
</div>
<div id="page5" class="printno" style="display="none">
page 4 content not displayed on the screen
</div>
</body>
</html>


The timeout between pages is to give enough time for the page to transfer before chaning the setup for the next page. The only page that needs any cod on it is the first page.  If the pages are actually seperate files you will probably need to use XMLHTTP to load the layers in background, or perhaps a hidden frame/iframe.

I would not advise doing this unless the users are aware that they are going to get additional pages when they print; as you could make a lot of people angry and get your site on lists of bad sites that should not be re-visited.

Cd&
0

Featured Post

7 Extremely Useful Linux Commands for Beginners

Just getting started with Linux? Here's a quick start guide that has 7 commands that we believe will come in handy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Most of the sites are being standardized with W3C Web Standards. W3C provides lot of web standard services to the web. They have the web specification, process and documentation for all the web standards. You can apply HTML, CSS and Accessibility st…
This article covers the basics of the Sass, which is a CSS extension language. You will learn about variables, mixins, and nesting.
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …
Suggested Courses

764 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question