我已经在弹性豆茎上安装了weasyprint。html模板的打印工作到目前为止,但我不能打印SVG图像。
Weasyprint抛出以下错误:
Failed to load image at "https://myurl/media/X247QAQ2IO.svg" (Could not load GDK-Pixbuf. PNG and SVG are the only image formats available.)
我需要gdk-pixbuf来打印SVG吗?如果需要,我该如何在Amazon Linux上安装它?
Yum does not have gdk-pixbuf2 available for installation
4条答案
按热度按时间zkure5ic1#
我找到了一个解决方案,为我的工作,通过手动构建gdk-pixbuf 2,我的脚本下面派生自https://gist.github.com/whyvez/1e0212a35da97aa8f1b1,他们需要安装图像魔术
weazy.conf
nx7onnlm2#
经过进一步的调查,我意识到这个错误不应该发生在使用svg图像。这是weasyprint源代码的相关部分:
正如你所看到的,如果它是一个png或者svg,并且有正确的mime类型,pixbuf根本就不会被使用。阅读了这篇文章后,我意识到这一定是svg本身的问题。图像服务器,在我的例子中是S3,为svg提供了错误的content_type。
修复后,错误不再发生,我可以打印SVG与weasyprint。
pokxtpni3#
我们也遇到了这个问题。除非你绝对需要最新版本的
WeasyPrint
,否则你可以在requirements.txt中将其设置为不需要gdk-pixbuf2
的版本。(It可能适用于比0.26更晚的版本,这正是我在我的一个项目中所拥有的)
ygya80vv4#
我也有同样的问题,很长一段时间..修复安装weazyprint==52.5,并卸载django-weazyprint
在中创建了一个配置文件,如以下主题中所述:https://gist.github.com/Abdoulrasheed/039b1f4afd4268a8832d8066881d7b23
终于起作用了