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静态文件的主要内容,如果未能解决你的问题,请参考以下文章

快速获取 IP 地址

IP (复习)

IP地址是什么,618IP代理带你深入了解

win10如何设置ip地址

win10如何清除自动获取的ip

网络中的NAT模式