Главная страница
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.075 c
14-75353
SemFLY
2003-11-26 17:43
2003.12.23
Продам ноутбук !


14-75323
Думкин
2003-12-01 06:38
2003.12.23
С днем рождения! 1 декабря.


8-75270
K-Sergey
2003-08-15 10:55
2003.12.23
Как получить картинку с WebCam


14-75379
Vovchik_A
2003-11-28 17:06
2003.12.23
Мда... Я плакалъ...


4-75445
Mielofon
2003-10-24 19:16
2003.12.23
Как поменять ресурсы прямо в exe-файле.