2010-04-02 2 views

ответ

3

Принтер моделируется в Win32 как набор растровых изображений. Это обернуто PrintDocument, которое в основном устанавливает обратный вызов, который позволяет рисовать каждую страницу по отдельности и отправлять их по очереди буферизу печати, который затем отправляет данные (обычно в формате .ps) на принтер.

Как работают современные принтеры, они рисуют страницы, а не текст. Только старые школьные матричные принтеры рисовали текст по характеру, по-потоковому. Они использовали специальный файл PRN:. Однако это потеряло всякий смысл в современной среде.

Хорошей новостью является то, что с классом PrintDocument очень легко работать, вы получаете объект Graphics для каждой страницы, который вы можете использовать для печати текста в любом месте страницы, а также для рисования графики.

Вы можете имитировать потоковый принтер, если хотите, кэшируя все данные, а затем просто вызываете DrawText для каждой страницы.

1

Построение Windows Forms приложения, вы можете думать о принтере в качестве имен Graphics Device. System.Drawing.Printing предоставляет услуги печати, связанные для приложений Windows Forms.

Если вы хотите распечатать приложение Windows Presentation Foundation (WPF), см. Пространство имен System.Printing. Он предоставляет классы, которые позволяют автоматизировать управление серверами печати, очередями печати и заданиями печати.

0

С .Net 3.0 вы можете, используя PrintSystemJobInfo.JobStream

При создании PrintJob в спулере, например,

var job = LocalPrinter.GetDefaultQueue().AddJob(); 

Вы можете написать в

job.JobStream 

Закрытие этого потока очереди его на печать. Интересно, что можно использовать этот поток для записи управляющих кодов и текста общего/текста только принтера (например, LPT1 принтера влияние параллельного порта)

Смежные вопросы