强制在Firefox上打印背景颜色

11
我正在使用Barby ruby gem,它提供了一种方便的方式来将条形码呈现为HTML
Barby通过在表格中渲染带有td背景的代码来工作。这很有效,因为我不想为每个需要条形码的记录生成和存储图像文件。
由于大多数浏览器默认不打印背景颜色,我需要让条形码在打印时不需要用户更改本地系统上的打印选项。
我不确定如何在Firefox中实现这一点。对于Webkit(Chrome和Safari),这很容易:
td { 
  background: #000 !important;
  -webkit-print-color-adjust: exact;
}

通过热情的谷歌搜索,我并没有找到任何有用的信息:问题几年前就有了,而且我也没有找到更新的内容,因此我想再次提出这个问题。厚边框也不是很好的选择,因为如果条形图之间的关系发生改变,代码中包含的数据也会改变。


令人惊讶的是,最近的一些更改似乎使得该工作与新的color-adjust属性相兼容。MDN甚至还没有为其编写文档,因此我认为它现在(2016年9月)可能仍处于开发中。 - RustyToms
只是提醒一下,使用 !important 确实会产生影响。 - fooquency
2个回答

23

这在Firefox中开始生效(至少版本48.0.2),使用“color-adjust”属性。

color-adjust本来是为此创建的,但现已弃用并被print-color-adjust替代:https://w3c.github.io/csswg-drafts/css-color-adjust/#propdef-print-color-adjust Note in documentation showing color-adjust is deprecated in favor of the more specific print-color-adjust

td { 
  background: #000 !important;
  -webkit-print-color-adjust: exact;
  print-color-adjust: exact;
}

forced-color-adjust属性是2022年新加入的,开始被采用,并在某些情况下可能很有用。 https://developer.mozilla.org/en-US/docs/Web/CSS/forced-color-adjust


1
好的回答。解决了我的问题。 - Braj
4
对于背景颜色运作得很好。有没有办法适用于颜色属性?如果我将颜色设置为白色,则我的颜色不会被打印,否则它就有效。 - Jnanaranjan
1
仍然不是官方的,但覆盖范围相当不错:https://caniuse.com/#search=color-adjust - naught101
@Frédéric 看起来他们已经修复了 https://bugzilla.mozilla.org/show_bug.cgi?id=1436758 (我自己没有测试过) - RustyToms
@Frédéric 看起来他们修复了这个问题 https://bugzilla.mozilla.org/show_bug.cgi?id=1436758 (我自己还没有测试过) - undefined

6
这对我有效:
@media print {
    body {
        -webkit-print-color-adjust: exact; /*Chrome, Safari */
        color-adjust: exact; /*Firefox*/
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接