Быстрая печать растрового изображения на принтер (который может делать bitblt) из win GDI C/C++
Я хотел бы полностью контролировать современный цветной лазерный принтер (который поддерживает BitBlt) -
чтобы иметь возможность печатать в любой точке=точка (скажем, 600DPI) любой из только 8 действительно доступных цветов:
Голубой пурпурный желтый черный C+M=синий C+Y=зеленый M+Y=Красный (8 - й-Белый),
обход блоков преобразования цвета и сглаживания как Windows, так и драйвера принтера?
Был бы очень благодарен за какой-нибудь рабочий пример кода
Что я уже пробовал:
DDB только с этими 8 цветами & BitBlt
Stefan_Lang
IMHO как операционные системы, так и функциональность принтера стали настолько сложными за последние десятилетия, что больше невозможно написать надежный драйвер принтера самостоятельно, даже если вы являетесь экспертом в этой области - гораздо меньше, если вам нужно попросить код.
AFAIK, драйверы принтеров действительно предлагают возможность управлять практически всем уже через API принтера, предоставляемый производителем принтера. Однако он может быть скрыт драйвером, который Windows автоматически устанавливает.
Реальная проблема заключается в том, чтобы написать драйвер - любой драйвер - который не будет автоматически переопределен следующим принудительным обновлением Windows. Или быть выгнанным за то, что он потенциально опасен в соответствии с программой обновления Windows.
Тем не менее, если ваш принтер понимает Postscript, возможно, это даст вам всю необходимую функциональность.
Member 14605311
Спасибо. Я подозревал именно это, но все же надеялся на чудо.
Попробую Постскриптум. Хоу, я бы отправил блок PS на принтер из моей программы на языке Си? Вы можете помочь мне с этим кодом?
Richard MacCutchan
Возможно, вам следует поговорить с производителем принтера, чтобы узнать, есть ли у них комплект SDK, который поможет вам. AFAIK единственный способ управлять принтером напрямую-это каким-то образом подключить его без использования PNP.
Member 14605311
Спасибо. Да, я подозревал именно это, но все же надеялся на чудо.
Попробую Постскриптум. Как бы я отправил блок S PS на принтер из своей программы на языке Си? Вы можете помочь мне с этим кодом?
Richard MacCutchan
Я никогда не пробовал его, но взгляните на него. https://support.microsoft.com/en-us/help/138594/howto-send-raw-data-to-a-printer-by-using-the-win32-api[^].
Member 14605311
Большое спасибо. Это определенно решает половину проблемы: обход ОС.