gpt4 book ai didi

python - 如何使用 Django 将完全渲染的 html 页面转换为 PDF

转载 作者:行者123 更新时间:2023-11-30 23:15:18 27 4
gpt4 key购买 nike

我创建了一个应用程序,它使用 Google map API 对地址进行地理编码并向 map 添加标记。在我看来,它与 Postgis 也有一些交互。那里一切都运转良好。

我遇到的问题是如何从完全渲染的 HTML 文件创建 PDF,以便所有上下文数据和谷歌地图都可以渲染为 pdf。我需要与网络应用程序交互以进行地理编码的人员通过电子邮件发送 pdf 文件。因此,最终结果是将结果转为 pdf 格式并附加到电子邮件中。

我看过Reportlab,它只能通过 View 创建pdf(对此非常有用,但不能满足我的需求)。

我也看过wkhtmltopdf,乍一看它似乎只能从 View 中渲染,除非我遗漏了一些东西。

问:是否可以从渲染的网页创建 pdf(其中包括在客户端创建的 Google map )?如果可能的话,一个简单的例子将不胜感激。

谢谢

编辑:添加工作流程以尝试澄清问题所在

  1. 索引页上有一个文本框,有人可以在其中添加地址提交时,有一个 Google 地理编码器功能,可将表单数据中的纬度和经度发送回 View
  2. 在 View 中,纬度和经度用于查找 3 个最近的位置(在我的 Postgis 数据库中)并呈现到 HTML 结果页面
  3. 在结果页面上,使用 Google map API 创建了 3 个单独的 Google map

我需要将完全渲染的网页转换为 PDF。 Reportlab(例如)在第 2 点之后、第 3 点渲染网页之前调用,因此它无法创建包含这 3 个 Google map 的 PDF。

最佳答案

首先,根据模型- View - Controller 范例,可下载的 PDF 是一个 View - 因此请查看 Django PDF documentation .

如果您想在 PDF 中包含 Google map ,有 3 个选项:

  1. 在客户端上渲染,并打印为 PDF。这依赖于用户实际知道如何执行此操作。
  2. 使用 headless 浏览器使用 Javascript 预渲染页面,将其返回到 Django,然后导出为 PDF。根据服务器的不同,这会很困难。
  3. 使用Google Maps Static Map API生成图像并在 Pisa 等工具中使用它。它的功能比完整的 API 少,但非常适合制作可打印的静态图像。 这样做。

As stated in the bottom of the Django Docs on generating PDFs , Pisa它的工作原理是获取 HTML 页面,然后从中创建一个 PDF,我以前使用过它,这意味着您可以使用 Django 模板来构建页面,然后通过 HTML 到 PDF 处理器运行它,而不是返回它。您只需捕获生成的 PDF 并根据需要将其附加到电子邮件中。

<小时/>

与编辑相匹配的附录。

除了关于 PDF 是 View 的部分之外,上述内容仍然有效。无论如何,静态 map API 应该为您提供需要包含在转换为 PDF 的原始 HTML 中的图像。

关于python - 如何使用 Django 将完全渲染的 html 页面转换为 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28291112/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com