用django从html生成pdf
django_pdf_generator的Python项目详细描述
django pdf生成器
使用phantomjs使用django将html转换为pdf
要求
- python(2.7)(需要测试3.x)
- Django(1.10、1.9)(需要对以前的版本进行测试)
- 幻影
安装
使用pip:
安装pip install django_pdf_generator
将pdf_generator添加到已安装的应用程序设置中。
INSTALLED_APPS=(...'pdf_generator',)
将phantomjs二进制文件放在您的路径上,或者在 使用PHANTOMJS_BIN_PATH设置的设置(请参见下文)。
示例
使用pdfGenerator类生成PDF
从url生成pdf
frompdf_generator.generatorsimportPDFGeneratorpdf=PDFGenerator(url="https://github.com/charlesthk/django-pdf-generator",
使用pdfdoc模型将其保存到数据库:
pdf.save(filename='pdf_generator',title="pdf_generator on github",description="Convert HTML to pdf with django using phantomjs")
获取名为“my_pdf_file.pdf”的django内容文件格式的pdf文件:
pdf_content_file=pdf.get_content_file('my_pdf_file')# Return a Django HttpResponse with the PDF Attached named 'my_pdf_file.pdf':returnpdf.get_http_response('my_pdf_file')
返回带有名为 '我的pdf文件.pdf':
returnpdf.get_http_response('my_pdf_file')
像django一样生成pdf render函数:
url.py
url(r'^invoice$',views.invoice,name='invoice'),
views.py
frompdf_generator.renderersimportrender_pdfdefinvoice(request):""" Render an invoice The invoice.pdf file is returned """returnrender_pdf('invoice',request,'front/invoice.html')
只需在url中添加?html=1即可查看html,而不必获取 pdf文件。
PDFGenerator选项
PDFGenerator类接受以下参数:
- url[必需]
- PaperFormat[必需]默认为“A4”,例如:“5in*7.5in”, “10cm*20cm”,“A4”,“字母”
- 缩放[可选]默认为1。
- 脚本[可选]默认为默认光栅化脚本,定义 要使用的渲染脚本。
- temp_dir[可选]默认为default_temp_dir,定义 要使用的临时目录。
用于保存pdf
的模型使用的save(filename, title='',description='')方法时 PDFGenerator,使用以下模型:
class PdfDoc(models.Model): """ Store each generated pdf """ title = models.CharField(verbose_name=_("Title"), max_length=255, blank=True) description = models.TextField(verbose_name=_("Description"), blank=True) document = models.FileField(verbose_name=_("Document PDF"), upload_to=pdf_settings.UPLOAD_TO) created_at = models.DateTimeField(auto_now=False, auto_now_add=True, verbose_name=_('Creation')) updated_at = models.DateTimeField(auto_now=True, auto_now_add=False, verbose_name=_('Update'))
设置
将设置添加到主django设置文件中。设置如下 默认设置为:
PDF_GENERATOR = { 'UPLOAD_TO': 'pdfs', 'PHANTOMJS_BIN_PATH': 'phantomjs', 'DEFAULT_RASTERIZE_SCRIPT': os.path.join(PDF_GENERATOR_DIR, 'rasterize.js'), 'DEFAULT_TEMP_DIR': os.path.join(PDF_GENERATOR_DIR, 'temp'), 'TEMPLATES_DIR': os.path.join(PDF_GENERATOR_DIR, 'templates/pdf_generator') }
UPLOAD_TO
定义保存PDF时要使用的目录或函数, 默认为pdfs。
PHANTOMJS_BIN_PATH
定义phantomjs二进制文件的路径,默认为phantomjs。
DEFAULT_RASTERIZE_SCRIPT
定义默认使用哪个渲染脚本,默认为 rasterize.js在包内。
DEFAULT_TEMP_DIR
定义phantomjs临时生成pdf所使用的目录。 默认为pdf_temp。
TEMPLATES_DIR
定义用于临时生成的HTML文件的目录 幽灵。默认为pdf_temp。
支持
如果您有问题,请让我们知道或提交拉取请求。
许可证
这个项目是根据麻省理工学院的许可证授权的。