1

我使用 django 和 weasyprint 制作了一个应用程序,它打印一个带有图片和 css 文件的 pdf 文件,这些文件设计了我的 pdf 文件。我使用 nginx、gunicorn 和 supervisor 来部署我的应用程序。在我的 Intranet 中一切正常。当我使用互联网公共 IP 地址在互联网上发布它时,我的 pdf 文件不再显示图片和 css 设计。但是所有应用程序的静态文件都运行良好我看到了我的 gunicorn 日志,但什么也没有。我使用 Nginx 来提供我的静态文件。这个配置

上游 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;

错误日志/webapps/myapp/logs/nginx-error.log;

位置 /static/ { 别名 /webapps/myapp/basegenecirdes/public/static/; }

位置 /media/ { 别名 /webapps/myapp/media/; }

location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header 主机 $http_host; 代理重定向关闭;

   if (!-f $request_filename) {
       proxy_pass http://app_server;
       break;
   }

}

在我的views.py中调用一个pdf文件,我用这个

html = render_to_string('pdf/print.html', {'pagesize':'A4'}) response = HttpResponse(content_type="application/pdf",) response['Content-Disposition'] = 'inline; 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 }}" >

有人有同样的问题吗?

4

1 回答 1

0

阅读您的编辑后,这个问题似乎是使用 Wea​​syprint 不显示图像(Django)的 PDF 输出的副本

您的代码中已经有了答案的第一部分。但我在你的write_pdf()电话中没有看到这部分:

要在 PDF 上显示 HTML 样式,请根据 Weasyprint 文档添加presentational_hints=True:

pdf = html.write_pdf(stylesheets=[CSS(settings.STATIC_ROOT + '/css/detail_pdf_gen.css')], presentational_hints=True);

于 2018-08-04T00:43:24.727 回答