
一、程序导出word文档的方法
将web/HTML内容导出为world文档,再java中有很多解决方案,比如使用Jacob、Apache POI、Java2Word、iText等各种方式,以及使用freemarker这样的模板引擎这样的方式。PHP中也有一些相应的方法,但在python中将web/HTML内容生成world文档的方法是很少的。其中最不好解决的就是如何将使用Js代码异步获取填充的数据,图片导出到word文档中。
1. unoconv
功能:
1.支持将本地html文档转换为docx格式的文档,所以需要先将网页中的HTML文件保存到本地,再调用unoconv进行转换。转换效果也不错,使用方法非常简单。
\# 安装sudo apt-get install unoconv\# 使用unoconv -f pdf *.odtunoconv -f doc *.odtunoconv -f HTML *.odt
缺点:
1.只能对静态HTML进行转换,对于页面中有使用AJAX异步获取数据的地方也不能转换(主要是要保证从web页面保存下来的HTML文件中有数据)。
2.只能对HTML进行转换,如果页面中有使用echarts,highcharts等Js代码生成的图片,是无法将这些图片转换到word文档中;
3.生成的word文档内容格式不容易控制。
2. python-docx
功能:
1.python-docx是一个可以读写word文档的python库。
使用方法:
1.获取网页中的数据,使用python手动排版添加到word文档中。
from docx import documentfrom docx.shared import Inchesdocument = document()document.add_heading('document Title',0)p = document.add_paragraph('A plain paragraph having some ')p.add_run('bold').bold = Truep.add_run(' and some ')p.add_run('italic.').italic = Truedocument.add_heading('heading,level 1',level=1)document.add_paragraph('Intense quote',style='IntenseQuote')document.add_paragraph( 'first item in unordered List',style='ListBullet')document.add_paragraph( 'first item in ordered List',style='ListNumber')document.add_picture('monty-truth.png',wIDth=Inches(1.25))table = document.add_table(rows=1,cols=3)hdr_cells = table.rows[0].cellshdr_cells[0].text = 'Qty'hdr_cells[1].text = 'ID'hdr_cells[2].text = 'Desc'for item in recordset: row_cells = table.add_row().cells row_cells[0].text = str(item.qty) row_cells[1].text = str(item.ID) row_cells[2].text = item.descdocument.add_page_break()document.save('demo.docx')from docx import documentfrom docx.shared import Inchesdocument = document()for row in range(9): t = document.add_table(rows=1,cols=1,style = 'table GrID') t.autofit = False #很重要! w = float(row) / 2.0 t.columns[0].wIDth = Inches(w)document.save('table-step.docx')缺点:
功能非常弱。有很多限制比如不支持模板等,只能生成简单格式的word文档。
二、程序导出pdf文档方法
1.pdfkit
功能:
1.wkHTMLtopdf主要用于HTML生成pdf。
2.pdfkit是基于wkHTMLtopdf的python封装,支持URL,本地文件,文本内容到pdf的转换,其最终还是调用wkHTMLtopdf命令。是目前接触到的python生成pdf效果较好的。
优点:
1.wkHTMLtopdf:利用webkit内核将HTML转为pdf
webkit是一个高效、开源的浏览器内核,包括Chrome和Safari在内的浏览器都使用了这个内核。Chrome打印当前网页的功能,其中有一个选项就是直接“保存为 pdf”。
2.wkHTMLtopdf使用webkit内核的pdf渲染引擎来将HTML页面转换为pdf。高保真,转换质量很好,且使用非常简单。
使用方法:
\# 安装pip install pdfkit\# 使用import pdfkitpdfkit.from_url('http://Google.com','out.pdf')pdfkit.from_file('test.HTML','out.pdf')pdfkit.from_string('Hello!','out.pdf')缺点:
1.对使用echarts,highcharts这样的Js代码生成的图标无法转换为pdf(因为它的功能主要是将HTML转换为pdf,而不是将Js转换为pdf)。对于纯静态页面的转换效果还是不错的。
2.其他
其他生成pdf的插件还有:weasyprint,reportlab,PyPDF2等,经简单试验都不如pdfkit效果好,且有些用法复杂。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
您可能感兴趣的文章:python实现word 2007文档转换为pdf文件python批量实现Word文件转换为PDF文件 总结以上是内存溢出为你收集整理的利用python程序生成word和PDF文档的方法全部内容,希望文章能够帮你解决利用python程序生成word和PDF文档的方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)