Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
hatebreed

Предварительный просмотр и печать WebBrowser

14.09.2013, 16:42. Показов 2966. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Стояла задача создать простенький генератор отчетов, который будет содержать результаты работы программы. Пришел к выводу, что самым оптимальным вариантом является HTML отчет, так как прост в создании, не требует сторонних программ для просмотра (например Office или PDF reader). И нет желания создавать отчет через Fast Report, это будет равноценно тому, если мне нужно прихлопнуть муху, а я возьму гранатомет. Если я не прав или есть другие решения, напишите.

Допустим, у меня есть HTML отчет, я могу сделать его просмотр в программе с помощью WebBrowser. Но встает вопрос предварительного просмотра печати страницы. Если кликнуть ПКМ по WebBrowser, то выпадет контекстное меню как и в IE, в котором есть «предварительный просмотр…». В принципе то, что нужно, но:

Вопрос №1
Окно предварительного просмотра, почему то долго грузиться. Хотя и в IE оно долго грузиться. В Chrome моментально отображается как будет выглядеть распечатываемая HTML страница. Можно ли это исправить без установки дополнительных компонентов и библиотек?

Вопрос №2
Я не хочу открывать предварительный просмотр при нажатии на кнопку формы, не хочу пользоваться меню IE. Как это сделать? Я видел много примеров (http://delphi.cjcsoft.net/viewthread.php?tid=42817) на Delphi, но как переделать на C++ не пойму.

Например:
Delphi
1
2
3
4
5
6
7
// Print with Printer Dialog
procedure TForm1.Button3Click(Sender: TObject);
var
    vaIn, vaOut: OleVariant;
begin
    WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
end;
Я пишу:
C++
1
2
3
4
5
6
7
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    OleVariant vaIn;
    OleVariant vaOut;
    WebBrowser1->Navigate("http://yandex.ru/");
    WebBrowser1->ControlInterface->ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
}
Но выходит ошибка «Ambiguity between 'OLECMDID_PRINT' and 'Shdocvw::OLECMDID_PRINT'». Подскажите пожалуйста в чем дело.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.09.2013, 16:42
Ответы с готовыми решениями:

Предварительный просмотр
double VerticalResolution=((double)Width)/297.0; double HorizontalResolution=((double)Height)/210.0; Graphics::TBitmap *Buffer; ...

OleContainer1 (предварительный просмотр)
подскажите пожалуйста, как программно отобразить документ doc или docx для чтения для предварительного просмотра, есть у документов ...

Предварительный просмотр в Borland C++ Builder
Есть кусок программы для предварительного просмотра: Image1->Picture->Bitmap->Width=Screen->Width; ...

1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33378 / 21502 / 8236
Регистрация: 22.10.2011
Сообщений: 36,899
Записей в блоге: 11
14.09.2013, 16:57
C++
1
2
    WebBrowser1->ControlInterface->ExecWB(Shdocvw::OLECMDID_PRINT,
        Shdocvw::OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut);
должно решить вторую проблему. С первой - вряд ли, если оно и в IE тормозит, то точно так же будет тормозить в обертке над IE...

Хотя лучше делать просмотр по OnDocumentComplete, а не сразу после Navigate.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.09.2013, 16:57
Помогаю со студенческими работами здесь

Предварительный просмотр печатной формы
Помогите реализовать предварительный просмотр печатной формы.Выводится на печать будет image.

Word и компонент OleContainer1 (предварительный просмотр)
Создать объект из файла удалось программно, вопрос возможно ли с помощью этого компонента отобразить файл doc или docx на который...

Как сделать предварительный просмотр перед печатью?
Printer()->BeginDoc(); Printer()->Canvas->Font->Pitch=fpFixed; for(int i = 0; i < DBMemo1->Lines->Count; i++) { ...

Печать и предварительный просмотр
Как их сделать без VCL и MFC? Имеется 3 похожие задачи: 1. Печать и предварительный просмотр таблицы. 2. Печать и предварительный...

Предварительный просмотр и печать листа Excel
Помогите, ничего нормального не нашел. Как реализовать печать и предварительный просмотр листа в книге exel, из формы. И если возможно,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru