fix: printing PDF via webContents.print() (#47377)

fix: printing PDF via webContents.print()
This commit is contained in:
Shelley Vohr 2025-06-06 20:20:37 +02:00 committed by GitHub
parent 6606230813
commit 09a0926c5b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -2951,12 +2951,15 @@ void OnGetDeviceNameToUse(base::WeakPtr<content::WebContents> web_contents,
print_settings.Set(printing::kSettingDpiVertical, dpi.height()); print_settings.Set(printing::kSettingDpiVertical, dpi.height());
} }
auto* print_view_manager = content::RenderFrameHost* rfh = GetRenderFrameHostToUse(web_contents.get());
PrintViewManagerElectron::FromWebContents(web_contents.get()); if (!rfh)
return;
auto* print_view_manager = PrintViewManagerElectron::FromWebContents(
content::WebContents::FromRenderFrameHost(rfh));
if (!print_view_manager) if (!print_view_manager)
return; return;
content::RenderFrameHost* rfh = GetRenderFrameHostToUse(web_contents.get());
print_view_manager->PrintNow(rfh, std::move(print_settings), print_view_manager->PrintNow(rfh, std::move(print_settings),
std::move(print_callback)); std::move(print_callback));
} }
@ -3002,12 +3005,15 @@ void WebContents::Print(gin::Arguments* args) {
} }
if (options.IsEmptyObject()) { if (options.IsEmptyObject()) {
auto* print_view_manager = content::RenderFrameHost* rfh = GetRenderFrameHostToUse(web_contents());
PrintViewManagerElectron::FromWebContents(web_contents()); if (!rfh)
return;
auto* print_view_manager = PrintViewManagerElectron::FromWebContents(
content::WebContents::FromRenderFrameHost(rfh));
if (!print_view_manager) if (!print_view_manager)
return; return;
content::RenderFrameHost* rfh = GetRenderFrameHostToUse(web_contents());
print_view_manager->PrintNow(rfh, std::move(settings), std::move(callback)); print_view_manager->PrintNow(rfh, std::move(settings), std::move(callback));
return; return;
} }