На сервере генерирую документ excel и отправляю его на клиентское приложение. Для генерации использую библиотеку ASPOSE. По итогу на клиенте имею массив byte[], который могу преобразовать в Workbook и Worksheet. И вот тут главный вопрос, каким образом можно открыть стандартное диалоговое окно выбора принтера и отправить на печать документ находящийся в одном из перечисленных мною состояний (byte[], Workbook, Worksheet) ?
var memoryStream = new MemoryStream(workbookBytes);
var workbook = new Workbook(memoryStream);
var worksheet = workbook.Worksheets[0];
var printDialog = new PrintDialog();
var print = printDialog.ShowDialog();
if (print == true)
{
// Печать workbookBytes или workbook или worksheet
}
Сделал пока что таким образом:
Код:
var memoryStream = new MemoryStream(workbookBytes);
var workbook = new Workbook(memoryStream);
var worksheet = workbook.Worksheets[0];
var options = new ImageOrPrintOptions
{
OnePagePerSheet = true,
ImageFormat = ImageFormat.Jpeg
};
var sheetRender = new SheetRender(worksheet, options);
var bitmap = sheetRender.ToImage(0);
var intPtr = bitmap.GetHbitmap();
var bitmapSource = Imaging.CreateBitmapSourceFromHBitmap(intPtr, IntPtr.Zero, Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
var printDialog = new PrintDialog();
var print = printDialog.ShowDialog();
if (print == true)
{
var drawingVisual = new DrawingVisual();
using (var dc = drawingVisual.RenderOpen())
{
dc.DrawImage(bitmapSource, new Rect(0, 0, bitmapSource.Width, bitmapSource.Height));
}
printDialog.PrintVisual(drawingVisual, "Print Document Image");
}
Продвижение своими сайтами как стратегия роста и независимости