show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次了解到了 新单位 Emu
- 是最小的单位
- 能被 1mm 整除
- 商 36,000
- 能被 point 整除
- 商 914,400
- 任何浮点的单位
- 最终需要在Emu上取整
- 中文汉字 也有自己的字号 历史
- 在 word和wps中可以
- 以中国字号 为单位设置
- 可以修改文字颜色吗?
- 我们先看看
- document容器里面可以添加什么对象
from docx import Document
document = Document()
document.
- document中可以添加
- 标题
- 段落
- 章节
- 分页符
- 图片
- 表格
- 段落 作为一个容器
- 里面可以添加什么对象呢?
from docx import Document
document = Document()
paragraph = document.add_paragraph("oeasy")
paragraph.
- 我们看看paragraph的函数
- paragraph 可以添加
- 一种叫做run的东西
- run可以添加吗?
from docx import Document
document = Document()
paragraph = document.add_paragraph("oeasy")
print(paragraph.runs)
paragraph.add_run("o2z")
print(paragraph.runs)
- 查看结果
-
确实在paragrah.runs里
- 追加了列表项
-
document文档 是 顶级元素
- document文档 包含 多个 prargraph段落
- prargraph段落 包含 多个 run文本
- 可以设置style属性吗?
from docx.shared import Pt
from docx import Document
from docx.enum.style import WD_STYLE_TYPE
document = Document()
styles = document.styles
paragraph = document.add_paragraph("oeasy")
paragraph.add_run("o2z")
run = paragraph.runs[0]
print(paragraph.runs)
style = styles.add_style('oeasy',WD_STYLE_TYPE.CHARACTER)
style.font.name = "Calibri"
style.font.size = Pt(22)
run.style = style
document.save("o.docx")
- 同一段文字
- 确实有两个字体大小
- 格式不同
- 因为他们属于不同的runs
- 可以找到这个Character的style吗?
-
在文字样式中
- 可以找到自荐样式
- oeasy
-
字体颜色可以修改吗?
-
观察字体
from docx import Document
from docx.shared import Pt
document = Document()
paragraph = document.add_paragraph("oeasy")
run = paragraph.add_run("o2z")
run.font.color.
- 观察细节
- 有rgb颜色
- 也有 主题颜色
- 主题颜色 可以
- 根据主题色而修改
from docx import Document
from docx.enum.dml import MSO_THEME_COLOR
document = Document()
paragraph = document.add_paragraph("oeasy")
run = paragraph.add_run("o2z")
run.font.color.theme_color = MSO_THEME_COLOR.ACCENT_2
print(run.font.color)
print(run.font.color.type)
print(run.font.color.theme_color)
document.save("o.docx")
- 结果
- 设置颜色后
- 再设置 亮度值或者暗度值
- 蓝桥 不支持 主题色
- 下载后可见
from docx import Document
from docx.enum.dml import MSO_THEME_COLOR
document = Document()
paragraph = document.add_paragraph("oeasy")
run = paragraph.add_run("o2z")
run.font.color.theme_color = MSO_THEME_COLOR.ACCENT_2
run.font.brightness = 0.4
print(run.font.color)
print(run.font.color.type)
print(run.font.color.theme_color)
document.save("./Code/o.docx")
- 确实设置了
- 个性色2 ACCENT_2
- 40% 亮度
- 如果修改主题色的话
- 字体颜色 会跟着变
- 可以设置暗度吗?
from docx import Document
from docx.enum.dml import MSO_THEME_COLOR
document = Document()
paragraph = document.add_paragraph("oeasy")
run = paragraph.add_run("o2z")
run.font.color.theme_color = MSO_THEME_COLOR.ACCENT_2
run.font.brightness = 0.4
print(run.font.color)
print(run.font.color.type)
print(run.font.color.theme_color)
document.save("./Code/o.docx")
- 暗度效果 也需要 下载后才能看
- 蓝桥的libreoffice
- 支持什么颜色类型呢?
from docx import Document
from docx.shared import RGBColor
document = Document()
paragraph = document.add_paragraph("oeasy")
run = paragraph.add_run("o2z")
run.font.color.rgb = RGBColor(0xff, 0x2c, 0x36)
print(run.font.color)
print(run.font.color.type)
print(run.font.color.rgb)
document.save("o.docx")
- 结果
- 效果
- 可以加点随机吗?
from docx import Document
from docx.shared import RGBColor, Inches
from docx.shared import Pt
from random import randint
doc = Document()
# 添加段落2
p = doc.add_paragraph("I am")
for ch in "oeasy":
r = p.add_run(ch)
r.font.size = Pt(randint(12,30))
r.font.color.rgb = RGBColor(randint(0,256), 0, 0) # 红色
doc.save("oeasy.docx")
- 效果
- 颜色也是
- 格式 覆盖样式 吗?
- 实践出真知
- 自己试试
from docx import Document
from docx.shared import RGBColor
from docx.enum.style import WD_STYLE_TYPE
document = Document()
paragraph = document.add_paragraph("oeasy")
run = paragraph.add_run("o2z")
styles = document.styles
style = styles.add_style('oeasy',WD_STYLE_TYPE.CHARACTER)
style.font.color.rgb = RGBColor(0xff, 0x2c, 0x36)
run.style = style
print("run.font.color.rgb: ",run.font.color.rgb)
print("style.font.color.rgb: ",style.font.color.rgb)
document.save("o.docx")
- 结果
- 格式未设置
- 样式几乎为纯红
- 文档显示
from docx import Document
from docx.shared import RGBColor
from docx.enum.style import WD_STYLE_TYPE
document = Document()
paragraph = document.add_paragraph("oeasy")
run = paragraph.add_run("o2z")
styles = document.styles
style = styles.add_style('oeasy',WD_STYLE_TYPE.CHARACTER)
style.font.color.rgb = RGBColor(0xff, 0x2c, 0x36)
run.style = style
run.font.color.rgb = RGBColor(0x00, 0xff, 0x36)
print("run.font.color.rgb: ",run.font.color.rgb)
print("style.font.color.rgb: ",style.font.color.rgb)
document.save("o.docx")
- 结果
- 格式几乎为纯绿
- 样式几乎为纯红
- 结论
- 还是格式
- 覆盖样式
- 如果想要
- 筛选出所有红色字体
- 又该怎么办呢?
- 设置好颜色
- 准备根据颜色
- 输出字体
from docx import Document
from docx.shared import RGBColor
document = Document("o.docx")
for paragraph in document.paragraphs:
for run in paragraph.runs:
if run.font.color.rgb == RGBColor(0xff, 0x00, 0x00):
print(run.text)
- 结果
- 但是有个问题
- 筛选出来的只是 格式为红色的文本
- 如果
- 样式为红色呢?
- 如果
- 文本在table中呢?
- document文档 是 顶级元素
- document文档 包含 多个 prargraph段落
- prargraph段落 包含 多个 run文本
- 文本可以设置颜色
- 主题颜色 配合 亮度、暗度
- 如何设置中文字体呢?🤔
- 我们下次再说!👋🏻