Solved

Printing multpile pages with javascript

Posted on 2004-08-03
2
1,668 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
2 Comments
 
LVL 36

Accepted Solution

by:
Zyloch earned 125 total points
Comment Utility
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
Comment Utility
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

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Suggested Solutions

Article by: Matthew
I am a very big proponent of technology compliance standards and strive to meet such criteria in all of my work. That includes my site, which is 100% XHTML 1.0 compliant as determined by the World Wide Web Consortium. https://www.matthewstevenkel…
What is Node.js? Node.js is a server side scripting language much like PHP or ASP but is used to implement the complete package of HTTP webserver and application framework. The difference is that Node.js’s execution engine is asynchronous and event…
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…

743 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

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now