zoukankan      html  css  js  c++  java
  • Django中生成PDF(一)

    Django中生成PDF(一)




    需求描述:
        某网站与其用户达成一致的协议,每份协议中都有用户相关的独特信息,且还需要生成PDF并存档。PDF文件中需要有企业LOGO、文字描述等信息。其展现形式跟word文件类似,要求排版精美,图文并茂,在接下来的几篇博文中,我将记录整个PDF生成的过程。


    技术调研:
    首先是通过Django的官方文档找有木有相关的模块,很兴奋又有点失落(模块地址:https://docs.djangoproject.com/en/1.4/howto/outputting-pdf/)。兴奋的是Django考虑周到,为用户提供了生成PDF的模块,失落的是它所提供的不能满足现有的需求。顺藤摸瓜,于是找到了reportlab,发现的确是一个很强大的库,几乎能实现你想要的结果。

    项目准备:
    通过调研,有三种方式实现PDF的文件生成和保存:
    方法一:使用reportlab相关包,用canvas直接画图并保存。这种方法最原始,使用比较麻烦,真对不同的PDF文档需要单独画。另外,还需要详细了解reportlab所提供的API,对于PDF文件中需要画的每一个元素,无论是文字、直线还是图片,都需要自己手动调色、精确定位,操作比较繁琐,且其代码不能够重用,增加了开发成本和维护成本。
    方法二:仍然使用reportlab相关包,通过RML(Report Markup Language)来编写需要生成PDF的文件模板(类似于HTML页面),针对不同的报表需求,我们只需要提供不同的报表模板即可,实现好了工具类,直接调用即可,这样比较方便,方便维护。但是前提条件是必须要熟悉并了解RML语言。
    方法三:通过HTML直接生成PDF,类似于方法二,都是通过样式,数据,先渲染好模板,再生成PDF文件。

    个人感觉RML比较专业一点,因为它是专门用来生成报表需求的,且其展现形式比较丰富,小到文本、图片,大到流程图、饼状图、柱状图、曲线图都能展现。


    (未完待续,节日快乐)

  • 相关阅读:
    程序员必须知道的10大基础实用算法及其讲解
    6 Java Exceptions that Haunts a Newbie Java Developer(Java菜鸟6种常见的异常)
    在线学习Java免费资源推荐(来自:importnew)
    Oracle触发器
    Oracle性能分析工具介绍及使用
    开口大数据闭口高并发,你们都是怎么回答
    Http中Get/Post请求区别
    快速排序算法
    MAG EF查询增加指定索引功能
    WEB传参
  • 原文地址:https://www.cnblogs.com/riskyer/p/3348005.html
Copyright © 2011-2022 走看看