有没有办法使用 Python 从 HTML/CSS/Javascript 创建 PDF 文档,而不引入任何操作系统级依赖项?
似乎每个现有的解决方案都需要特殊的补充软件,但在审查 PDF 格式规范和 HTML/CSS/Javascript 渲染后,似乎没有理由认为 Python 解决方案没有它们就不能存在。有些解决方案很接近,例如pyppeteer,但它仍然依赖于本地无头 Chrome 安装。这些依赖关系意味着微服务无法被利用,尽管 PDF 生成对于微服务来说似乎是一个可行的用例。
虽然类似的问题在 SO 上多次出现,但似乎没有显示出一种无需在操作系统上安装专门依赖项的可行技术。
一些类似的问题通常会推荐wkhtmltopdf或已经过时(例如,将 PDF 打印支持移到 Chrome 之外现在已经死了):
如果我不知何故错过了一个可行的方法,请随时将其标记为重复项以表示感谢!
2021 年 2 月编辑:看来该cefpython项目可能会满足这些需求 - PDF 打印支持似乎可以在不久的将来实现。
2023 年 11 月编辑:仍然没有解决方案,cefpython现在似乎是一个死项目。如果利用微服务,可能值得考虑针对此用例使用本机 Node 环境而不是 Python。
因此,为了澄清和正式化其他人所说的话:
如果您想从 HTML/CSS/javascript 内容创建 PDF 文档,您必须需要一个javascript 引擎(因为如果它影响文档的视觉效果,您显然需要执行 javascript)。这是您需要的最复杂的组件。
就目前而言,还没有一个用纯 python 编写的、维护良好的 ECMAscript 兼容引擎(这将是一个巨大的项目)……可能永远不会有这样的引擎,因为语言的编译器和虚拟机需要高性能,因此通常用高性能低级语言编写。
因此,您始终需要为此编译的二进制文件和 HTML 渲染器,它们不太复杂,但如果在浏览器中使用,也需要高性能,所以通常它们也是 C++ 或类似的。
JavaScript 引擎和 HTML 渲染器是浏览器的主要部分,因此无头浏览器可以很好地解决这一需求。
| 归档时间: |
|
| 查看次数: |
9631 次 |
| 最近记录: |