?
Solved

Printing multpile pages with javascript

Posted on 2004-08-03
2
Medium Priority
?
1,711 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 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

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

Question has a verified solution.

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

Preface In the first article: A Better Website Login System (http://www.experts-exchange.com/A_2902.html) I introduced the EE Collaborative Login System and its intended purpose. In this article I will discuss some of the design consideratio…
I will show you how to create a ASP.NET Captcha control without using any HTTP HANDELRS or what so ever. you can easily plug it into your web pages. For Example a = 2 + 3 (where 2 and 3 are 2 random numbers) Session("Answer") = 5 then we…
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
The viewer will the learn the benefit of plain text editors and code an HTML5 based template for use in further tutorials.
Suggested Courses

830 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