Take the 2-minute tour ×
Salesforce Stack Exchange is a question and answer site for Salesforce administrators, implementation experts, developers and anybody in-between. It's 100% free, no registration required.

We have a simple outputLink whose only function is to print the current page. This is working fine in Firefox and Chrome, but in IE8 it opens the Print dialog box and then promptly crashes.

<apex:outputLink value="#" styleClass="navImageCustom printImage" title="Print" onclick="window.print();"/>

In IE9 it also opens the Print dialog, but the page refreshes and gives the error "The name can only contain underscores and alphanumeric characters. It must begin with a letter and be unique, and must not include spaces, end with an underscore, or contain two consecutive underscores.”"

I tried adding a "return false;" to the onclick but the crash remains. What's the easiest way to print a Visualforce page?

Edit: <div class="navImageCustom printImage" onclick="window.print(); return false;"></div> also fails.

share|improve this question
    
forceguru.blogspot.in/2012/12/… This is a good blog that may be helpful.Also may be you may tweak some code . Also i think not a bad idea if you could replace outputLink with command link and try once to see any luck –  Mohith Kumar Dec 20 '12 at 19:17
1  
When I copy paste your code i see no clickable link. Is there a copy paste error here? should it be <apex:outputLink value="#" styleClass="navImageCustom printImage" title="Print" onclick="window.print();"> hello </apex:outputlink> ? –  rao Dec 20 '12 at 19:25
    
one of the styleClasses contains a background image loaded as a Static Resource. That's why there's something to click. I also tried with your "hello" link and it still crashed. –  George S. Dec 20 '12 at 19:27
    
ah got it I tried it in IE8 as well in chrome and mozilla , I was able to print the view :/ –  rao Dec 20 '12 at 19:30
add comment

1 Answer

up vote 3 down vote accepted

The issue is that it is trying to go to a URL of window.print(); return false;, e.g., https://c.na14.visual.force.com/apex/window.print(); return false. That page doesn't exist so it is trying to give you the intermediate page where you can choose to create a VF page with that name, but the name isn't a valid page name so you get that error.

You can see the same error if you type in any invalid page name. For example, try using something with a space: https://c.na14.visual.force.com/apex/bad name.

If you want to be able to use the same basic code, I think you can just use the javascript pseudo-protocol to get around it.

Change your onclick from

onclick="window.print(); return false"

To

onclick="javascript:window.print(); return false"

Alternatively, you could use something like jQuery to attach an event handler and then call window.print() from the event handling JavaScript code.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.