V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
tywtyw2002
V2EX  ›  Python

python下面有什么生成pdf文件的库呢?

  •  
  •   tywtyw2002 · 2013-11-17 15:17:21 +08:00 · 7137 次点击
    这是一个创建于 4007 天前的主题,其中的信息可能已经有所发展或是发生改变。
    给我们组织做网站,需要生成一些invoice,ticker,证书,申请表(带barcode)等东西的pdf。


    不知道什么库能够在纯py环境下生成pdf文件呢?

    我记得php下面有个fpdf可以做到这点,但是python下不大清楚。

    之前用pdflatex去生成这些pdf,但是最近由于要求变化要push网站倒appfog上面,没有了vps就没法用pdflatex了。
    11 条回复    1970-01-01 08:00:00 +08:00
    xavierskip
        1
    xavierskip  
       2013-11-17 15:25:09 +08:00
    beordle
        2
    beordle  
       2013-11-18 05:59:12 +08:00   ❤️ 1
    这个问题我倒是非常有发言权。reportlab 我使用过。他对中文支持存在一定问题。在网上找到一定的解决方案后,也是在中文排版上有很大缺陷的。我最后使用了python-docx.但是这个库只能从0开始生成docx. 查阅资料后发现2007版本的docx是zip压缩的开放xml。所以我这样来做。虽然使用了python-docx库。。但是只用到了一个常量。进行模板生成。大概这样唯一的缺陷就是只能office2007+以上版本使用了吧。

    from docx import *
    def replace_docx(zip_buf,dict):
    memory=StringIO.StringIO()
    memory.write(zip_buf)
    mydoc = zipfile.ZipFile(memory)
    xmlcontent = mydoc.read('word/document.xml')
    document = etree.fromstring(xmlcontent)
    body = document.xpath('/w:document/w:body', namespaces=nsprefixes)[0]
    for key,value in dict.items():
    body = replace(body, key, value)
    xmlcontent = etree.tostring(document, pretty_print=True)
    mydoc.close()
    zf = zipfile.ZipFile(memory, "a", zipfile.ZIP_DEFLATED, False)
    zf.writestr('word/document.xml',xmlcontent)
    zf.close()
    return memory.getvalue()
    tywtyw2002
        3
    tywtyw2002  
    OP
       2013-11-18 08:00:38 +08:00 via iPhone
    @beordle 但是 docx怎么生成pdf呢 因为文件不能更改呀
    ericls
        4
    ericls  
       2013-11-18 10:27:32 +08:00 via Android
    我一直用django生成pdf
    chuangbo
        5
    chuangbo  
       2013-11-18 12:01:02 +08:00
    如果不一定用 Python 库的话,http://www.princexml.com/ 挺好的
    wuyazi
        6
    wuyazi  
       2013-11-18 19:55:02 +08:00
    要求不高的话,reportlab应该够用了。
    中文加个字体就解决了。
    排版的话,不清楚二楼说的缺陷是什么,只是感觉所有内容都是用函数画的,比较费力,没有直观一点的可视化编辑
    beordle
        7
    beordle  
       2013-11-19 19:01:54 +08:00
    @wuyazi 主要是 在模板情形下的行距(出現重疊等等) 自動換行(這個倒是有不完美解決方案).(還有就是程序員必須自己生成模板,略不好)
    beordle
        8
    beordle  
       2013-11-19 19:06:31 +08:00
    @wuyazi @tywtyw2002 這個確實得用msoffice或是 openoffice的編程接口來弄.但不符合pure python要求.我當時做程序的時候倒是不一定要求pdf格式.現在讓我做的話.那些問題reportlab應該可以解決.可能是我當時沒弄好.因為reportlab確實是唯一的純python pdf庫了
    wangyongbo
        9
    wangyongbo  
       2013-11-21 18:30:33 +08:00
    pyPdf 也可以操作 pdf。reportlab 自己加上中文字体 就好了。大部分都能解决。
    beordle
        10
    beordle  
       2013-11-23 15:48:59 +08:00
    @wangyongbo pypdf只是切割pdf 不能渲染生成啊
    hit9
        11
    hit9  
       2013-12-10 21:55:03 +08:00
    See pdfkit & wkhtmltopdf

    不过wkhtmltopdf的issues很多!但是速度好,生成的也漂亮
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1371 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:36 · PVG 01:36 · LAX 09:36 · JFK 12:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.