在WeasyPrint中进行covnersion后,将PDF文件路径发送到客户端进行下载

时间:2016-09-23 11:09:56

标签: python django weasyprint

在我的Django应用程序中,我使用WeasyPrint将html报告转换为pdf。我需要将转换后的文件发送回客户端,以便下载它。但是我没有在WeasyPrint网站上看​​到任何代码,我们可以在这里找到保存文件的路径或以任何方式知道文件的保存位置。

如果我对路径进行硬编码,例如D:/Python/Workspace/report.pdf并尝试通过javascript打开它,则只是说该地址未被理解。

有什么更好的方式来解决这个问题?

我的代码:

 HTML(string=htmlContent).write_pdf(fileName,
        stylesheets=[CSS(filename='css/bootstrap.min.css')])

这是与生成PDF文件的WeasyPrint相关的所有代码。

1 个答案:

答案 0 :(得分:0)

你甚至不打算发布相关代码,但无论如何:

如果你正在使用Python API,你可以在调用weasyprint.HTML().write_pdf()时指定输出文件路径,或者将PDF作为字节串返回as documented here - 然后你可以手动保存它在某个地方,您可以将用户重定向到或只是将字节串传递给django' s HttpResponse

如果您正在使用命令行(这在Django应用程序中会非常令人惊讶......),您还必须指定输出路径......

IOW:我真的不明白你的问题。 FWIW,整个文档在这里:http://weasyprint.readthedocs.io/en/latest/ - 在项目主页上有一个非常明显的链接(这就是我发现FWIW的方式)。

编辑:现在您发布了实际代码:答案是在FineManual(tm)明确写的:

  

参数:target - 文件名,类文件对象或None   返回:
  如果未提供目标,则将PDF作为字节字符串或无,否则为无   (PDF写入目标。)

IOW,您要么选择传递要生成的生成文件的文件名并将此文件提供给用户,要么您可以将Django HttpResponse作为目标传递,在Django中使用cf this example&# 39; s doc。