weasyprint“文档没有属性write_png”

问题描述 投票:0回答:1

我正在用 Python 和 Django 编写一个 Web 应用程序。我使用 weasyprint 编写 pdf 文档,我想使用

write_png()
获取每个 pdf 的 png 缩略图。 这是我的
views.py
:

pdf_letter = weasyprint.HTML(string=letter, base_url=static_url).render(
                stylesheets=[weasyprint.CSS(static_url + "/abrechnung/css/print-portrait.css")]
                )
pdf_table = weasyprint.HTML(string=table).render(
                stylesheets=[weasyprint.CSS(static_url + "/abrechnung/css/print-landscape.css")]
                )
val = []
for doc in pdf_letter, pdf_table:
    for p in doc.pages:
        val.append(p)
    pdf_file = pdf_letter.copy(val).write_pdf(f"{datetime.now()}.pdf")
    thumbnail = pdf_letter.copy(val).write_png(f"{datetime.now()}.png")

当我尝试运行该程序时,我在浏览器中收到以下错误消息:

“文档”对象没有属性“write_png”

pdf_file = pdf_letter.copy(val).write_pdf(f"{datetime.now()}.pdf")
thumbnail = pdf_letter.copy(val).write_png(f"{datetime.now()}.png")
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

有关 write_png() 函数的 weasyprint 文档可以在这里找到: https://doc.courtbouillon.org/weasyprint/v52.5/api.html#weasyprint.document.Document.write_png

当我阅读 weasyprint 文档时,我指出

weasyprint.HTML.render()
生成一个 weasyprint.document.Document。 该对象具有功能
write_png()
。 苏....WTF?我在这里做错了什么?

我试过这个

for i, page in enumerate(document.pages):
    document.copy([page]).write_png('page_%s.png' % i)

还有这个

for page in document.pages:
        yield document.copy([page]).write_png()

来自 weasyprint 教程(变量等当然适合我的代码),但两者都不起作用 - 我遇到了相同的错误。 单独写入pdf文件是没有问题的,稍后保存并返回。当我尝试添加缩略图功能时,问题才开始出现。

python django weasyprint
1个回答
0
投票

经过更多挖掘,我终于自己找到了答案:他们在 2021 年放弃了 write_png() 并且没有人愿意更改文档......

这是有关该主题的博客文章: https://www.courtbouillon.org/blog/00008-weasyprint-53-beta/

© www.soinside.com 2019 - 2024. All rights reserved.