Print button not available in ReportViewer using IE11

So, we noticed that the print button in our ReportViewer ( Version=10.0.0.0 ) disappeared after upgrading to IE11 .

Here's what it looks like in IE10 :


After some research, we found that other people also report this problem (i.e. here ), but have not yet found a solution.
Using compilation mode would be a workaround, but not a viable / suitable solution for clients.

Has anyone figured out how to fix this?

+4
source share
4 answers

We are facing the same problem these weeks. Finally, we will find a way to solve it, here are the steps:

  • update 2012 Report Viewer to 11.1.3366
  • upgrade "Microsoft.Net Framework" to 4.5.1
  • reboot system

Our environment: Win server 2008 r2, IIS7, ReportViewer 11

+4
source

I used the code from this page ( http://msdn.microsoft.com/en-us/library/ms252091.aspx ) and created a class for this. You can add a button to the page and call it.

 ---- Call --------- ReportPrinter prnt = new ReportPrinter(); prnt.Print(rpt.LocalReport); Class Code ------------ using Microsoft.Reporting.WebForms; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Printing; using System.IO; using System.Linq; using System.Text; using System.Web; namespace javaFish.blogspot.Utils { /// <summary> /// Prints report as xps file to default printer. /// </summary> public class ReportPrinter : IDisposable { //Local variables private int m_currentPageIndex; private IList<Stream> m_streams; private LocalReport report = null; /// <summary> /// Routine to provide to the report renderer, in order to save an image for each page of the report. /// </summary> /// <param name="name"></param> /// <param name="fileNameExtension"></param> /// <param name="encoding"></param> /// <param name="mimeType"></param> /// <param name="willSeek"></param> /// <returns></returns> private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek) { Stream stream = new MemoryStream(); m_streams.Add(stream); return stream; } /// <summary> /// Export the given report as an EMF (Enhanced Metafile) file. /// </summary> /// <param name="report"></param> private void Export() { string deviceInfo = @"<DeviceInfo> <OutputFormat>EMF</OutputFormat> <PageWidth>"+ report.GetDefaultPageSettings().PaperSize.Width.ToString()+ @"in</PageWidth> <PageHeight>" + report.GetDefaultPageSettings().PaperSize.Height.ToString() + @"in</PageHeight> <MarginTop>" + report.GetDefaultPageSettings().Margins.Top.ToString() + @"in</MarginTop> <MarginLeft>" + report.GetDefaultPageSettings().Margins.Left.ToString() + @"in</MarginLeft> <MarginRight>" + report.GetDefaultPageSettings().Margins.Right.ToString() + @"in</MarginRight> <MarginBottom>" + report.GetDefaultPageSettings().Margins.Bottom.ToString() + @"in</MarginBottom> </DeviceInfo>"; Warning[] warnings; m_streams = new List<Stream>(); report.Render("Image", deviceInfo, CreateStream, out warnings); foreach (Stream stream in m_streams) stream.Position = 0; } /// <summary> /// Handler for PrintPageEvents /// </summary> /// <param name="sender"></param> /// <param name="ev"></param> private void PrintPage(object sender, PrintPageEventArgs ev) { Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]); // Adjust rectangular area with printer margins. Rectangle adjustedRect = new Rectangle( ev.PageBounds.Left - (int)ev.PageSettings.HardMarginX, ev.PageBounds.Top - (int)ev.PageSettings.HardMarginY, ev.PageBounds.Width, ev.PageBounds.Height); // Draw a white background for the report ev.Graphics.FillRectangle(Brushes.White, adjustedRect); // Draw the report content ev.Graphics.DrawImage(pageImage, adjustedRect); // Prepare for the next page. Make sure we haven't hit the end. m_currentPageIndex++; ev.HasMorePages = (m_currentPageIndex < m_streams.Count); } /// <summary> /// Exports local report and tries to print /// </summary> public bool Print(LocalReport localReport) { try { report = localReport; Export(); if (m_streams == null || m_streams.Count == 0) throw new Exception("Error: no stream to print."); PrintDocument printDoc = new PrintDocument(); if (!printDoc.PrinterSettings.IsValid) { throw new Exception("Error: cannot find the default printer."); } else { printDoc.PrintPage += new PrintPageEventHandler(PrintPage); m_currentPageIndex = 0; printDoc.Print(); } return true; } catch { return false; } } /// <summary> /// Dispose resources /// </summary> public void Dispose() { if (m_streams != null) { foreach (Stream stream in m_streams) stream.Close(); m_streams = null; } } } } 
+1
source

Make sure your SQL server is updated to Service Pack 2 (SP2). There are several compatibility issues with RTM versions ie10 + and SQL Server 2008R2.

ReportViewer print button incompatible with IE 10?

 The following table lists the major releases of SQL Server 2008 R2. Release Product version SQL Server 2008 R2 Service Pack 2 10.50.4000.0 SQL Server 2008 R2 Service Pack 1 10.50.2500.0 SQL Server 2008 R2 RTM 10.50.1600.1 

Microsoft article on server version

Connect to an instance of SQL Server and run the following query:

 Select @@version 
0
source

This link helped me a lot.

[ http://www.msigman.com/ssrs-print-icon-not-appearing-in-internet-explorer-11-not-able-to-print-reports-from-ie11/†[1]

It was suggested 2 ways to solve this problem:

1- install .Net 4.5.1 [ http://www.microsoft.com/en-us/download/details.aspx?id=40773-03►1]

OR 2- Add a file in the browser as described above:

create a new browser file in the App_Browsers folder at the root of your solution. Paste the following text into the file, and then run. The problem must be resolved.

 <browsers> <browser id="IE11Preview" parentID="Mozilla"> <identification> <userAgent match="Trident/(?'layoutVersion'\d+).*rv:(?'revision'(?'major'\d+)(\.(?'minor'\d+)?))" /> <userAgent nonMatch="MSIE" /> <userAgent nonMatch="IEMobile" /> </identification> <capabilities> <capability name="browser" value="IE" /> <capability name="layoutEngine" value="Trident" /> <capability name="layoutEngineVersion" value="${layoutVersion}" /> <capability name="extra" value="${extra}" /> <capability name="isColor" value="true" /> <capability name="majorversion" value="${major}" /> <capability name="minorversion" value="${minor}" /> <capability name="screenBitDepth" value="8" /> <capability name="type" value="IE${major}" /> <capability name="version" value="${version}" /> <capability name="isColor" value="true" /> <capability name="screenBitDepth" value="8" /> <capability name="ecmascriptversion" value="3.0" /> <capability name="jscriptversion" value="6.0" /> <capability name="javascript" value="true" /> <capability name="javascriptversion" value="1.5" /> <capability name="w3cdomversion" value="1.0" /> <capability name="ExchangeOmaSupported" value="true" /> <capability name="activexcontrols" value="true" /> <capability name="backgroundsounds" value="true" /> <capability name="cookies" value="true" /> <capability name="frames" value="true" /> <capability name="javaapplets" value="true" /> <capability name="supportsCallback" value="true" /> <capability name="supportsFileUpload" value="true" /> <capability name="supportsMultilineTextBoxDisplay" value="true" /> <capability name="supportsMaintainScrollPositionOnPostback" value="true" /> <capability name="supportsVCard" value="true" /> <capability name="supportsXmlHttp" value="true" /> <capability name="tables" value="true" /> <capability name="supportsAccessKeyAttribute" value="true" /> <capability name="preferredRenderingType" value="html5" /> <capability name="tagwriter" value="System.Web.UI.HtmlTextWriter" /> <capability name="vbscript" value="true" /> </capabilities> </browser> </browsers> 

If the problem already exists, install compatibility view setting IE11 .

0
source

Source: https://habr.com/ru/post/1200941/


All Articles