【问题标题】:Sending canvas object with restfull api in django在 django 中使用 restful api 发送画布对象
【发布时间】:2020-12-29 18:30:48
【问题描述】:

我使用 django 作为我的后端,我使用 restful api 与 react js 前端进行通信。我用 canvas 创建了一个 pdf 发票,我可以通过 django 的邮件系统发送它。但我也想在 网页 上显示 pdf。所以我需要通过 api url 将它发送到前端。我尝试将其作为响应发送,但出现错误: Canvas 类型的对象不是 JSON 可序列化的

我写的发送 pdf 的代码: 返回响应(c, status=status.HTTP_200_OK)

c 代表画布对象,它是一个 pdf

有解决办法吗?或者我如何将pdf发送到前端。 谢谢

【问题讨论】:

    标签: json django pdf canvas django-rest-framework


    【解决方案1】:

    我认为您可以发送 pdf 的静态 url(例如 127:.0.0.1:8000/static/yourfile.pdf),它将由浏览器呈现。您可以在反应前端添加一个按钮,该按钮将重定向到 pdf url。

    【讨论】:

    • 我在他们调用 url 时创建 pdf。因此 pdf 文件不在被请求时创建的项目中。你觉得有可能吗
    • 如果您想在 python 中创建 pdf,随时随地创建 pdf,您只需使用 pyPDF 并将其保存在 django 应用程序的静态文件夹中,然后提供它的 url 并在之后将其删除。其他选项 2 是使用 javascript 创建 pdf,您可以在 json 响应中从 django 发送所有预先计算的数据,然后将其放入 javascript 中的 pdf 中。我想没有办法像您在上面尝试的那样发送序列化 pdf 对象。您可以使用此线程使用 js 生成 pdf,或者在 react 中有可用的库。 stackoverflow.com/questions/742271/…
    • 成功了,谢谢!我有最后一个小问题。当我设计一个 pdf 并将其保存为 canvas.save() 时,它将它保存在项目文件夹中。如何将其寻址到静态文件夹。我使用“from reportlab.pdfgen import canvas”,当我输入 canvas_object.save() 时,它会将其保存到项目文件夹中
    • 我想您只需将生成的 pdf 的目标路径覆盖为 url/static/name.pdf,根据此线程 stackoverflow.com/questions/32485353/…,您只需提供所需位置的路径。在这种情况下,路径将是静态文件夹。我建议您使用 os.path 生成路径。 canvas_object.save('./project/..../static/name.pdf',size='letter')
    猜你喜欢
    • 2018-01-06
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 2023-03-07
    • 2020-10-28
    • 2016-05-26
    • 1970-01-01
    相关资源
    最近更新 更多