简介
项目中生成了一个实例,需要提供给用户下载pdf文件功能。
最开始想到的是使用前段技术,直接将html页面保存为pdf文件。这个过程使用了html2pdf,这个纯js项目。该项目会将指定的DOM元素通过html2canvas工具保存为图片,然后通过jsPDF工具将保存的图片最终以pdf文件形式展现,并直接供下载。
这样做有个缺点就是当页面非常长时,就有可能出现一行文字被从中间截断,展示在两页pdf文件中的情况。因而需要寻找更高级,输出格式更优雅的解决方案。最后发现了可以通过Reportlab套件来完成工作。
工作流
要想通过Reportlab套件来生成pdf文件的工作流程主要分三步:
- django后台通过与数据库或者其他调用获取数据
- 将这些数据传入到RML(Report Markable Language)模板,并调用reportlab套件生成二进制数据