Перехват печати принтера
От: istok20  
Дата: 14.10.13 21:35
Оценка:
пошерстил в хистори форума, но так и не нашел ответа на вопрос:

есть ли типовые решения (видимо это драйвер+апи) для перехвата печати принтера (с распечатываемыми изображениями) ?
Re: Перехват печати принтера
От: anonymous185  
Дата: 15.10.13 05:57
Оценка:
можно в процессе перехватывать следуюшие апи:



int StartDocW(HDC hdc, const DOCINFO *lpdi);
создать контекст асоциированый с hdc.
создать и сохранить в контексте свой CompatibleDC размером ( GetDeviceCaps(hdc, HORZRES), GetDeviceCaps(hdc, VERTRES))
создать файл для логирования , базируясь на lpdi->lpszDocName



int EndPage(HDC hdc);
найти контекст асоциированый с hdc. логировать текущую каритинку в hdc.


int EndDoc(HDC hdc);
удалить контекст асоциированый с hdc.

возможно нужно будет перехватывать и другие апи, например int StartPage(HDC hDC);
Re: Перехват печати принтера
От: Eugene Lomovsky  
Дата: 15.10.13 09:37
Оценка:
Здравствуйте, istok20, Вы писали:

I>пошерстил в хистори форума, но так и не нашел ответа на вопрос:


I>есть ли типовые решения (видимо это драйвер+апи) для перехвата печати принтера (с распечатываемыми изображениями) ?


Если необходимо модифицировать изображение, знать кто и что печатает, то задача очень сложная. Есть варианты с созданием виртуального принтера (вся печать идет через него, а потом отправляется на физический) — головная боль с разными драйверами.. А для модификации необходимо много чего патчить.. Всякие Adobe имеют свою точку зрения на печать..
Re[2]: Перехват печати принтера
От: istok20  
Дата: 15.10.13 22:26
Оценка:
EL>Если необходимо модифицировать изображение, знать кто и что печатает, то задача очень сложная.

нет, модифицировать не нужно, просто получить себе копию распечатываемого изображения
Re[2]: Перехват печати принтера
От: mike_rs Россия  
Дата: 18.10.13 09:42
Оценка:
Здравствуйте, anonymous185, Вы писали:

A>можно в процессе перехватывать следуюшие апи:


этого недостаточно для полноценного перехвата, т.к. есть direct write, спулер, а также всяческие полусофтовые принтеры со своим принт процессором. Нормально задача не решается в принципе, более-менее удовлетворительно — тотальными перехватами GDI функций и функций прямого доступа к принтеру с соотв. постпроцессинговой обработкой (т.к. есть PS/PCL принтеры например, то надо этот PS/PCL файл потом обработать как-то)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.