Skip to content

Latest commit

 

History

History
420 lines (302 loc) · 9.55 KB

475-2214148-字体_font_颜色设置_主题色_RGB颜色.sy.md

File metadata and controls

420 lines (302 loc) · 9.55 KB
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

  • 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属性吗?

设置run的字体

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
    • 支持什么颜色类型呢?

rgb颜色

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文本

图片描述

  • 文本可以设置颜色
    • 主题颜色 配合 亮度、暗度

图片描述

  • 如何设置中文字体呢?🤔
  • 我们下次再说!👋🏻