Отправка документа на печать

134
18 января 2020, 04:00

На сервере генерирую документ 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
}
Answer 1

Сделал пока что таким образом:

  1. Переводим worksheet в Bitmap.
  2. Затем Bitmap в BitmapSource
  3. После чего открываем окно выбора принтера и отправляем в него BitmapSource

Код:

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");
}
READ ALSO
SmtpClient. Отправка Email

SmtpClient. Отправка Email

Пытаюсь отправить Email, используя SmtpClientЕсли отправляю на 25 порт, все работает

131
System.NullReferenceException: “Ссылка на объект не указывает на экземпляр объекта.” При добавлении в список

System.NullReferenceException: “Ссылка на объект не указывает на экземпляр объекта.” При добавлении в список

Я пытаюсь реализовать добавление некоторого сигнала в список (Signals), внутри каждого signal другой список c данными (chunk)Вот код:

108
Перевод binary to string

Перевод binary to string

Получилось перевести текст в binary, но обратно не получается

109
Фильтрация по dataGrid в wpf c#

Фильтрация по dataGrid в wpf c#

Делаю аис для аэропорта, в рамках курсового проектаДля удобного использования бд решил делать фильтрация в реальном времени

128