python之html转docx文件高级用法---使用样式
来源:互联网 发布:穿越火线fps优化器 编辑:程序博客网 时间:2024/06/06 01:05
最近在工作中遇到了html文件转docx格式的需求,实现过程中发现了一款python-docx框架非常好用,虽做知识点整理。分享给大家!
参考框架连接:https://python-docx.readthedocs.io/en/latest/index.html#
在排版管理中,与字符内容无关的所有可视要素都可称之为『样式』,具体说来,包括字体、颜色、对齐、行间距等等。
在Word(以及带有文本编辑功能的Office软件)中,从样式应用的对象分,常用的样式类型有字符样式、段落样式、表格样式、枚举样式等。python-docx目前主要支持前三类,已经基本满足日常使用。
每种样式包含的内容主要有字体(包括字体名称、颜色、倾斜、加粗)和段落格式(缩进、分页模式)等。根据样式应用对象的不同,每类样式不一定包含所有的内容。例如,字符样式就没有段落格式这个内容。
Word有样式管理器,负责管理内建样式和用户自定义样式。python-docx可以操作这个管理器,把自定义的样式添加到管理器里,或者从管理器选取一个样式加以应用。
由于python-docx的样式设置并不能包含Word的所有样式设置。因此个人的建议是:
- 当你的操作只是涉及Word本身(例如批量整理文件格式),可以利用Word的图形界面设置好自定义样式,然后利用python-docx操作样式管理器,给特定的对象特定的样式。
- 当你的操作涉及Word之外的东西,而且对样式设置的要求不高(例如,HTML转Word,或者格式比较简单的文档,例如公文),可以使用python-docx直接设置样式。
- 如果你既不能用Word设置自定义样式(例如需要几百种样式类型),又对样式类型的设置要求很高,则不要用python-docx,考虑VBScript/VBA,或者win32com等功能完备的工具。
1. 创建样式和设置字体
游程对象、段落对象和表格对象都有一个成员Style,而这个Style有一个成员Font,包含了字体的所有设置。
如果凭空的创建一个Style,要使用Document对象的Styles集合的add_style方法。下面的例子里添加了10个段落,为每个段落创建一个新的Style。这些Style的区别是字号依次增加。
# -*- coding: utf-8 -*-from docx import Documentfrom docx.shared import Ptfrom docx.enum.style import WD_STYLE_TYPEdoc = Document()for i in range(10): p = doc.add_paragraph(u'段落 %d' % i) style = doc.styles.add_style('UserStyle%d' %i,WD_STYLE_TYPE.PARAGRAPH) style.font.size = Pt(i+20) p.style = style doc.save('4-1.docx')
注意到python-docx提供了docx.shared模块,供以Pt(磅)为单位设置字体。类似的单位有Mm、Cm、Inches、Emu(物理尺寸)以及Twips(缇,微软喜好的一种蜜汁尺寸)
对于游程对象,其字体操作可以直接使用Run.font成员。下面给一个字体变化的一句话:
# -*- coding: utf-8 -*-from docx import Documentfrom docx.shared import RGBColorfrom docx.oxml.ns import qndoc = Document()p = doc.add_paragraph()text_str = u'一个人的命运啊,当然要靠自我奋斗,但是也要考虑到历史的进程。'for i,ch in enumerate(text_str): run = p.add_run(ch) font = run.font font.name = u'微软雅黑' # bug of python-docx run._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑') font.bold = (i % 2 == 0) font.italic = (i % 3 == 0) color = font.color color.rgb = RGBColor(i*10 % 200 + 55,i*20 % 200 + 55,i*30 % 200 + 55) doc.save('4-2.docx')
这里使用了docx.shared模块提供的RGBColor类。
- python之html转docx文件高级用法---使用样式
- Python起步之读写docx文件
- docx、ppt、xls、pdf文件转html
- Python读写docx文件
- Java 使用jacob ppt文件转pptx,doc转docx;word 转html、pdf等
- python之sort高级用法
- Python docx转PDF
- 使用POI将office(doc/docx/ppt/pptx/xls/xlsx)文件转html格式(附带源码)
- 使用office2003打开docx文件
- 【word | html】word(doc | docx) 转 html
- (转)Html的样式使用
- python-docx
- python docx库使用样例
- POI实现DOC/DOCX转HTML
- 使用PL/SQL 解析Docx 文件
- 使用POI读写word docx文件
- 使用POI读写word docx文件
- 使用POI读写word docx文件
- golang faygo 框架模板的简单使用
- bzoj4519 [Cqoi2016]不同的最小割 分治最小割 模板
- C++设计模式十--TemplatePattern(模板方法模式)
- 数据结构--概述
- Intent传递List<object>方法
- python之html转docx文件高级用法---使用样式
- 杂谈 | 移动互联网行业迎来存量经营时代(一)——宏观环境
- 如何保护你的隐私(一)
- 数据字典设计实现缓存
- 前端入门篇
- 深入浅析同源策略和跨域访问
- 1Z0-051 9.Which statement is true regarding the INTERSECT operator?
- Android 自定义注解
- Jdk的动态代理