Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];

Вниз

печать страницы из TWebBrowser   Найти похожие ветки 

 
Amirka   (2003-10-26 13:19) [0]

Здравствуйте!
Я пишу программу с использованием MIME -фильтра и TWebBrowser - программа берет зашифрованный html файл на диске, в памяти расшифровывает и отображает в TWebbrowser.
Вопрос: как напечатать паказанную страницу - стандартная команда ExecWB печатает зашифрованный файл (естественно) - то есть как отдать страницу на печать не записывая расшифрованный контент на диск (если такое вообще возможно)?
Заранее спасибо.


 
Дмитрий В. Белькевич   (2003-10-26 14:00) [1]

Попробуй печатать на канвас битмапа, потом битмап - на канвас принтера.

if WebBrowser1.Document <> nil then
try
WebBrowser1.Document.QueryInterface(IViewObject, ViewObject);
while ViewObject = nil do
Application.ProcessMessages;
if ViewObject <> nil then
try
SourceDrawRect := Rect(0, 0, TempBitmap.Width, TempBitmap.Height);
pptd.tdSize := sizeof(pptd);
pptd.tdDriverNameOffset := 0;
pptd.tdDeviceNameOffset := 0;
pptd.tdPortNameOffset := 0;
pptd.tdExtDevmodeOffset := 0;
ViewObject.Draw(DVASPECT_CONTENT, 1, nil, @pptd,
Printer.Handle, TempBitmap.Canvas.Handle, @sourceDrawRect, nil, nil, 0);
finally
ViewObject._Release;
end;
except
end;


p.s. ну и потрахался я с этим кодом, пока заставил viewobject.view рисовать с нужным разрешением :(. Но, тем не менее, заставил делать то, что нужно.


 
Дмитрий В. Белькевич   (2003-10-26 14:07) [2]

Да, и еще:

TempBitmap.Height := round(WebBrowser1.Height * Ratio);
TempBitmap.Width := round(WebBrowser1.Width * Ratio / 0.9);

ratio считается, как соотношение разрещений экрана и принтера, тип pptd - tagDVTARGETDEVICE.


 
Amirka   (2003-10-26 19:38) [3]

Спасибо за ответ, но у меня, конечно, возникли трудности :)).
- viewobject все же не хочет рисовать с нужным разрешением. Разрешение экрана я возьму из screen.height(width), разрешение принтера у меня 300*300 - я беру и делю одно на другое (так ли это?)- результат (ratio) ведь должен быть меньше единицы (если у меня экран стоит на 1024*768?. Программа вылетает с access violation.
Прошу прощения за глупые вопросы.


 
Дмитрий В. Белькевич   (2003-10-26 20:47) [4]

Гм. Извини, немного неверно объяснил. Разрешение экрана у тебя 72 dpi. Разрешение принтера - 300x300. Т.е. ratio будет 300/74. Ratio почти всегда (разве что на каких матричниках - нет) больше 1.

>Программа вылетает с access violation.

Потрассируй на каком месте - там вроде все возможные затычки сделаны. Велетать не должно. Аааа. Кажется понял. Ты, вероятно, bitmap не создаешь. TempBitmap:=TBitmap.Create напиши в самом начале процедуры. Больше имхо там вылетать нечему.

>Прошу прощения за глупые вопросы.

Отчего ж глупые - вполне себе вопросы, иногда как напишут, блин, хоть стой, хоть падай.



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2003.12.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-75263
Димон
2003-12-10 10:42
2003.12.23
Сортировка в ListView


14-75401
Данёк
2003-11-27 10:55
2003.12.23
Мой сайток


14-75356
Undert
2003-11-29 19:58
2003.12.23
Apollo ?


3-75120
Evyshka
2003-11-28 11:49
2003.12.23
Обновление на основе двух таблиц


3-75096
visnuk
2003-12-01 15:53
2003.12.23
Вопрос по исключительным ситуациям





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский