html - Firefox 打印页面 - 白色字体颜色覆盖为较深的颜色
问题描述
我正在用 html 创建报告,并希望用户能够通过浏览器的本机打印功能将它们下载为 PDF。即 ctrl + P 或 cmd + p
我在 Firefox 中打印时发现了一个问题,浏览器似乎不允许以白色字体颜色打印。
预期的行为:
假设我有一个带有紫色背景颜色和白色文本的基本 div。我希望浏览器能够完全像那样渲染该元素,并且也像那样将页面打印为 pdf。
实际行为:
仅在 Firefox 中,浏览器会将任何被认为太浅的字体更改为黑色。这可以是白色的字体颜色或接近白色的任何颜色,即浅灰色。
有没有办法使用 CSS 或其他方法,我可以强制它打印到 PDF 任何白色字体颜色完全白色?
值得注意的是:我有一个类似的问题,Firefox 没有在元素上渲染背景颜色,我通过在没有背景颜色渲染的元素上使用以下 CSS 规则解决了这个问题,但这似乎并不能修复光线字体颜色问题:
-webkit-print-color-adjust: exact;
color-adjust: exact;
我还包含了一些能够复制此问题的代码:
<html>
</head>
<body>
<section class="purple">
<div class="page">
<div class="oval single">day-to-day</div>
</div>
</section>
<style>
.oval {
position: absolute;
width: 300px;
height: 60px;
top: 45px;
right: -50px;
border-radius: 50%;
color: #ffffff!important;
text-align: left;
line-height: 24px;
opacity: 0.4;
padding: 15px 15px 15px 50px;
}
.oval span {
color: #ffffff!important;
}
.oval.sub{
top: 108px;
}
.oval.single{
top: 80px;
}
.page {
font-size:24px;
line-height: 34px;
position: relative;
width:1160px;
height:1671px;
padding:100px;
page-break-after: always;
color:#595959;
}
*, body {
-webkit-print-color-adjust: exact !important;
font-family: 'Source Sans Pro', 'Arial', sans-serif;
}
.purple .oval {
background-color: #3c0c5b;
-webkit-print-color-adjust: exact;
color-adjust: exact;
}
</style>
</body>
</html>
如果您将其保存到 html 文件并尝试通过 ctrl + p 或 cmd + p 打印页面,您将看到它在浏览器中呈现为 html 而不是在 PDF 中。
解决方案
一种解决方法是将文本设置为透明,然后将 text-shadow 设置为所需的打印颜色。
使用此解决方案,我在 Firefox 70.0.1 中取得了成功。
<style>
.oval {
position: absolute;
width: 300px;
height: 60px;
top: 45px;
right: -50px;
border-radius: 50%;
color: transparent;
text-shadow: 0 0 0px #fff;
text-align: left;
line-height: 24px;
opacity: 0.4;
padding: 15px 15px 15px 50px;
}
...
</style>
推荐阅读
- python - Google Foobar 解决方案适用于 Jupyter 笔记本,但不适用于 Google 终端
- mysql - 无法跟踪问题 this.stack.push(layer); 在 node.js 中
- git - 如果我的客户端和服务器位于不同的文件夹中,如何部署到 Heroku?
- android - Android Delphi 10.4 中的自定义字体不会在运行时加载
- python - 如何将列表中的值附加到所需的值?
- ios - 从 Objective-c 到双数组 C 代码函数参数
- python - 如何在 Python 中生成带有一些 None 值的随机数列表?
- javascript - 如何超链接到html
- shell - 从每个子文件夹复制前 'n' 个文件 Unix
- python - 如何将对象转换为在数据框中浮动