需要依赖库.

WeasyPrint,它是一个Python库可以生成PDF文件从HTML模板中。
安装WeasyPrint

pip install WeasyPrint

创建一个PDF模板(template)
我们需要一个HTML文档给WeasyPrint输入。我们将要创建一个HTML
模板(template),渲染它使用Django,并且传递它给WeasyPrint来生成

PDF文件。

创建一个新的模板(template)文件在myapp应用的

templates目录下命名为pdf.html

<html>

添加你要生成的页面

</html>

这个模板(template)就是PDF文件

渲染PDF文件
我们将要创建一个视图(view)来生成PDF文件。编辑myapp应用的views.py文件添加如下代码:

from django.conf import settings
from django.http import HttpResponse
from django.template.loader import render_to_string
import weasyprint
@staff_member_required
def admin_order_pdf(request, order_id):
    queryset = get_object_or_404(mymodel, id=mymodel_id)
    html = render_to_string('pdf.html',
    {'queryset': queryset})
    response = HttpResponse(content_type='application/pdf')
    response['Content-Disposition'] = 'filename=\"mymodel_{}.pdf"'.format(mymodel.id)

weasyprint.HTML(string=html).write_pdf(response,

stylesheets=[weasyprint.CSS(settings.STATIC_ROOT + 'css/pdf.css'

)])

return response

接下来配置一个路由去访问就行了

django 生成动态的PDF文件的更多相关文章

  1. django 生成复杂的 PDF 文件(数据较多时)

    如果您在创建一个复杂的 PDF 文档(或者任何较大的数据块),请使用 cStringIO 库存放临时生成的 PDF 文件. cStringIO 提供了一个用 C 编写的类似文件对象的接口,从而可以使系 ...

  2. 网页中动态嵌入PDF文件/在线预览PDF内容https://www.cnblogs.com/xgyy/p/6119459.html

    #网页中动态嵌入PDF文件/在线预览PDF内容# 摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如 ...

  3. #网页中动态嵌入PDF文件/在线预览PDF内容#

    摘要:在web开发时我们有时会需要在线预览PDF内容,在线嵌入pdf文件: 问题1:如何网页中嵌入PDF: 在网页中: 常用的几种PDF预览代码片段如下: 代码片段1: 1 <object ty ...

  4. PDF 补丁丁 0.4.2.950 测试版发布:按文件夹合并生成单独的PDF文件

    新的测试版实现了将文件夹的内容合并为单独的PDF文件的功能.以下图为例讲解操作步骤. 点击工具栏的“合并文件”按钮,打开合并功能. 设M盘下有“test”和“test2”文件夹,里面包含了需要合并的文 ...

  5. 对pdf 表单域 或文本框的操作---动态填充PDF 文件内容

    前提:需要pdf模板:并且模板内容以pdf 文本框的形式填写 package com.test;import java.io.File;import java.io.FileOutputStream; ...

  6. Itext生成pdf文件

    来源:https://my.oschina.net/lujianing/blog/894365 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等. ...

  7. 根据PDF模板生成PDF文件(基于iTextSharp)

    根据PDF模板生成PDF文件,这里主要借助iTextSharp工具来完成.场景是这样的,假如要做一个电子协议,用过通过在线填写表单数据,然后系统根据用户填写的数据,生成电子档的协议.原理很简单,但是每 ...

  8. 小容量单片机生成pdf文件

    工作上要求使用小容量单片机生成直接生成pdf文件.经过一段时间的摸索,其中参考了libharu,库太大,不适合在单片机上使用页参考了与非网上一位前辈的库,占用的RAM太大,不适合小容量单片机,主要资料 ...

  9. java操作Excel、PDF文件

    java操作Excel.PDF文件 分享者:Vashon 分享来源:CSDN博客 下面这些是在开发中用到的一些东西,有的代码贴的不是完整的,只是贴出了关于操作EXCEL的代码: jxl是一个*国人写的 ...

随机推荐

  1. [django]django 3种返回json方法

    django 3种返回json方法 1.手动组装字典返回 from django.http import JsonResponse, HttpResponse from django.shortcut ...

  2. 块结构在文件中的表示IOB【转载】

    转自:http://www.coderjie.com/blog/43b3601e0a2411e7841d00163e0c0e36 1.块在内存中以树的形式存储,分好块的文本在文件中用IOB标记存储: ...

  3. 【LeetCode每天一题】Pascal's Triangle(杨辉三角)

    Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. In Pascal's t ...

  4. 15-Python3 编程第一步

    2018-11-20 11:42:06 ''' 肥婆纳妾数列 斐波那契数列,又称黄金分割数列:这个数列从第3项开始,每一项都等于前两项之和, 随着数列项数的增加,前一项与后一项之比越来越逼近黄金分割的 ...

  5. json.dumps与json.loads实例

    import json data= { 'no' : 1, 'name' : 'Runoob', 'url' : 'http:\\www.runoob.com' } json_str = json.d ...

  6. [LeetCode] 747. Largest Number At Least Twice of Others_Easy

    In a given integer array nums, there is always exactly one largest element. Find whether the largest ...

  7. [LeetCode] 276. Paint Fence_Easy tag: Dynamic Programming

    There is a fence with n posts, each post can be painted with one of the k colors. You have to paint ...

  8. PHP的数组合并

    1. array_merge 字符索引:后面的覆盖前面的. 如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值. 混合索引:如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到 ...

  9. System.ArgumentException: 目标数组的长度不够。请检查 destIndex 和长度以及数组的下限

    扫码支付接口将要上线,近几天在优化系统性能.昨天把日志Helper类的日志记录改成了使用Queue<T>对象来实现异步处理.做了单元测试,并模拟多线程来测试后,发现正常.今天将站点部署到准 ...

  10. 解决ConfigParser配置option的大小写问题

    通常情况下,我们会这样解析配置文件: confiig = ConfigParser.ConfigParser() config.read('xxx.ini') #这个read表示对某个文件用读打开, ...