使用django从HTML生成PDF
项目描述
django-pdf-generator
使用phantomjs通过django将HTML转换为pdf
要求
Python (2.7) (需要测试3.x)
Django (1.10, 1.9) (需要测试旧版本)
PhantomJS
安装
使用 pip 进行安装
pip install django_pdf_generator
将 pdf_generator 添加到您的 INSTALLED_APPS 设置。
INSTALLED_APPS = (
...
'pdf_generator',
)
将phantomjs二进制文件放在您的路径上,或者使用 PHANTOMJS_BIN_PATH 设置在您的设置中手动设置路径(见下文)。
示例
使用PDFGenerator类生成PDF
从URL生成pdf
from pdf_generator.generators import PDFGenerator
pdf = 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 ContentFile作为PDF
pdf_content_file = pdf.get_content_file('my_pdf_file')
# Return a Django HttpResponse with the PDF Attached named 'my_pdf_file.pdf':
return pdf.get_http_response('my_pdf_file')
返回一个名为‘my_pdf_file.pdf’的PDF附件的Django HttpResponse
return pdf.get_http_response('my_pdf_file')
像Django render 函数一样生成pdf
urls.py
url(r'^invoice$', views.invoice, name='invoice'),
views.py
from pdf_generator.renderers import render_pdf
def invoice(request):
"""
Render an invoice
The invoice.pdf file is returned
"""
return render_pdf('invoice', request, 'front/invoice.html')
只需将 ?html=1 添加到URL中,即可查看HTML而不是获取pdf文件。
PDFGenerator选项
PDFGenerator 类接受以下参数
url [必需]
paperformat [必需] 默认为 'A4',例如:"5in*7.5in","10cm*20cm","A4","Letter"
zoom [可选] 默认为 1。
script [可选] 默认为 DEFAULT_RASTERIZE_SCRIPT,定义要使用的渲染脚本。
temp_dir [可选] 默认为 DEFAULT_TEMP_DIR,定义要使用的临时目录。
用于保存 PDF 的模型
当使用 PDFGenerator 的 save(filename, title='', description='') 方法时,使用以下模型
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
定义 PhantomJS 生成临时 HTML 文件所使用的目录。默认为 pdf_temp。
支持
如果您遇到问题,请告知我们或提交一个 pull request。
许可证
该项目采用 MIT 许可证。
项目详情
哈希值 for django_pdf_generator-0.1.3-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4f812a25c453612ad8bcdfea483f6c43cdc215c1ee1bd4a71746488ec528ccc1 |
|
MD5 | c3ffeb40f1de46301015c0d0cc1dd505 |
|
BLAKE2b-256 | a4fad3c0e9f88fc3d29027e849f9ecc00d8ee55bc7e3ccfb262fdb3b5cd475d8 |