Scenario
SSRS toolbox provides Print functionality. But it's browser dependent. It works fine only with Internet Explorer browser, not compatible
with Firefox and Chrome browsers.
Resolution
To achieve this, we've to use custom Print button and JavaScript code which executes on button click.
To achieve this, we've to use custom Print button and JavaScript code which executes on button click.
HTML code for Print button and Report viewer:
<asp:Button runat="server" CssClass="btn-addschedule-bot" Style="margin-left: 10px;" ID="btnPrint" CausesValidation="true" ValidationGroup="vgSubmit" OnClientClick="printReportClick();" Text="Print Report" />
<div style="border: 1px solid #A7B0E8; margin: 0px 10px; padding: 5px; float: left;">
<rsweb:ReportViewer ID="rptViewer" runat="server" Height="500px" Style="-ms-overflow-y: scroll" Width="1100px" ShowToolBar="False" ShowParameterPrompts="False" ShowCredentialPrompts="False"></rsweb:ReportViewer>
</div>
JavaScript Code to print a
report in Chrome and Firefox:
Print Preview in Chrome browser:
<script type="text/javascript">
function printReport(report_ID) {
var rv1 = $('#' + report_ID);
var iDoc = rv1.parents('html');
// Reading the report styles
var styles = iDoc.find("head style[id$='ReportControl_styles']").html();
if ((styles == undefined) || (styles == '')) {
iDoc.find('head script').each(function () {
var cnt = $(this).html();
var p1 = cnt.indexOf('ReportStyles":"');
if (p1 > 0) {
p1 += 15;
var p2 = cnt.indexOf('"', p1);
styles = cnt.substr(p1, p2 - p1);
}
});
}
if (styles == '') { alert("Cannot generate styles, Displaying without styles.."); }
styles = '<style type="text/css">' + styles + "</style>";
//--- Reading the report html
var table = rv1.find("div[id$='_oReportDiv']");
if (table == undefined) {
alert("Report source not found.");
return;
}
//-- Generating a copy of the report in a new window
var docType = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/loose.dtd">';
var docCnt = styles + table.parent().html();
var docHead = '<head><title>Printing ...</title><style>body{margin:5;padding:0;}</style></head>';
var winAttr = "location=yes, statusbar=no, directories=no, menubar=no, titlebar=no, toolbar=no, dependent=no, width=720, height=600, resizable=yes, screenX=200, screenY=200, personalbar=no, scrollbars=yes";;
var newWin = window.open("", "_blank", winAttr);
writeDoc = newWin.document;
writeDoc.open();
writeDoc.write(docType + '<html>' + docHead + '<body onload="window.print();">' + docCnt + '</body></html>');
writeDoc.close();
// The print event will fire as soon as the window loads
newWin.focus();
// uncomment to autoclose the preview window when printing is confirmed or canceled.
// newWin.close();
};
function printReportClick() {
printReport('<%=rptViewer.ClientID %>');
}
</script>
Print Preview in Chrome browser:
I hope this will help you out to make print functionality working in Chrome and Firefox.
If you have any questions you can reach out our SharePoint Consulting team here.
Really Help full.... Thank U So Much...
ReplyDeleteWhich file do you change in Reporting Services?
ReplyDeleteThis solution will not work for report having more than 1 page
ReplyDeleteplease provide suggestion if any idea for take print more than 3 pages
DeleteIs there any solution for print more than 2 page in rdlc report using chrome/mozila?
ReplyDeleteSolution not working if rdlc page has more than one page
ReplyDeleteThanks a lot ...Really Help full
ReplyDeleteWhere do you put the code??
ReplyDelete