Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.23;
Скачать: CL | DM;

Вниз

печать страницы из 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
1-75243
Павел ...
2003-12-10 16:29
2003.12.23
TStringList.CustomSort();


7-75432
Gregory
2003-10-15 13:14
2003.12.23
Управление сигналом RTS в COM порте.


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


14-75352
Sergeef
2003-11-28 00:19
2003.12.23
Написание игр на Delphi...Целесообразно ли это?


14-75341
LLL
2003-12-01 01:34
2003.12.23
Функции