wkhtmltopdf是一个可以将html文件转化为pdf文件的工具,需要提前安装,下载地址:https://wkhtmltopdf.org/
将下载后的压缩包解压后,在bin 文件夹下有一个wkhtmltopdf.exe的可执行文件,然后就可以直接使用可执行文件将HTML文件转化为PDF。
现在使用django rest-framework生成一个接口,将数据库中存在的内容拿出来然后放在一个HTML中,再将这个HTML转化为PDF。
from wkhtmltopdf.views import PDFTemplateView
from rest_framework.views import APIView
import urllib.parse
class ToPDFView(APIView, PDFTemplateView):
authentication_classes = [OAuth2Authentication, SessionAuthentication]
permission_classes = [permissions.IsAuthenticated]
filename = 'r.pdf'
template_name = 'pdf.html'
cmd_options = {
}
def get(self, request, rid, **kwargs):
self.rid = rid
return super(ToPDFView, self).get(request)
def get_context_data(self, **kwargs):
context = super(ReportPDFView, self).get_context_data(**kwargs)
context[''] = context
return context
然后再注册一个URL:
urlpatterns = [
url(r'^ppp/(?P<ppp_id>\d+)/pdf/$', views.ToPDFView.as_view()),
]
小知识点:
当一个div转化为pdf时被强制分页,取消分页显示只需要将这个div添加样式page-break-inside: avoid !important;就可以了。