用django从html生成pdf

django_pdf_generator的Python项目详细描述


django-pdf-generator v0.1.3 on PyPiMIT licenseStable

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

支持

如果您有问题,请让我们知道或提交拉取请求。

许可证

这个项目是根据麻省理工学院的许可证授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java客户端与服务器和JPA事务的对话   java Any DLL导入会抛出一个不满意的链接错误,尽管DLL似乎已加载   java如何获得只有他的电子邮件Firebase Realtime才知道的用户结构   PlayFramework2.0Java游戏!启动问题   java创建倒计时计时器   在java中按id排序Akka流   带有嵌入式Jetty静态资源的java Spring MVC   java如何避免Jackson获取标记为FetchType的字段。懒惰的   java Netbeans Ascii unicode字符不工作base64编码解码   JAVAME:对Java向量进行排序   适合java的设计模式   java ParDo函数未在Apache BEAM中等待窗口   从JNI调用main()入口点时,java new JFrame()崩溃   java试图理解JNI中的C函数调用。H   java如何在hibernate 5.3中使用键贡献类型   Javafx中屏幕之间的java参数   java将图像转换为SVG   java Read xls文件,API POI异常初始化记录0x203(NumberRecord),剩余4个字节尚待读取   swing将选项卡添加到jTabbedPane,其中每个选项卡都有一个名为java的文本区域   java While循环只在主体中运行一次