在 Chromium 中打印包含 SVG 图像的网页时出现问题

Problem in printing a webpage containing SVG images in Chromium

提问人:aes temp 提问时间:4/10/2022 最后编辑:aes temp 更新时间:4/10/2022 访问量:281

问:

我有一个包含以下内容的 html 文件:

<html>
<body>
<object data="https://upload.wikimedia.org/wikipedia/commons/0/09/America_Online_logo.svg" type="image/svg+xml"></object>
</body>
</html>

如您所见,您可以使用 chrome 打开它并打印出来。 但是如果我使用Chromium.Print方法,它会打印空页。

请注意,这只是一个示例。所有SVG图像都有同样的问题。

我使用 Delphi 10.3.2 和 CEF4Delphi。

有人可以指导我吗?

Delphi SVG 打印 Chromium

评论

0赞 AmigoJack 4/10/2022
你真的真的是说印刷吗?不渲染 PDF 文件?
0赞 aes temp 4/10/2022
是的。我的意思是打印(我通过 Microsoft 打印到 pdf 和 nitro pdf 来检查它)。使用 Chromium printtopdf 也会产生相同的结果。
0赞 aes temp 4/10/2022
因此,问题与printtopdf方法无关。它也与打印方法有关。
0赞 aes temp 4/10/2022
简单地说: * 网页在浏览器(Firefox、Chrome,...)中正确显示和打印 * 网页显示正确,但在 Chromium 中打印为空。

答:

2赞 Salvador Díaz Fau 4/10/2022 #1

这很可能是由 CEF 问题 #3297 引起的,该报告中描述的解决方法有效。

在 GlobalCEFApp.StartMainProcess 调用之前添加以下代码行:

GlobalCEFApp.DisableSiteIsolationTrials := True;

我使用最新的 CEF4Delphi 版本测试了此解决方法,该版本使用 CEF 100.0.14 和 MiniBrowser 演示。使用 TChromiumCore.Print 和 TChromiumCore.PrintToPDF 正确打印示例 HTML。

评论

0赞 aes temp 4/12/2022
非常感谢。您的解决方案解决了问题。但似乎这个标志的默认值应该是真的!
0赞 Salvador Díaz Fau 4/12/2022
Chromium 在 Chromium 70 中启用了站点隔离,作为针对某些类型的安全错误的额外安全措施。chromium.org/Home/chromium-security/site-isolationCEF在本期中实现了该功能:bitbucket.org/chromiumembedded/cef/issues/2498/...不建议在默认情况下禁用站点隔离。