一、程序导出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 *.odt

unoconv -f doc *.odt

unoconv -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 Document

from docx.shared import Inches

document = Document()

document.add_heading('Document Title', 0)

p = document.add_paragraph('A plain paragraph having some ')

p.add_run('bold').bold = True

p.add_run(' and some ')

p.add_run('italic.').italic = True

document.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].cells

hdr_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.desc

document.add_page_break()

document.save('demo.docx')

from docx import Document

from docx.shared import Inches

document = 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 pdfkit

pdfkit.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 带目录_利用python程序生成word和PDF文档的方法相关推荐

  1. python生成多级文件夹_利用 python 遍历多级文件夹处理不同文件

    需求:近期,同事在处理文件的时候,常常需要从一堆文件中提取一些数据信息: 分析:由于每个文件夹下面的文件或文件夹多如牛毛,文件类型也很多种,需要针对不同文件类型做处理,人工处理是不现实的,只能用脚本处 ...

  2. python处理word或者pdf文件_利用python程序生成word和PDF文档的方法

    一.程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用fr ...

  3. itext html 转换 pdf文件,利用itext实现html转pdf文档

    Link: http://keyknight.blog.163.com/blog/static/366378402009431104941637/ 利用itext实现html转pdf文档的代码实在是太 ...

  4. python根据模板生成pdf文件_程序生成word与PDF文档的方法(python)

    程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用free ...

  5. 使用poi写入doc文档中文档打不开_基于NodeJS和浏览器的PDF文档引擎——PDFKit

    介绍 PDFKit是一个用于Node和浏览器的PDF文档生成库,可以轻松创建复杂的多页面可打印文档.API包含可链接性,包括低级功能以及更高级功能的抽象.PDFKit API设计简单,因此生成复杂文档 ...

  6. 如何将Word转成两页并排为一页的PDF文档?

    Word转PDF是一种基础的文档转换,操作也非常简单,但如果需要让转换后的PDF每一页以原Word文档中的每两页并排显示,应该如何操作呢? 首先用极速写作打开Word文档,然后点击菜单栏的" ...

  7. 福昕pdf虚拟打印机_一学就会的PDF文档压缩小技巧

    PDF文档拥有着兼容性.稳定性和安全性的优点,在文档界拥有这不可撼动的江湖地位,但是对于PDF文档的压缩处理,我们却无从下手.哈哈,不用纠结,现在小编就教你如何压缩PDF文档.如何快速转换PDF文档. ...

  8. 原创力文档怎么免费下载_哪里可以下载免费的PDF文档转换器?

    在我们使用电脑的过程中,经常会使用到各种类型的文档,其中PDF文档也非常受欢迎,尤其对PDF文档转换器工具的需求非常广,由此PDF文档转换器也成为了众多技术人员研究的对象,以满足众多使用者的需求. 本 ...

  9. python制作心形照片墙_利用python生成照片墙的示例代码

    PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了.其官方主页为:PIL. PIL历 ...

最新文章

  1. MimbleWimble系列之协议介绍
  2. python程序设计基础教程答案山东联盟答案_Python程序设计基础 (山东联盟) 期末...
  3. pcl点云PCD文件
  4. Go语言大神亲述:历七劫方可成为程序员!
  5. 贪心算法求解问题的选择准则
  6. jstl中c:foreach下的表格实现异步刷新
  7. bldc 原理 方波控制_正弦波驱动BLDC原理
  8. C#调用C++的DLL所有数据类型转换方式
  9. win10计算机管理 分区,win10系统自带磁盘管理工具调整硬盘分区大小的详细方案...
  10. 计算机程序设计基础梁建坤,云浮工匠梁建坤:无怨无悔 不忘初心
  11. LigerUI的简单使用示例
  12. 2021年中国彩电行业发展现状分析,零售量首度跌破4000万大关,行业迎来艰难时刻「图」
  13. 2020双十一AutoJs自动领喵币再次来袭【天猫、淘宝、支付宝】
  14. 一个基于QT的解析interproscan结果的C++成员函数
  15. 数据类型在内存中的存储原理
  16. 通过线性回归模型及优化实现AQI分析与预测
  17. Vue 路由懒加载——介绍以及遇到的问题
  18. php画奥运五环颜色,php趣味 - php 奥运五环
  19. Matlab 常见错误(1)——提示“数组索引必须为正整数或逻辑值”或者“索引超出数组元素的数目”
  20. HDOJ HDU 1850 Being a Good Boy in Spring Festival

热门文章

  1. HTML(超文本标记语言)——总结
  2. 电商数据监测 都可以监测啥
  3. Java Web视频(2013)
  4. CPU—Time Profiler
  5. 数字证书明文_Android 明文数字证书风险解决方案
  6. Linux命令-结束进程
  7. html制作电影界面,电影网站界面设计HTML_CSS模板
  8. Port 1-1023
  9. 参数调优:K折交叉验证与GridSearch网格搜索
  10. 基于Excel的VDS记录数据文件查看及转换工具(转MDA格式)