Мой код выглядит следующим образом:
Код: Выделить всё
var report = GetReport();
using (MemoryStream stream = new MemoryStream(report))
{
if (stream != null && stream.Length > 0)
{
using (metafile = new Metafile(stream))
{
// Convert Metafile to Bitmap
bitmap = new Bitmap(metafile.Width,metafile.Height);
using (Graphics g = Graphics.FromImage(bitmap))
{
g.DrawImage(metafile, new Point(0, 0));
}
// Configure Print document to be printed
printDocument.PrinterSettings.PrinterName = "printerName";
printDocument.PrintPage += (sender, args) =>
{
args.Graphics.DrawImage(bitmap, args.PageBounds);
};
}
}
}
// Print
printDocument.Print();
Код: Выделить всё
System.Runtime.InteropServices.ExternalException
HResult=0x80004005
Message=A generic error occurred in GDI+.
Source=System.Drawing.Common
StackTrace:
at System.Drawing.SafeNativeMethods.Gdip.CheckStatus(Int32 status)
at System.Drawing.Imaging.Metafile..ctor(Stream stream)
Я пробовал использовать ReportViewer вместо URL-адреса SSRS чтобы избежать использования потока, возвращаемого URL-адресом.
Подробнее здесь: https://stackoverflow.com/questions/787 ... ce-project