Как из приложения отправить что-либо на принтер?

160
08 июля 2018, 09:00

Как из консольного приложения или приложения WinForms отправить что-либо на принтер?

Answer 1

Минимально необходимо для печати:

using System.Drawing.Printing;
using System.Drawing;
void Print()
{
  PrintDocument printDoc = new PrintDocument();
  printDoc.PrintPage += PrintPageHandler;
  printDoc.Print();
}
void PrintPageHandler(object sender, PrintPageEventArgs e)
{
  //Замените на e.Graphics.DrawImage или любую другую логику
  e.Graphics.DrawString("Привет", new Font("Arial", 14), Brushes.Black, 0, 0);
}

при этом печать будет на дефолтном принтере. PrintDialog позволяет выбрать принтер и настроить некоторые параметры PrintDocument через диалоговое окно, но за печать отвечает именно PrintDocument.

Расширим пример для использования PrintDialog:

PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += PrintPageHandler;
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDoc;
if (printDialog.ShowDialog() == DialogResult.OK) printDialog.Document.Print();

Убираем всплывающие окошки, если в них нет необходимости:

printDoc.PrintController = new StandardPrintController();

По аналогии с добавлением PrintDialog, можно добавить PageSetupDialog и PrintPreviewDialog последовательно передавая им объект PrintDocument.

READ ALSO
Как использовать Costura.Fody для объединения DLL. C#. WinForms

Как использовать Costura.Fody для объединения DLL. C#. WinForms

Как использовать CosturaFody(NuGET) для объединения DLL ?

265
Значение Default на тип int в mysql

Значение Default на тип int в mysql

Дайте мне совет пожалуйстаУ меня есть поля значение, тип которого целое число

246
Mysql подключается к localhost но не может к 127.0.0.1

Mysql подключается к localhost но не может к 127.0.0.1

Подключаюсь как root к mysql, к localhost подключается нормально, а к 1270

181