css 'wkhtmltox'行为随AWS λ至Mac而变化

eufgjt7s  于 2022-12-20  发布在  Mac
关注(0)|答案(1)|浏览(136)

我一直在使用wkhtmltopdf包将html转换为pdf。这在我的电脑上或多或少都能正常工作(Mac)但在AWS Lambda中忽略了一些CSS样式,问题似乎主要出在我的表格上--它们不再有任何边距,应用于<td><th>元素的样式也不再应用,据我所知,这两个版本是相同的(0.12.6)。我正在将该包作为从here下载的层安装到我的Lambda
执行转换的代码如下所示:

options = {
        # "page-size": "Letter",
        "margin-top": "0",
        "margin-right": "0",
        "margin-bottom": "0",
        "margin-left": "0",
        "encoding": "UTF-8",
        "no-outline": True,
        "enable-local-file-access": True,
    }

with open(html_path) as f:
    # wkhtmltopdf is installed in different locations on lambda and local. This
    # allows it to run in both envs
    if os.getenv("WK_PATH") == "local":
        pdfkit.from_file(
            f,
            pdf_path,
            options=options,
        )
    else:
        PDFKIT_CONFIG = pdfkit.configuration(wkhtmltopdf="/opt/bin/wkhtmltopdf")
        pdfkit.from_file(
            f,
            pdf_path,
            options=options,
            configuration=PDFKIT_CONFIG,
        )

你可以看到,当在lambda中运行时,我必须提供库的路径,但其他内容没有改变。样式通过CSS应用于html文件,然后使用上面的代码将其转换为PDF。
有没有人以前见过这个问题,或者有什么变通的建议?我只能假设lambda层和mac版本不同,但这是相当显著的区别。

oxalkeyp

oxalkeyp1#

结果是:

  • 变量options覆盖了css中名称匹配的任何地方,即margin-right总是被设置为0。
  • 使用rgb函数的颜色不起作用,我不得不使用十六进制代码代替

把这个放在这里以防有人犯和我一样的错误!

相关问题