WeasyPrint转换后发送PDF文件路径给客户端下载
Send PDF file path to client to download after covnersion in 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相关的代码。
您甚至都懒得post相关代码,但无论如何:
如果您正在使用 Python API,您可以在调用 weasyprint.HTML().write_pdf()
时指定输出文件路径,或者将 PDF 作为字节字符串取回,as documented here -然后你可以手动将它保存到一个文件中,你可以将你的用户重定向到某个地方,或者只是将字节串传递给 django 的 HttpResponse
。
如果您使用的是命令行(这对于 Django 应用程序来说会非常令人惊讶...),您还必须指定输出路径...
IOW:我不太明白你的问题。 FWIW,整个文档都在这里:http://weasyprint.readthedocs.io/en/latest/ - 在项目主页上有一个非常明显的 link(FWIW 我就是这样找到它的)。
编辑 :现在您 post 编辑了您的实际代码:答案写在 FineManual(tm):
中
Parameters: target – A filename, file-like object, or None
Returns:
The PDF as byte string if target is not provided or None, otherwise None
(the PDF is written to target.)
IOW,您可以选择传递要生成的文件名并将此文件提供给用户,或者您可以将 Django HttpResponse
作为目标传递,cf this example Django 的文档。
在我的 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相关的代码。
您甚至都懒得post相关代码,但无论如何:
如果您正在使用 Python API,您可以在调用 weasyprint.HTML().write_pdf()
时指定输出文件路径,或者将 PDF 作为字节字符串取回,as documented here -然后你可以手动将它保存到一个文件中,你可以将你的用户重定向到某个地方,或者只是将字节串传递给 django 的 HttpResponse
。
如果您使用的是命令行(这对于 Django 应用程序来说会非常令人惊讶...),您还必须指定输出路径...
IOW:我不太明白你的问题。 FWIW,整个文档都在这里:http://weasyprint.readthedocs.io/en/latest/ - 在项目主页上有一个非常明显的 link(FWIW 我就是这样找到它的)。
编辑 :现在您 post 编辑了您的实际代码:答案写在 FineManual(tm):
中Parameters: target – A filename, file-like object, or None Returns:
The PDF as byte string if target is not provided or None, otherwise None (the PDF is written to target.)
IOW,您可以选择传递要生成的文件名并将此文件提供给用户,或者您可以将 Django HttpResponse
作为目标传递,cf this example Django 的文档。