我一直在使用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版本不同,但这是相当显著的区别。
1条答案
按热度按时间oxalkeyp1#
结果是:
options
覆盖了css中名称匹配的任何地方,即margin-right
总是被设置为0。rgb
函数的颜色不起作用,我不得不使用十六进制代码代替把这个放在这里以防有人犯和我一样的错误!