HTMLayout: рендеринг картинок с высоким разрешением
От: melihron  
Дата: 06.05.14 16:59
Оценка:
Хочу попробовать заменить треклятый IE этим замечательным движком для печати отчетов, писем и т.д. Все вроде работает просто замечательно, если бы не одно глупое "НО": при печати писем клиентам надо выводить логотип, а он не простой, а с серыми полутонами. У меня есть монохромный png в 600dpi с правильным дизерингом для лазерника. И вот никак не удается его хорошо распечатать. Ощущение такое, что при рендеринге он сначала даунсамплится до 96 dpi (экран), а потом что останется уже апсамплится обратно до 600dpi (принтер) — ну и ессно, результат для печати не годится. Самое обидное, что IE и мозилла рендерят его корректно. Что посоветуете? Спасибо
Re: HTMLayout: рендеринг картинок с высоким разрешением
От: melihron  
Дата: 07.05.14 14:24
Оценка:
Проблема решилась следующим образом: добавил behavior на IMG с перехватом отрисовки. В отладке выяснилось, что HDC принтера установлен в MM_ANISOTROPIC с трансформацией из 96dpi в 600dpi. Таким образом, в самом деле, происходит двойное огрубление — сначала при сжатии до 96 dpi, а потом при растягивании до 600 dpi. Сделал так — сохраняю MapMode, Org и Ext, потом сбрасываю MapMode = MM_TEXT и Org = (0,0), и рисую картинки в родном DPI, потом все возвращаю обратно.

На баг не похоже, логически все правильно. Но спасибо, что есть столько точек подключения к движку! Замечательный продукт.

Хотя заметил ещё такой момент — хотел перехватить DATA_LOADED, чтобы закешировать те же логотипы и прочее барахло, и потом отдавать их в LOAD_DATA, но! Почему-то HTMPrint callback ловит только ADD_BEHAVIOR и LOAD_DATA...

Ща попробую через HTMLite словить DATA_LOADED
на
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.