Форум: "Сети";
Текущий архив: 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