如何强制 weasyprint 使用 PDF 中的颜色?

问题描述 投票:0回答:3

当我使用时

$ weasyprint table.html table.pdf

https://jsfiddle.net/MartinThoma/0hL29mcc/ 上它会生成一个如下所示的 PDF:

enter image description here

如您所见,标题是黑色的,而不是红色的。而且,桌子不再是条纹了。

weasprint 以某种方式删除了所有颜色。我怎样才能防止这种行为/保留颜色? (我不一定需要使用weasyprint,但我不知道有什么更好的选择)

我用

WeasyPrint version 0.40

我尝试过的事情

  • pandoc table.html -o table.pdf
    :不应用 CSS 页面旋转;不应用CSS
  • wkhtmltopdf table.html out.pdf
    :不应用 CSS 页面旋转; (但应用了一些 CSS - 但不是颜色)
  • import pdfkit;pdfkit.from_file('table.html', 'outpdfkit.pdf')
    :不应用CSS页面旋转(看起来与
    wkhtmltopdf
    相同)
html pdf weasyprint
3个回答
5
投票

主要问题是 Bootstrap 3 包含以下内容:

@media print{
    *,:after,:before {
        color:#000!important;
        text-shadow:none!important;
        background:0 0!important;
        -webkit-box-shadow:none!important;
        box-shadow:none!important
    }
}

所以 weasyprint 实际上是按预期运行的。删除它会得到预期的结果。


3
投票

我也遇到了这个问题,我有一个合适的解决方法。至少就我而言,这似乎是 WeasyPrint 和 Bootstrap 之间的冲突。我在 Python 中使用 WeasyPrint。我重新排序了 CSS 文件列表,将自定义 CSS 放在第一位 - 我认为它需要放在最后。然后我将

!important
修饰符添加到我的
color
background-color
标签中。

例如:

@media print {
    bg-blue {
        background-color: #1e77b4 !important;
    }
}

希望有帮助。


0
投票

如果这对任何人都有用,我通过使用“屏幕”媒体执行

weasyprint
解决了这个问题,如下所示:

weasyprint file.html file.pdf -m screen

默认情况下,weasyprint 使用“打印”媒体(如其他答案所示),但我需要使用“屏幕”媒体的 CSS 样式。

© www.soinside.com 2019 - 2024. All rights reserved.