程序导出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')

缺点:

1.功能非常弱。有很多限制比如不支持模板等,只能生成简单格式的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根据模板生成pdf文件_程序生成word与PDF文档的方法(python)相关推荐

  1. html document怎么转换成word,Doxillion Document Converter – 将 DOC、DOCX、PDF、WPS、Word、HTML文档格式互相转换...

    在办公领域经常会遇到各种各样的文件格式,因此常常有DOC.DOCX.PDF.WPS.Word.HTML 等各种不同格式的文档互相转换的需求.虽然网上有很多在线转换网站或 文档格式转换软件,不过今天推荐 ...

  2. word转pdf图片模糊怎么办_嗨格式PDF转换器如何将PDF文件转换成Word?PDF转Word方法...

    日常办公,我们有时候需要将PDF文件格式进行转换,鉴于PDF文件的特殊性,这就需要借助专业软件,例如嗨格式PDF转换器.嗨格式PDF转换器支持PDF.Word.Excel.PPT.图片等多种文件格式互 ...

  3. php 编辑PDF文件,php word 转 PDF,php 编辑 word,phpoffice,phpword,libreoffice

    php 编辑PDF 废话不多说,直接说需求 1.项目经理:"小江啊,我这里有份合同,是word格式的,你把它生成PDF格式,并且里面的内容还能编辑". 大致思路 1.遇到这种需求, ...

  4. python的web抓取_python实现从web抓取文档的方法

    本文实例讲述了Python实现从Web的一个URL中抓取文档的方法,分享给大家供大家参考.具体方法分析如下: 实例代码如下: import urllib doc = urllib.urlopen(&q ...

  5. 【jinja2】Python根据模板生成HTML文件并加载进QWebEngineView

    前言 继前文Python在PyQt5中使用ECharts绘制图表中在Python程序中添加网页展示ECharts图表,和Python使用QWebEngineView时报错Uncaught Refere ...

  6. libreoffice python_libreoffice python 操作word及excel文档的方法

    1.开始.关闭libreoffice服务: 开始之前同步字体文件时间,是因为创建soffice服务时,服务会检查所需加载的文件的时间,如果其认为时间不符,则其可能会重新加载,耗时较长,因此需事先统一时 ...

  7. 怎么查看mysql帮助文档_高效查看MySQL帮助文档的方法

    在mysql的使用过程中, 可能经常会遇到以下问题: 某个操作语法忘记了, 如何快速查找? 如何快速知道当前版本上某个字段类型的取值范围? 当前版本都支持哪些函数?希望有例子说明.. 当前版本是否支持 ...

  8. python写byte数组到文件_这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)...

    很多同学对于编码问题都不是很清楚,计算机常见的编码格式为: ASCII ISO-8859-1 GB2312 GBK UTF-8 UTF-16 对于Python开发中,我们一般都是采用统一的编码格式:U ...

  9. python汉化 草蟒_草蟒首页、文档和下载 - Python 汉化版 - OSCHINA - 中文开源技术交流社区...

    草蟒是基于 Python 的全中文编程语言. 示例 1: # 截至 n 的斐波那契数列 >>> 函 斐波那契数列(n): >>> a, b = 0, 1 >& ...

最新文章

  1. OpenStack虚拟机删除后停在deleting无法正常删除
  2. 行为模式之Intepreter模式
  3. 逆向入门--代码段的介绍
  4. 6、mybatis中的sql映射文件详解(1)
  5. 如何将html特殊字符编码转换成特殊字符_html十进制编码字符转回来
  6. 能干的产品经理比不上能说的产品经理
  7. 有关javaScript面向对象和原型笔记
  8. C# - 多线程(基础)
  9. WebSphere 集群环境下配置 Quartz集群
  10. C++堆、栈、自由存储区、全局/静态存储区和常量存储区
  11. 常用的ADB命令介绍
  12. Windows10中IE11浏览器的修复之路
  13. ERROR command failed: npm install --loglevel error --legacy-peer-deps
  14. 王立柱《c语言》3.5.4
  15. 状态空间描述到传递函数
  16. PMP备考图表汇总详解
  17. K8S日常问题-k8s中大量pod 状态 evicted
  18. 华为Cloud BU总裁郑叶来:云服务低价竞争会回归理性
  19. JavaSE 开发环境安装与初识Java
  20. 第四代计算机微型计算机,第四代计算机使用的主要电子元件是(   )A.晶体管  B.电子管C.超大规模集成电路 D.集成电路——青夏教育精英家教网——...

热门文章

  1. 高并发下秒杀商品,必须知道的9个细节
  2. 编程中的21个坑,你占几个?
  3. Java中竟有18种队列?45张图!安排
  4. 一文详解「队列」,手撸队列的3种方法!
  5. Oracle笔记:数据库启动的三个阶段
  6. Linux QT5.12 一种整体界面字体设置的方法及设置PlainTextEdit组件的字体大小方法
  7. 可汗学院统计学笔记 42-81集
  8. 数据结构php语言,PHP语言做网页开发,会用到什么数据结构,算法?
  9. 如何固定最小宽度_如何使用更新的HTML和CSS函数创建响应式设计
  10. ftp上传文件夹_ftp同步软件哪个好,ftp同步软件哪个好,6款好用推荐