首页 > 解决方案 > Weasyprint 输出格式问题 - 如何使用 CSS @page?

问题描述

我曾经使用 wkhmtltopdf 打印一些网页,但不幸的是它不再适用于一些现代网站。

我找到了我在命令行中尝试过的 weasyprint。输出包含所有内容,但文本可能由于页面大小而被裁剪。该网站告诉这是可以在 CSS 中自定义的(https://weasyprint.readthedocs.io/en/stable/tutorial.html#adjusting-document-dimensions)。我不是网络专家,也不知道在这里做什么。我应该复制和编辑网页的源代码吗?那应该插在哪里呢?

这是我想以 pdf 格式正确打印的示例网页: https ://korben.info/8-clients-alternatifs-pour-spotify.html

有没有人成功用 weasyprint 正确打印?

谢谢您的帮助。

标签: linuxshellcommand-lineweasyprint

解决方案


调整文档尺寸

目前,WeasyPrint 不支持通过命令行标志调整页面大小或文档边距。这最好通过 CSS @page at-rule 来完成。考虑以下示例:

@page {
  size: Letter; /* Change from the default size of A4 */
  margin: 2.5cm; /* Set margin on each page */
}

@page 是一个 CSS 媒体查询,所以你必须在 .css 文件中写下代码。
完成后,您可以致电

weasyprint -s path/to/css/file 输入输出

请注意,复杂的页面通常由 weasyprint 渲染不好,因为几乎没有不支持的样式标签(calc、var、精确轴上的溢出、ecc..)。
让我说,像 taht 一样工作是一团糟,如果您需要做复杂的事情,请考虑将 weasyprint 作为 Python 库而不是在独立模式下使用,这样您就可以处理源代码并在您需要做的任何事情中获得更好的结果。

希望能帮助到你。
嘿嘿。


推荐阅读