Написание виртуального принтера

Тема в разделе "WASM.WIN32", создана пользователем stbzh, 21 ноя 2006.

  1. stbzh

    stbzh New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    16
    Адрес:
    Ukraine
    Есть задача: создать вируальный принтер для печати в него любых документов. Выходные файлы - emf или jpg. Win XP.
    Можно ли обойтись без написания драйвера. Если нет - с чего начать (драйвер еще ни разу не писал, хотя и пытался).
    У кого есть какие соображения по этому поводу? Алгоритмы, ссылки, книги, статьи? Буду благодарен за любую информацию.
     
  2. Guest

    Guest Guest

    Публикаций:
    0
    Низнаю у меня вроде по дефолту стоит в системе виртуальный принтер Microsoft Office Document Image Writer. А вообще это теоретически не проблема, печать идет на HDC объект принтера, то есть с таким же успехом можно и в картинку напечатать. Глянь печать в нотпаде из сорцев ReactOS.
    P.S. Раз есть ссылка на объект - HDC принтера, значит ее можно перехватить (подменить функцию ее получения). Ну вроде понятно что драйвер не нужен.
    Код (Text):
    1.     PRINTDLGW printer;
    2.     printer.lStructSize = sizeof(printer);
    3.     printer.hwndOwner   = hMain;
    4.     printer.hInstance   = hInst;
    5.     printer.Flags       = PD_RETURNDC;
    6.     printer.nFromPage   = 0;
    7.     printer.nMinPage    = 1;
    8.     printer.nToPage     = 0;
    9.     printer.nMaxPage    = 0xffff;
    10.     printer.nCopies     = (WORD)PD_USEDEVMODECOPIES;
    11.  
    12.     if (!PrintDlgW(&printer)) return;
    13.     if (printer.hDC == NULL) return;
    Вот пример получения HDC через диалог запроса на печать.
     
  3. stbzh

    stbzh New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    16
    Адрес:
    Ukraine
    Спасибо. Обдумаю. А где посмотреть эту самую ReactOS?
     
  4. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Думаю нужно посмотреть в DDK, там вроде как работающие сорцы дров принтера лежат.
    Можно переделать на свой лад.
     
  5. stbzh

    stbzh New Member

    Публикаций:
    0
    Регистрация:
    8 июн 2004
    Сообщения:
    16
    Адрес:
    Ukraine
    Это конечно нужно было сделать в первую очередь, и я вообще другого пути то и не представляю, но задача поставлена написать эту дрянь (виртуальный принтер) на VB.NET!!! Меня это конечно неслабо озадачило. Вот я и думаю, может есть какие то хитрые подходы?
    Мне вот советовали посмотреть на Distiller акробатовский... Кто нибудь знает, как он устроен?