Tuesday, September 11, 2012

Printing SharePoint WebPart content

Try the following steps. It works for most web parts (i
have used this for lists)

1. Start with a web part
You start by having a web part with a display of information, such as a list.
If you don’t have one already you can start by creating a SharePoint Event List,
and then, adding a Calendar web part (remember to choose the Calendar View).
2. Add the Print Button
You will be adding a Print Button to the page, by putting the JavaScript below
into a Content Editor Web Part.
Add a Content Editor Web Part to the page with the web part you want to print.
Open its properties and click the Source Code button to add the JavaScript code.
Copy the following code directly into the Text Builder box. This code will
create a “Print Web Part” button that when clicked, will execute the print
action.
<center><input type="button" OnClick="javascript:void(PrintWebPart())"
value="Print Web Part"></center>
<script language="JavaScript">
//Controls which Web Part or zone to print
var WebPartElementID = "WebPartWPQ6";
//Function to print Web Part
function PrintWebPart()
{
var bolWebPartFound = false;
if (document.getElementById != null)
{
//Create html to print in new window
var PrintingHTML = '<HTML>\n<HEAD>\n';
//Take data from Head Tag
if (document.getElementsByTagName != null)
{
var HeadData= document.getElementsByTagName("HEAD");
if (HeadData.length > 0)
PrintingHTML += HeadData[0].innerHTML;
}
PrintingHTML += '\n</HEAD>\n<BODY>\n';
var WebPartData = document.getElementById(WebPartElementID);
if (WebPartData != null)
{
PrintingHTML += WebPartData.innerHTML;
bolWebPartFound = true;
}
else
{
bolWebPartFound = false;
alert ('Cannot Find Web Part');
}
}
PrintingHTML += '\n</BODY>\n</HTML>';
//Open new window to print
if (bolWebPartFound)
{
var PrintingWindow = window.open("","PrintWebPart",
"toolbar,width=800,height=600,scrollbars,resizable,menubar");
PrintingWindow.document.open();
PrintingWindow.document.write(PrintingHTML);
// Open Print Window
PrintingWindow.print();
}
}
</script>
3. Connect the Print Button to the Web Part
To do this we need the <DIV> tag ID for the Web Part we want to print, then,
we modify the ID in the JavaScript of the Print Button.
To find out the ID of the Web Part we want to print:
Using your browser, right mouse click on the page where the Web Part is
installed and choose “View Source”. This will open a view of your page in HTML
within Notepad.
Press CTRL-F, to initiate a Find. Enter the Title of your Web Part. You may need
to execute a find a couple of times as your navigation may show “Events” as
well.
Once you have located the HTML for your Web Part for example; “<td accesskey="W"
tabindex="0" title="Events" id="WebPartTitleWPQ6" style="width:100%;">”, look
later in the HTML for a <DIV> tag which matches the Web Part Queue Number, in
this case WPQ6. In our case it looks like “<div
WebPartID="d44df3e3-0bbc-4151-9d04-22982bd294bc" HasPers="false"
id="WebPartWPQ6"…”.
The “WebPartWPQ6” would be the ID we want. The key part of the ID is to know if
it is 1, 2, 3, etc. Here it is 6.
To modify the Print Button JavaScript:
Modify the Content Editor Web Part which contains the JavaScript you pasted
earlier and go into the Source View.
Look for the line “//Controls which Web Part or zone to print”, the line
underneath controls the ID near the top.
Replace the “WebPartWPQ6” with the ID you copied from the source of the page and
click “OK”.
Save the changes and click OK.
4. Print the Web Part Content
We are now ready to test what you have labored to create. Once the page has
been refreshed inside of Internet Explorer, click on the “Print Web Part”
button. You should see a new Window with the content of your web part.
If your pop-up blocker IS NOT turned on, you will get the Print Dialogue.
If it is turned on, then you can go to File Print or Print Preview.
Now, print the content.

10 comments:

  1. it works great thank you how we can make it print automatically

    ReplyDelete
  2. Hi How can I get it to print all webparts across several pages?

    ReplyDelete
  3. How can I add a header or other formatting on the printout?

    ReplyDelete
  4. hi, how can I show "print preview window" instead of "print window"?

    ReplyDelete
  5. I need some help....the above works perfect for my display/edit InfoPath Forms. But I also want my customers to be able to fill out the InfoPath Form and Print it right there and there (print the new form)

    My issue is: I have a date field. After I fill out the form and hit "print", everything comes up as it is supposed to, but then a date picker calendar pops up from my date field. If I continue and hit print, the mini calendar is the only thing that prints. Any clue on why that happens?

    ReplyDelete
  6. try this way, make datepicker as readonly when the print button active

    ReplyDelete
    Replies
    1. GREAT....how do you do that? Where does it go, in the code from above?

      Delete
  7. I'm using the same code the webpart is displayed in preview but when i print its blank. Kindly please guide me if im missing something

    ReplyDelete