在 Django 中将 CSS 添加到 Pdfkit?
Add CSS to Pdfkit in Django?
我无法将我的 css 添加到我的 PdfKit 代码中。
HTML 中的普通静态 link 不起作用。
<link href="{% static 'css/print.css' %}" rel="stylesheet">
我在视图中看到了这种方法,但无法找到 link Django 中 css 文件的方法。
css = 'print.css'
pdfkit.from_file('file.html', css=css)
还为 Flask 找到了这个答案 - 如何为 Django 做同样的事情?
How to link stylesheet files to pdfkit in Flask application?
谢谢。
您需要添加完整路径。而不是
<link href="{% static 'css/print.css' %}" rel="stylesheet">
你会用
<link href="http://localhost/static/css/print.css" rel="stylesheet">
您发现的第二种方法也有效,但您需要再次使用文件的完整路径,例如:
import os
from django.conf import settings
css = os.path.join(settings.STATIC_ROOT, 'css', 'print.css')
pdfkit.from_file('file.html', css=css)
在后一种情况下,您还需要提供 file.html
的完整路径。然而,在 Django 中,您可能更愿意先将 file.html
呈现为字符串,然后使用呈现的 html 来创建 PDF。类似于:
import os
from django.conf import settings
from django.template.loader import render_to_string
t = render_to_string('file.html', {})
css = os.path.join(settings.STATIC_ROOT, 'css', 'print.css')
pdf = pdfkit.from_string(t, 'file.pdf', css=css)
... 或者如果您想 return PDF 作为回复
from django.http import HttpResponse
pdf = pdfkit.from_string(t, False, css=css)
response = HttpResponse(pdf)
response['Content-Type'] = 'application/pdf'
response['Content-Disposition'] = 'attachment; filename = file.pdf'
return response
我无法将我的 css 添加到我的 PdfKit 代码中。
HTML 中的普通静态 link 不起作用。
<link href="{% static 'css/print.css' %}" rel="stylesheet">
我在视图中看到了这种方法,但无法找到 link Django 中 css 文件的方法。
css = 'print.css'
pdfkit.from_file('file.html', css=css)
还为 Flask 找到了这个答案 - 如何为 Django 做同样的事情?
How to link stylesheet files to pdfkit in Flask application?
谢谢。
您需要添加完整路径。而不是
<link href="{% static 'css/print.css' %}" rel="stylesheet">
你会用
<link href="http://localhost/static/css/print.css" rel="stylesheet">
您发现的第二种方法也有效,但您需要再次使用文件的完整路径,例如:
import os
from django.conf import settings
css = os.path.join(settings.STATIC_ROOT, 'css', 'print.css')
pdfkit.from_file('file.html', css=css)
在后一种情况下,您还需要提供 file.html
的完整路径。然而,在 Django 中,您可能更愿意先将 file.html
呈现为字符串,然后使用呈现的 html 来创建 PDF。类似于:
import os
from django.conf import settings
from django.template.loader import render_to_string
t = render_to_string('file.html', {})
css = os.path.join(settings.STATIC_ROOT, 'css', 'print.css')
pdf = pdfkit.from_string(t, 'file.pdf', css=css)
... 或者如果您想 return PDF 作为回复
from django.http import HttpResponse
pdf = pdfkit.from_string(t, False, css=css)
response = HttpResponse(pdf)
response['Content-Type'] = 'application/pdf'
response['Content-Disposition'] = 'attachment; filename = file.pdf'
return response