Есть задача: создать вируальный принтер для печати в него любых документов. Выходные файлы - emf или jpg. Win XP. Можно ли обойтись без написания драйвера. Если нет - с чего начать (драйвер еще ни разу не писал, хотя и пытался). У кого есть какие соображения по этому поводу? Алгоритмы, ссылки, книги, статьи? Буду благодарен за любую информацию.
Низнаю у меня вроде по дефолту стоит в системе виртуальный принтер Microsoft Office Document Image Writer. А вообще это теоретически не проблема, печать идет на HDC объект принтера, то есть с таким же успехом можно и в картинку напечатать. Глянь печать в нотпаде из сорцев ReactOS. P.S. Раз есть ссылка на объект - HDC принтера, значит ее можно перехватить (подменить функцию ее получения). Ну вроде понятно что драйвер не нужен. Код (Text): PRINTDLGW printer; printer.lStructSize = sizeof(printer); printer.hwndOwner = hMain; printer.hInstance = hInst; printer.Flags = PD_RETURNDC; printer.nFromPage = 0; printer.nMinPage = 1; printer.nToPage = 0; printer.nMaxPage = 0xffff; printer.nCopies = (WORD)PD_USEDEVMODECOPIES; if (!PrintDlgW(&printer)) return; if (printer.hDC == NULL) return; Вот пример получения HDC через диалог запроса на печать.
Думаю нужно посмотреть в DDK, там вроде как работающие сорцы дров принтера лежат. Можно переделать на свой лад.
Это конечно нужно было сделать в первую очередь, и я вообще другого пути то и не представляю, но задача поставлена написать эту дрянь (виртуальный принтер) на VB.NET!!! Меня это конечно неслабо озадачило. Вот я и думаю, может есть какие то хитрые подходы? Мне вот советовали посмотреть на Distiller акробатовский... Кто нибудь знает, как он устроен?