我用django和weasyprint制作了一个应用程序,该应用程序可以打印带有图片的pdf文件和设计我的pdf文件的css文件。我使用nginx,gunicorn和超级用户来部署我的应用程序。在我的Intranet中一切正常。当我使用INTERNET PUBLIC IP地址在Internet上发布它时,我的pdf文件不再显示图片和CSS设计。但是所有应用程序的静态文件都能正常工作 我看到我的金枪鱼原木,但什么也没有。 我使用Nginx提供我的静态文件。这个配置
在我的views.py中上游app_server { 服务器Unix:/webapps/myapp/run/gunicorn.sock fail_timeout = 0; }
服务器{
听80;
服务器名称127.0.0.1;
client_max_body_size 4G;
access_log /webapps/myapp/logs/nginx-access.log;
error_log /webapps/myapp/logs/nginx-error.log;
位置/静态/ { 别名/ webapps / myapp / basegenecirdes / public / static /; }
位置/ media / { 别名/ webapps / myapp / media /; }
位置/ { proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for; proxy_set_header主机$ http_host; proxy_redirect关闭;
if (!-f $request_filename) { proxy_pass http://app_server; break; }
}
调用pdf文件,我使用它
html = render_to_string('pdf / print.html',{'pagesize':'A4'}) 响应= HttpResponse(content_type =“ application / pdf”,) response ['Content-Disposition'] ='内联; filename =“ print.pdf”' weasyprint.HTML(string = html,base_url = request.build_absolute_uri())。write_pdf(response)
返回响应
静态图片文件:
<img style="background-color: white" src="{% static "image/photo_50x48.png" %}">
媒体图片文件
<img alt="{{ a.nom }}" src="{{ a.photo.thumbnail.url }}" >
有人有同样的问题吗?
答案 0 :(得分:0)
阅读您的修改后,该问题似乎与PDF output using Weasyprint not showing images (Django)重复
您的代码中已有答案的第一部分。但是我在您的write_pdf()
电话中看不到这部分:
要使HTML样式显示在PDF上,请根据Weasyprint文档添加presentational_hints = True:
pdf = html.write_pdf(stylesheets=[CSS(settings.STATIC_ROOT + '/css/detail_pdf_gen.css')], presentational_hints=True);