Печать отчетов SSRS из проекта службы WorkerC#

Место общения программистов C#
Anonymous
Печать отчетов SSRS из проекта службы Worker

Сообщение Anonymous »

Я работаю над проектом рабочей службы, и у меня возникла проблема: я хочу распечатать отчет, полученный с сервера SSRS. Проблема на данный момент заключается в том, что я использую System.Drawing.Graphics для рисования документа из массива байтов, который преобразуется в поток, и поток добавляется в метафайл, метафайл необходимо преобразовать в растровое изображение, и растровое изображение передается в Graphics.DrawImage для печати и завершения рисования документа. Я продолжаю сталкиваться с проблемой в метафайле, из-за которой выдается эта ошибка: «System.Runtime.InteropServices.ExternalException: 'В GDI+ произошла общая ошибка».
Мой код выглядит следующим образом:

Код: Выделить всё

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)
Любая помощь будет высоко оценена, даже если это другой способ распечатать файл из SSRS.
Я пробовал использовать ReportViewer вместо URL-адреса SSRS чтобы избежать использования потока, возвращаемого URL-адресом.

Подробнее здесь: https://stackoverflow.com/questions/787 ... ce-project

Вернуться в «C#»