Использование модального печати с компонентом TEdgeBrowser в Delphi
Современные веб-компоненты часто требуют специфических решений для реализации функционала, который был доступен в более старых версиях. Такая же ситуация и с компонентом TEdgeBrowser, который заменил TWebBrowser в среде разработки RAD Studio. Одной из актуальных задач для разработчиков является возможность использования модального диалога печати с TEdgeBrowser.
Проблема
Разработчики столкнулись с проблемой, что при использовании JavaScript для показа диалога печати браузера Edge, используя код EdgeBrowser.ExecuteScript('window.print();');, диалог не отображается. Несмотря на то, что браузер "мигает" на мгновение, само окно печати не появляется. Это связано с тем, что TEdgeBrowser в своем новом обновлении не использует диалог печати операционной системы, а отображает его внутри своего окна, что ограничивает размер до размера самого компонента.
Решение проблемы
Для решения проблемы можно использовать новую функциональность в Edge WebView, которая была добавлена сравнительно недавно. Для этого необходимо обновить Edge до версии 109.0.1518.46 и Microsoft Edge Runtime до соответствующей версии. В новой версии появился метод ShowPrintUI(), который позволяет открыть диалог печати операционной системы в модальном режиме за пределами самого браузера.
Пример кода
Для использования нового метода в среде Delphi, сначала необходимо включить в проект файл WebView2_TLB.pas, который содержит определение интерфейса ICoreWebView2_16. Этот интерфейс включает в себя, помимо прочего, определение метода ShowPrintUI(). Затем можно отобразить системный диалог печати следующим кодом:
var
WebView: ICoreWebView2_16;
begin
// Проверяем, поддерживает ли браузер интерфейс ICoreWebView2_16
if EdgeBrowser1.DefaultInterface.QueryInterface(ICoreWebView2_16, WebView) = S_OK then
begin
// Если поддерживает, показываем системный диалог печати
WebView.ShowPrintUI(COREWEBVIEW2_PRINT_DIALOG_KIND_SYSTEM);
end
else
begin
// Функционал пока не поддерживается, возможна альтернативная реализация
end;
end;
Дополнительные возможности
Кроме того, интерфейс ICoreWebView2_16 включает методы для прямой печати содержимого браузера в PDF или на предварительно выбранный принтер без показа диалога пользователю.
Заключение
Использование модального печати с компонентом TEdgeBrowser в Delphi требует обновления до последней версии Edge и Microsoft Edge Runtime. После этого, с помощью метода ShowPrintUI(), можно легко реализовать необходимый функционал, следуя предоставленным инструкциям и примеру кода.
Разработчики используют компонент `TEdgeBrowser` в Delphi для реализации модального диалога печати, что стало возможным после обновления до новой версии, предоставляющей метод `ShowPrintUI()`.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.