from pptx import Presentation
from pptx.util import Cm, Pt
from pptx.enum.text import PP_ALIGN
from pptx.dml.color import RGBColor
# 16:9 纯白背景PPT
prs = Presentation()
prs.slide_width = 9144000
prs.slide_height = 5143500
# 颜色配置
WHITE = RGBColor(255, 255, 255)
BLUE = RGBColor(0, 112, 192) # 圆角蓝色框
RED = RGBColor(255, 0, 0)
BLACK = RGBColor(0, 0, 0)
FONT = "微软雅黑"
# 纯白背景设置
def set_white_bg(slide):
fill = slide.background.fill
fill.solid()
fill.fore_color.rgb = WHITE
# 纯文字绘制(支持下划线、斜体)
def draw_text(slide, x, y, text, color=BLACK, size=16, align=PP_ALIGN.LEFT, underline=False, italic=False):
textbox = slide.shapes.add_textbox(Cm(x), Cm(y), Cm(10), Cm(1))
tf = textbox.text_frame
tf.text = text
para = tf.paragraphs[0]
para.alignment = align
font = para.font
font.name = FONT
font.size = Pt(size)
font.color.rgb = color
font.underline = underline
font.italic = italic
# 文本框透明无框
textbox.fill.background()
textbox.line.fill.background()
# 圆角蓝色方框(白色文字居中)
def draw_rounded_blue_box(slide, x, y, w, h, text):
# 5代表圆角矩形形状
shape = slide.shapes.add_shape(5, Cm(x), Cm(y), Cm(w), Cm(h))
shape.fill.solid()
shape.fill.fore_color.rgb = BLUE
shape.line.color.rgb = BLUE
shape.adj1 = 15000 # 圆角程度
tf = shape.text_frame
tf.text = text
tf.paragraphs[0].alignment = PP_ALIGN.CENTER
font = tf.paragraphs[0].font
font.name = FONT
font.size = Pt(14)
font.color.rgb = WHITE
# -------------------- 第1页(完全按你给的效果) --------------------
slide1 = prs.slides.add_slide(prs.slide_layouts[6])
set_white_bg(slide1)
# 1. 我是豆包(红色):红色+下划线
draw_text(slide1, 1, 1, "我是豆包(红色)", RED, 18, underline=True)
# 2. 合并判定:黑色+下划线+斜体
draw_text(slide1, 16, 1, "合并判定", BLACK, 18, align=PP_ALIGN.CENTER, underline=True, italic=True)
# 3. pass rate 圆角蓝色框
draw_rounded_blue_box(slide1, 1, 3, 6, 1.2, "pass rate")
# 4. Bin map 普通文字居中
draw_text(slide1, 3, 4.8, "Bin map", BLACK, 20, align=PP_ALIGN.CENTER)
# 5. Fail rate 圆角蓝色框
draw_rounded_blue_box(slide1, 1, 6, 6, 1.2, "Fail rate")
# 6. TD Product Team 红色文字
draw_text(slide1, 13, 10, "TD Product Team", RED, 18, align=PP_ALIGN.CENTER)
# -------------------- 第2页 --------------------
slide2 = prs.slides.add_slide(prs.slide_layouts[6])
set_white_bg(slide2)
draw_text(slide2, 1, 1, "我是豆包(红色字体)", RED, 18, underline=True)
draw_text(slide2, 16, 1, "合并判定", BLACK, 18, align=PP_ALIGN.CENTER, underline=True, italic=True)
# 左右两列文字
left_items = ["S", "M", "FG", "Single"]
right_items = ["BL", "WL", "others"]
y_base = 3
gap = 2
for idx, text in enumerate(left_items):
draw_text(slide2, 2, y_base + idx*gap, text, BLACK, 22, align=PP_ALIGN.CENTER)
for idx, text in enumerate(right_items):
draw_text(slide2, 13, y_base + idx*gap, text, BLACK, 22, align=PP_ALIGN.CENTER)
draw_text(slide2, 13, 12, "TD Product Team", RED, 18, align=PP_ALIGN.CENTER)
# -------------------- 第3页 --------------------
slide3 = prs.slides.add_slide(prs.slide_layouts[6])
set_white_bg(slide3)
draw_text(slide3, 1, 1, "我是豆包(红色字体)", RED, 18, underline=True)
draw_text(slide3, 16, 1, "两方 黑色", BLACK, 18, align=PP_ALIGN.CENTER, underline=True, italic=True)
# 左侧条目
page3_items = ["3-8PL", "2PL SCV", "2PL others", "1PL"]
y_p3 = 3
gap_p3 = 1.5
for idx, text in enumerate(page3_items):
draw_text(slide3, 2, y_p3 + idx*gap_p3, text, BLACK, 16, align=PP_ALIGN.CENTER)
draw_text(slide3, 13, 9, "TD Product. Team", RED, 18, align=PP_ALIGN.CENTER)
# 保存文件
prs.save("最终完善版_圆角下划线斜体.pptx")
print("✅ 全部修改完成!")
print("1. 我是豆包:红色+下划线")
print("2. 合并判定:黑色+下划线+斜体")
print("3. pass rate/Fail rate:圆角蓝色框+白色文字")
print("4. 所有页面纯白背景,无多余元素")
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。