• Prawn:Ruby生成PDF更简捷的选择


    在InfoQ上看到《Prawn:使用Ruby生成PDF更简捷》,其说到的Prawn可以更加快捷的在Ruby中生成PDF文件。因为之前使用过很多版本的PDF生成类库都不尽如人意,有的太复杂,有的太慢,于是对这个做了测试。

    1、安装

    安装很简单,直接使用gem install prawn即可安装完成;

    2、使用

    比较简单,详细的参考其文档,我直接贴一段我测试用的代码,如下:

    Ruby代码
    1. # coding: utf-8  
    2.   
    3. $LOAD_PATH << File.join(File.dirname(__FILE__), ‘..’‘lib’)  
    4. require "prawn"  
    5. start = Time.now  
    6. Prawn::Document.generate("utf8_text_flow.pdf") do  
    7.   font "#{Prawn::BASEDIR}/data/fonts/simfang.ttf"  
    8.   text "我是中文,还有数字+yingwen+898"* 2  
    9.   text "This is a english text, and i will be here …"  
    10.   text "This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,This is a long text ,"  
    11.     
    12.   font_size!(16)  
    13.   text "At size 16"  
    14.     
    15.   font_size!(16)  
    16.   text "\nIceskYsl@1sters!"  
    17.   font_size!(10)  
    18.   text "不考虑安全的开发过程就是不完整的过程,而我只是个懂点安全对于互联网充满期待的程序员…"  
    19.   font_size!(12)  
    20.   text "更可怕的是,同质化竞争对手可以按照URL中后面这个ID来遍历您的DB中的内容,写个小爬虫把你的页面上的关键信息顺次爬下来也不是什么难事,这样的话,你就非常被动了。"  
    21.      
    22. end  
    23. puts "Spend #{Time.now-start}s"  
    24.                                   
    25.         
    26.         

    生成的PDF效果还是比较让人满意的,如下是效果图:

     

    3、优缺点

    • 使用比较方便,API都比较简单;
    • 相对来水比较快,从上面代码可以看到,生成如上这份PDF需要的时候是”Spend 4.36s“;
    • 其本身支持14种内在字体,另外可以使用TTF字体文件来添加自己需要的字体;
    • 支持UTF8字体,对中文等字体支持比较好
    • 英文可以自动换行,但是我测试中文就不能自动换行了,如上图的红圈地方就是溢出的;–已经修复
    • 定位方便;
    • 支持图片插入;
    • 支持表格,cell等等。

    4、其他

    上面说的那个Bug我已经提交给作者,详细的参考这里”chinese text can not flow well “,应该很快就可以修复和完善了;

    让我惊奇的是其主页 上竟然有 中文版页面,难道有国人参与?

    其代码库在:http://github.com/sandal/prawn/tree/master

    5、更新

    上面说到的一个对中文自动换行的BUG,提交给作者后,他就修复了,现在我测试的效果非常棒,是我见过的最棒的一个PDF生成类库了,如下是效果图,可以和上面的那个比较下。

    转自:http://iceskysl.1sters.com/?p=355 

  • 相关阅读:
    1.8其他命令
    1.7远程管理常用命令
    1.6.系统信息相关命令
    1.5linux用户权限相关命令
    python 进程创建和共享内容的方法
    python 操作数据库
    python 类方法中参数使用默认值的方法
    异常处理
    推导列表
    装饰器 装饰带参数的函数和添加函数
  • 原文地址:https://www.cnblogs.com/stalwart/p/1859609.html
Copyright © 2020-2023  润新知