1
C0VN 2013 年 11 月 17 日
|
2
beordle 2013 年 11 月 18 日 这个问题我倒是非常有发言权。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() |
3
tywtyw2002 OP @beordle 但是 docx怎么生成pdf呢 因为文件不能更改呀
|
4
ericls 2013 年 11 月 18 日 via Android
我一直用django生成pdf
|
5
chuangbo 2013 年 11 月 18 日
如果不一定用 Python 库的话,http://www.princexml.com/ 挺好的
|
6
wuyazi 2013 年 11 月 18 日
要求不高的话,reportlab应该够用了。
中文加个字体就解决了。 排版的话,不清楚二楼说的缺陷是什么,只是感觉所有内容都是用函数画的,比较费力,没有直观一点的可视化编辑 |
8
beordle 2013 年 11 月 19 日
@wuyazi @tywtyw2002 這個確實得用msoffice或是 openoffice的編程接口來弄.但不符合pure python要求.我當時做程序的時候倒是不一定要求pdf格式.現在讓我做的話.那些問題reportlab應該可以解決.可能是我當時沒弄好.因為reportlab確實是唯一的純python pdf庫了
|
9
wangyongbo 2013 年 11 月 21 日
pyPdf 也可以操作 pdf。reportlab 自己加上中文字体 就好了。大部分都能解决。
|
10
beordle 2013 年 11 月 23 日
@wangyongbo pypdf只是切割pdf 不能渲染生成啊
|
11
hit9 2013 年 12 月 10 日
See pdfkit & wkhtmltopdf
不过wkhtmltopdf的issues很多!但是速度好,生成的也漂亮 |