pdf中的Internet公共IP地址和django静态文件
Posted
技术标签:
【中文标题】pdf中的Internet公共IP地址和django静态文件【英文标题】:Internet Public ip address and django static file in pdf 【发布时间】:2019-01-11 20:19:57 【问题描述】:我使用 django 和 weasyprint 制作了一个应用程序,它打印一个带有图片和 css 文件的 pdf 文件,这些文件设计了我的 pdf 文件。我使用 nginx、gunicorn 和 supervisor 来部署我的应用程序。在我的 Intranet 中一切正常。当我使用互联网公共 IP 地址在互联网上发布它时,我的 pdf 文件不再显示图片和 css 设计。但所有应用程序的静态文件都运行良好 我看到了我的 gunicorn 日志,但什么也没有。 我使用 Nginx 来提供我的静态文件。这个配置
上游应用服务器 服务器 unix:/webapps/myapp/run/gunicorn.sock fail_timeout=0;
服务器
听 80;
server_name 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/;
位置/媒体/ 别名/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;
在我的views.py中调用一个pdf文件,我用这个
html = render_to_string('pdf/print.html', 'pagesize':'A4') 响应 = HttpResponse(content_type="application/pdf",) response['Content-Disposition'] = 'inline;文件名="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 src=" a.photo.thumbnail.url " >
有人有同样的问题吗?
【问题讨论】:
【参考方案1】:阅读您的编辑后,此问题似乎与 PDF output using Weasyprint not showing images (Django) 重复
您的代码中已经有了答案的第一部分。但我在您的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);
【讨论】:
谢谢你它正在工作,只是图片不会出现,我更新我的帖子向你展示我如何将 img html 代码放入我的 pdf 中 有什么帮助吗? 3天以来,我一直在处理这个问题。 如何启用 looging?我会把它放在“return response”之后? 要启用日志记录,您必须在设置中进行设置,然后在写入文件之前调用文件中的 getLogger()。这解释了如何做到这一点:docs.djangoproject.com/en/2.1/topics/logging/… 我有 2 个日志无法在 IP_ADDR/static/css/default.css 加载样式表:HTTPError:HTTP 错误 401:无法在“IP_ADDR/static/image/picture_50x48.png”加载图像(HTTPError:HTTP 错误 401:)以上是关于pdf中的Internet公共IP地址和django静态文件的主要内容,如果未能解决你的问题,请参考以下文章