views:

2947

answers:

8

How can I see print preview of my invoice generated from website. If I print with the script

  <a href="javascript:windows.print()">print this page</a>

in the print "print this page also printed .

How can I hide it?

A: 

You can get the current page to print by calling window.print(). For example:

   <a href="JavaScript:window.print();">Print this page</a>

If you are wanting to give them some idea of what it will look like printed, you can use the script on this page to give them a pseduo-preview of the way the page with print.

garethm
this is for print. but i need to preview before printing
one thing more that when i take print with this script then print this page is also printed. how can i hide this?
Actually, a pseudo-preview is the closest you can get inside the browser. Pseudo-preview means in this case, that all 'screen' targeted stylesheets are removed, and all 'print' targeted stylesheets are applied. No paging, sorry.
Boldewyn
+4  A: 

Browsers don't offer an API to trigger the print preview feature in browsers.

Happily, they almost all keep it in the usual place (dangling from the File menu), so you shouldn't have to draw users' attention to it.

David Dorward
Isn't there any way to build a print preview exactly same as the one offered by a browser?
rahul
No! No! No! No! No! No! No! No! No! No! No! (Stackoverflow has a minimum comment length)
David Dorward
Let the browser handle the print preview. Include a print stylesheet that makes your invoice page look nice when printed (this is a good thing to do for any webpage), and if you want, include a "Print this Page" link, but let the browser handle browser-based tasks.
Steve Harrison
+7  A: 

You can create separate print stylesheets to have some general control over how a site will look in print. You can display the site to your user using this special print stylesheet before printing. That does not give you a 100% preview though, as every browser handles things a bit differently. You won't see how it prints until it actually prints. Using a print stylesheet will get you pretty close though.

Some operating systems and printer drivers offer a preview to the user between hitting the Print button and the actual print, but that's not something you have control over or that's guaranteed to always be available.

deceze
A: 

To directly answer your question, when you call the Browser print() method it prints the page as-is. If you want to print a different version of the page (without the "Print this page" element, for example), you will need to create a separate Printable version of the page (usually done using a separate stylesheet) which does not have those elements you do not want on the Printed page.

Cerebrus
+11  A: 

Addressing the following part of your question:

in the print "print this page also printed .

How can I hide it?

Create a new stylesheet (in this example, I've named it "print.css") and include it in your HTML as follows:

<link rel="stylesheet" href="print.css" type="text/css" media="print" />

Note the media="print"—this means the stylesheet will only be used when printing the page.

Next assign a class to your <a> element so that we can reference it in CSS:

<a href="javascript:window.print()" class="noPrint">Print this Page</a>

Finally, in your CSS file, include the following rule:

.noPrint {
    display: none;
}

Now the "Print this Page" link shouldn't appear in the printed version of your page.

Steve

Steve Harrison
Or add a meaningful class-name 'no-print', and have that `no-print {display: none;}`, and apply that to all items that are irrelevant or unwanted in the printed version.
David Thomas
@drthomas: Good idea! I've updated my answer accordingly.
Steve Harrison
A: 

To hide the link when printing, do this:

<style type="text/css" media="print">
.printlink
{
    display:none;
}
</style>
<a href="javascript:windows.print()" class="printlink">print this page</a>

Alternatively:

<a href="javascript:windows.print()"
onclick="this.style.display='none';"
class="printlink">
print this page
</a>

Although this won't reappear after cancelling the print.

Eric
A: 

Thanks! Found this very helpfull.

mat
A: 

function Print( ) {
document.getElementById('ImagePrint').style.visibility='hidden';
window.print(); document.getElementById('ImagePrint').style.visibility='visible';
}

in html body -- print Info enter code here

This function will not show ur image in printing. u can use your control rather than image with control id. hope u will get ur solution

Lokesh singhal