第十三篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读Python自动化操作PPT

传奇开心果博文系列

  • 系列博文目录
    • Python自动化办公库技术点案例示例系列
  • 博文目录
    • 前言
    • 一、 Python自动化操作PPT能力介绍
    • 二、常用库介绍
    • 三、创建新PPT示例代码
    • 四、编辑现有PPT示例代码
    • 五、批量处理示例代码
    • 六、数据驱动生成示例代码
    • 七、合并与拆分示例代码
    • 八、母版和版式操作示例代码
    • 九、自动化流程集成示例代码
    • 十、python-pptx基础操作示例代码
    • 十一、python-pptx进阶应用示例代码
    • 十二、win32com基础功能示例代码
    • 十三、win32com高级功能示例代码
    • 十四、comtypes基础功能示例代码
    • 十五、comtypes高级功能示例代码
    • 十六、知识点归纳示例代码

系列博文目录

Python自动化办公库技术点案例示例系列

博文目录

前言

在这里插入图片描述

Python自动化操作PowerPoint是指利用Python编程语言以及相关的第三方库来实现对Microsoft PowerPoint演示文稿(.ppt或.pptx文件)的创建、编辑、批量处理、数据分析、格式调整、内容插入、动画控制、模板应用、合并拆分等任务的自动化操作。这种方法可以显著提高工作效率,减少重复劳动,并实现精确、可编程的PPT管理与生成。

一、 Python自动化操作PPT能力介绍

在这里插入图片描述

  1. 创建新PPT:使用python-pptx可以轻松创建一个新的演示文稿,设置其主题、版式,添加多张幻灯片,并指定每张幻灯片的布局。

  2. 编辑现有PPT:读取已有的PPT文件,修改幻灯片内容(如替换文本、添加图片、更新图表数据等),调整布局、样式,甚至修改动画效果和过渡。

  3. 批量处理:根据规则或数据驱动,批量修改多个PPT文件中的特定内容,如统一替换文本、批量插入图表数据、批量应用样式等。

  4. 数据驱动生成:结合数据源(如CSV、数据库、API等),动态生成包含分析结果、图表、汇总信息的幻灯片,非常适合报告自动化和数据分析场景。

  5. 合并与拆分:将多个PPT文件合并成一个,或将一个PPT拆分为多个,同时保持原始设计和格式。

  6. 母版和版式操作:自定义母版设计,包括背景、字体、颜色方案等,确保整个演示文稿风格一致。应用或修改幻灯片版式以快速标准化内容布局。

  7. 自动化流程集成:将PPT自动化操作集成到更大的工作流或自动化脚本中,例如定时生成报告、响应事件触发的PPT更新等。

二、常用库介绍

在这里插入图片描述

  1. python-pptx:

python-pptx 是一个广泛使用的Python库,专为操作 .pptx 格式的PowerPoint文件而设计。它提供了丰富的API,允许开发者创建新的演示文稿,添加、编辑幻灯片,设置布局、样式,插入文本、表格、图片、形状、图表等各种元素,以及调整对象属性等。其优点在于对.pptx文件结构解析准确,支持细致的定制化操作。

  1. win32com:

win32com 是一个Python库,通过COM接口(Component Object Model)来调用Microsoft Office应用程序的功能,包括PowerPoint。对于Windows环境下的用户,尤其是需要处理旧版 .ppt 文件或者需要利用PowerPoint特有的高级功能(如VBA宏、复杂动画等)时,win32com 提供了直接操作 PowerPoint应用程序的能力。这种方式通常与使用Office应用程序的VBA编程类似,但用Python编写。

  1. comtypes

comtypes也是一个Python库,用于与Microsoft Office应用程序(如PowerPoint)的COM组件进行交互。它允许直接调用PowerPoint的API进行高级自动化任务。

在实际使用中,win32compython-pptx依然是最主流且功能全面的选择,而其他库则提供了特定场景下的额外支持或替代方案。

三、创建新PPT示例代码

在这里插入图片描述

要使用 python-pptx 库创建一个全新的 PowerPoint 演示文稿(PPT),并进行相关设置与内容添加,可以按照以下步骤操作:

  1. 安装 python-pptx

首先确保已安装 python-pptx 库。在命令行中运行以下命令进行安装:

pip install python-pptx
  1. 导入库并创建演示文稿

在 Python 脚本中导入 pptx 模块,然后使用 Presentation() 函数创建一个新的 PPT 文件。

from pptx import Presentation# 创建一个新演示文稿
presentation = Presentation()
  1. 设置版式

对于每张幻灯片,可以指定其版式(layout)。首先获取可用版式列表,然后选择所需的版式应用于新幻灯片。

from pptx.util import Inches
from pptx.enum.slide import SLIDE_LAYOUT_ID# 获取所有可用版式
slide_layouts = presentation.slide_layouts# 选择一个版式(例如:标题和内容版式)
title_and_content_layout = slide_layouts[SLIDE_LAYOUT_ID.TITLE_AND_CONTENT]# 使用所选版式创建一张新幻灯片
slide = presentation.slides.add_slide(title_and_content_layout)
  1. 添加内容到幻灯片

根据所选版式,可以通过访问相应形状(shape)并设置其文本、图片、图表等属性来添加内容。

  • 添加文本
    找到对应形状(如标题或正文),并使用 text_frame.text 设置文本内容。

    # 获取标题形状并设置文本
    title_shape = slide.shapes.title
    title_shape.text = "Slide Title"# 获取正文形状并设置文本
    content_shape = slide.placeholders[1]  # 第一个正文占位符
    content_shape.text = "Slide Content"
    
  • 添加图片
    创建一个 Picture 对象,指定图片文件路径和大小,然后将其添加到幻灯片上。

    from pptx import Picture# 添加图片
    img_path = "path/to/image.jpg"
    pic = Picture(img_path, width=Inches(5), height=Inches(4))
    slide.shapes.add_picture(pic, left=Inches(1), top=Inches(1))
    
  • 添加图表、表格等

可以参考 python-pptx 文档中的相关示例,根据需要添加图表、表格、SmartArt 等复杂内容。

下面是使用 python-pptx 库来添加图表、表格以及可能的 SmartArt 示例代码。请注意,这些代码片段仅作为指导,实际使用时需根据具体需求进行调整。

添加图表

假设您想要创建一个饼图,并填充来自 pandas DataFrame 的数据。以下是一个简化的示例:

from pptx import Presentation
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches# 创建一个新的 PowerPoint 演示文稿
prs = Presentation()# 添加一个新的幻灯片
slide = prs.slides.add_slide(prs.slide_layouts[6])  # 使用第6个布局(通常含有图表占位符)# 准备图表数据
df = ...  # 假设这里有一个 pandas DataFrame,列名是标签,行是数据系列
labels = df.index.tolist()
values = df.iloc[:, 0].tolist()  # 假设只有一列数据chart_data = CategoryChartData()
chart_data.categories = labels
chart_data.add_series('', values)# 在幻灯片上添加图表
chart_placeholder = slide.placeholders[1]  # 获取第一个图表占位符
chart = chart_placeholder.insert_chart(XL_CHART_TYPE.PIE, chart_data)  # 插入饼图# 调整图表大小及位置
chart.left = Inches(1)
chart.top = Inches(1)
chart.width = Inches(5)
chart.height = Inches(3)# 保存演示文稿
prs.save('chart_presentation.pptx')

添加表格

如果您想将 pandas DataFrame 直接转换为 PowerPoint 表格,可以这样做:

from pptx import Presentation
from pptx.util import Inches# 创建一个新的 PowerPoint 演示文稿
prs = Presentation()# 添加一个新的幻灯片
slide = prs.slides.add_slide(prs.slide_layouts[1])  # 使用一个空白布局# 假设有一个名为 df 的 pandas DataFrame
df = ...# 在幻灯片上添加表格
table_placeholder = slide.shapes.add_table(rows=df.shape[0]+1,  # 包括表头cols=df.shape[1],left=Inches(1),top=Inches(1),width=Inches(8),height=Inches(4)
).table# 填充表格内容
for i in range(df.shape[0]):for j in range(df.shape[1]):table_placeholder.cell(i+1, j).text = str(df.iloc[i, j])# 保存演示文稿
prs.save('table_presentation.pptx')

总之,对于图表和表格的添加,您可以直接使用 python-pptx 提供的功能。对于 SmartArt,由于库本身不支持,您需要寻求其他解决方案或手动完成这部分内容。

  1. 保存演示文稿

最后,使用 presentation.save() 方法保存创建的 PPT 文件。

presentation.save("new_presentation.pptx")

通过以上步骤,您已经使用 python-pptx 创建了一个新的 PowerPoint 演示文稿,设置了版式,并向其中添加了文本、图片等内容。由于 python-pptx 目前不直接支持设置主题,您可以先使用 PowerPoint 自身或其他工具预设主题,再通过 python-pptx 进行内容填充和自动化处理。

四、编辑现有PPT示例代码

在这里插入图片描述

要使用 python-pptx 编辑已有的 PowerPoint 演示文稿(PPT),您可以按照以下步骤操作:

  1. 导入库并打开现有 PPT

导入 pptx 模块,使用 Presentation() 函数打开已存在的 PPT 文件。

from pptx import Presentation# 打开现有演示文稿
presentation = Presentation("existing_presentation.pptx")
  1. 查找并修改幻灯片内容
  • 替换文本

遍历幻灯片上的形状,找到包含目标文本的形状,然后更新其文本内容。

 ```pythonfor slide in presentation.slides:for shape in slide.shapes:if hasattr(shape, "text"):if "旧文本" in shape.text:shape.text = shape.text.replace("旧文本", "新文本")# 或者针对特定形状类型进行更精确的替换elif shape.has_text_frame and shape.text_frame.text == "待替换文本":shape.text_frame.text = "新文本"```
  • 添加图片

与创建新 PPT 时添加图片的方式相同,找到合适的位置,创建并添加 Picture 对象。

 ```pythonimg_path = "path/to/new_image.jpg"pic = Picture(img_path, width=Inches(5), height=Inches(4))slide.shapes.add_picture(pic, left=Inches(1), top=Inches(1))```
  • 更新图表数据

首先找到图表形状,然后通过其 chart 属性访问图表对象,进而更新数据系列、类别等。

 ```pythonfor slide in presentation.slides:for shape in slide.shapes:if shape.has_chart:chart = shape.chart# 更新数据源(假设已有数据源列表)chart_data = chart.datachart_data.categories = ["Category1", "Category2"]chart_data.add_series("Series1", (20, 30, 40, 50))# 或使用外部 Excel 文件作为数据源# chart.replace_data("path/to/data.xlsx")```
  1. 调整布局和样式

更改幻灯片版式

虽然 python-pptx 不直接支持更改已存在幻灯片的版式,但您可以复制一张具有所需版式的幻灯片,然后替换原幻灯片的内容。

 ```pythondesired_layout = presentation.slide_layouts[desired_layout_index]new_slide = presentation.slides.add_slide(desired_layout)for old_shape, new_shape in zip(old_slide.shapes, new_slide.shapes):if new_shape.placeholder_format.idx == old_shape.placeholder_format.idx:if new_shape.has_text_frame:new_shape.text_frame.text = old_shape.text_frame.text# 复制其他属性,如图片、图表等...presentation.slides.remove(old_slide)```

修改形状样式

访问形状的样式属性(如填充色、边框、字体等)并进行调整。

 ```pythonshape.fill.solid()shape.fill.fore_color.rgb = RGBColor(0x1F, 0x91, 0xCF)  # 蓝色背景shape.line.color.rgb = RGBColor(0xFF, 0xFF, 0xFF)  # 白色边框shape.text_frame.paragraphs[0].font.name = "Arial"shape.text_frame.paragraphs[0].font.size = Pt(14)```
  1. 保存修改后的演示文稿

最后,使用 presentation.save() 方法保存编辑后的 PPT 文件。

presentation.save("updated_presentation.pptx")

通过以上步骤,您已经使用 python-pptx 编辑了现有的 PowerPoint 演示文稿,包括替换文本、添加图片、更新图表数据、调整布局和样式等。请注意,对于动画效果和过渡的修改,可能需要依赖其他方法或库。

五、批量处理示例代码

在这里插入图片描述

要批量处理多个 PowerPoint(PPT)文件,您可以编写一个脚本,通过循环遍历文件列表并使用 python-pptx 库对每个文件执行相应的修改操作。以下是一个示例代码,展示如何批量替换文本、批量插入图表数据以及批量应用样式:

from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
import os# 定义要处理的PPT文件目录
ppt_dir = "/path/to/ppt/files"# 定义要替换的文本规则
replacement_rules = {"旧文本1": "新文本1","旧文本2": "新文本2",
}# 定义要插入的图表数据(这里假设每个PPT中都有名为'Series1'的数据系列)
chart_data_list = [[20, 30, 40, 50],  # 数据用于第一个PPT文件[10, 40, 60, ¾0],  # 数据用于第二个PPT文件# 更多数据...
]# 定义要应用的样式
default_style = {"fill_color": RGBColor(0x1F, 0x91, 0xCF),"border_color": RGBColor(0xFF, 0xFF, 0xFF),"font_name": "Arial","font_size": Pt(14),
}def process_ppt(ppt_file_path, chart_data=None):presentation = Presentation(ppt_file_path)# 替换文本for slide in presentation.slides:for shape in slide.shapes:if hasattr(shape, "text"):for old_text, new_text in replacement_rules.items():if old_text in shape.text:shape.text = shape.text.replace(old_text, new_text)# 插入图表数据(假设每个PPT只有一个图表且图表名称已知)for slide in presentation.slides:for shape in slide.shapes:if shape.has_chart:chart = shape.chartdata_series = chart.series[0]  # 假设要修改第一系列数据data_series.values = chart_data# 应用样式for slide in presentation.slides:for shape in slide.shapes:if shape.has_text_frame:shape.fill.solid()shape.fill.fore_color.rgb = default_style["fill_color"]shape.line.color.rgb = default_style["border_color"]shape.text_frame.paragraphs[0].font.name = default_style["font_name"]shape.text_frame.paragraphs[0].font.size = default_style["font_size"]presentation.save(ppt_file_path)  # 保存修改后的PPT# 遍历PPT文件目录,处理每个文件
for file_name in os.listdir(ppt_dir):if file_name.endswith(".pptx"):ppt_file_path = os.path.join(ppt_dir, file_name)chart_data = chart_data_list.pop(0) if chart_data_list else None  # 取出对应数据(如果没有数据则不插入)process_ppt(ppt_file_path, chart_data=chart_data)

这个示例脚本定义了一个 process_ppt() 函数,它接受一个 PowerPoint 文件路径作为参数,并在该文件中执行替换文本、插入图表数据和应用样式的操作。主程序部分遍历指定目录下的所有 .pptx 文件,对每个文件调用 process_ppt() 函数。

注意,此示例假设每个 PPT 文件中都有一个图表且图表名称已知,同时数据列表中的数据顺序与 PPT 文件顺序对应。实际应用中,您可能需要根据具体文件结构和需求调整代码逻辑。

六、数据驱动生成示例代码

在这里插入图片描述

要结合数据源(如 CSV、数据库、API 等)动态生成包含分析结果、图表、汇总信息的幻灯片,您可以使用 Python 编写一个脚本,结合 pandas 进行数据分析,matplotlibplotly 绘制图表,以及 python-pptx 创建和编辑 PowerPoint 幻灯片。以下是一个示例代码,演示如何从 CSV 文件读取数据,生成图表,并将分析结果和图表插入到 PowerPoint 中:

import pandas as pd
import matplotlib.pyplot as plt
import plotly.express as px
from pptx import Presentation
from pptx.util import Inches# 1. 从数据源读取数据
data = pd.read_csv("your_data.csv")# 2. 数据分析与处理(根据实际需求编写)# 3. 生成图表
fig_bar = px.bar(data, x="Category", y="Sales", color="Region")
fig_line = px.line(data, x="Date", y="GrowthRate", title="Growth Rate Over Time")# 保存图表为静态图片
fig_bar.write_image("bar_chart.png")
fig_line.write_image("line_chart.png")# 4. 创建一个新的 PowerPoint 演示文稿
presentation = Presentation()# 5. 添加新的幻灯片
slide1 = presentation.slides.add_slide(presentation.slide_layouts[6])  # 选择合适的布局
slide2 = presentation.slides.add_slide(presentation.slide_layouts[6])# 6. 插入文本框并添加分析结果
title_shape = slide1.shapes.title
title_shape.text = "Data Analysis Report"
text_box = slide1.shapes.add_textbox(Inches(1), Inches(2), Inches(), Inches(1))
tf = text_box.text_frame
tf.text = "Summary: \n\n...insert analysis summary here...\n\nDetailed Findings:\n\n...insert detailed findings here..."# 7. 插入图表图片
left = top = Inches(1)
width = height = Inches(5)
slide1.shapes.add_picture("bar_chart.png", left, top, width=width, height=height)
slide2.shapes.add_picture("line_chart.png", left, top, width=width, height=height)# 8. 保存 PowerPoint 演示文稿
presentation.save("data_driven_presentation.pptx")

在这个示例中:

  • 我们首先使用 pandas 从 CSV 文件读取数据。
  • 接着,使用 plotly.express 根据数据生成柱状图和折线图,并将它们保存为静态图片。
  • 然后,创建一个新的 PowerPoint 演示文稿,添加两页幻灯片。
  • 在幻灯片上添加标题、文本框,填充分析结果摘要和详细发现。
  • 最后,将之前保存的图表图片插入到相应幻灯片上,并保存整个 PowerPoint 文件。

请注意,这只是一个基础示例。实际应用中,您可能需要根据具体的数据结构、分析需求、图表类型以及 PowerPoint 的布局要求进行相应的调整。另外,如果数据来自数据库或 API,只需替换相应的数据获取代码即可。例如,使用 pd.read_sql() 从数据库读取数据,或者使用 requests 库调用 API 获取数据。

七、合并与拆分示例代码

在这里插入图片描述

使用Python库来合并或拆分PPT文件,并保持原始设计和格式,您可以借助于python-pptx库。这是一个专门处理PowerPoint文件的Python库,可以读取、修改和创建PPTX文件。以下是使用python-pptx实现合并与拆分的示例代码:

  1. 合并多个PPT文件成一个
from pptx import Presentation
from os.path import join, isfiledef merge_ppt_files(input_files, output_file):# 创建一个新的PPT作为合并目标merged_ppt = Presentation()for input_file in input_files:if not isfile(input_file):raise FileNotFoundError(f"File {input_file} not found.")# 打开源PPT文件source_ppt = Presentation(input_file)# 将源PPT中的每一张幻灯片复制到合并PPT中for slide in source_ppt.slides:merged_ppt.slides.add_slide(slide)# 保存合并后的PPT文件merged_ppt.save(output_file)# 使用示例
input_files = ['path_to_ppt1.pptx', 'path_to_ppt2.pptx', 'path_to_ppt3.pptx']
output_file = 'merged_ppt.pptx'
merge_ppt_files(input_files, output_file)
  1. 将一个PPT拆分为多个
from pptx import Presentation
from os.path import exists, joindef split_ppt(input_file, output_template, slides_per_file):if not exists(input_file):raise FileNotFoundError(f"File {input_file} not found.")source_ppt = Presentation(input_file)total_slides = len(source_ppt.slides)# 分组幻灯片slide_groups = [source_ppt.slides[i:i+slides_per_file] for i in range(0, total_slides, slides_per_file)]for index, group in enumerate(slide_groups, start=1):# 创建一个新的PPT作为目标文件target_ppt = Presentation()# 将当前分组的幻灯片添加到目标PPT中for slide in group:target_ppt.slides.add_slide(slide)# 根据模板生成输出文件名,并保存output_file = output_template.format(index)target_ppt.save(output_file)# 使用示例
input_file = 'source_ppt.pptx'
output_template = 'split_ppt_{index}.pptx'  # 输出文件名模板,如:split_ppt_1.pptx, split_ppt_2.pptx等
slides_per_file = 10  # 每个输出文件包含的幻灯片数量
split_ppt(input_file, output_template, slides_per_file)

请注意,在使用上述代码前,请确保已通过pip install python-pptx安装了python-pptx库。这些示例代码会保持原始PPT文件的设计和格式不变,因为它们直接将源文件中的幻灯片复制到目标文件中。

八、母版和版式操作示例代码

在这里插入图片描述

python-pptx库中,您可以对PowerPoint母版和版式进行自定义设计,以确保整个演示文稿风格一致。以下是如何使用该库进行母版和版式操作的示例:

  1. 自定义母版设计
from pptx import Presentation
from pptx.dml.color import RGBColor
from pptx.enum.dml import MSO_THEME_COLOR, MSO_FILL_TYPE
from pptx.util import Inchesdef customize_master(presentation, background_color, font_name, font_size, font_color):# 获取默认母版default_master = presentation.slide_masters[0]# 设置背景色background_fill = default_master.background.fillbackground_fill.type = MSO_FILL_TYPE.SOLIDbackground_fill.solid()background_fill.fore_color.rgb = RGBColor(*background_color)# 设置字体样式(母版级)for placeholder in default_master.placeholders:if placeholder.is_text_frame:tf = placeholder.text_frametf.paragraphs[0].font.name = font_nametf.paragraphs[0].font.size = Pt(font_size)tf.paragraphs[0].font.color.rgb = RGBColor(*font_color)# 如果需要设置主题颜色方案,可以操作default_master.theme,例如:# theme_colors = default_master.theme.theme_colors# theme_colors.get_or_add(MSO_THEME_COLOR.ACCENT_1).rgb = RGBColor(*accent_1_color)# 使用示例
presentation = Presentation('template.pptx')  # 加载或新建一个PPT
customize_master(presentation,background_color=(245, 245, 245),  # 背景颜色为浅灰色(RGB值)font_name='Arial',  # 字体为Arialfont_size=14,  # 字体大小为14磅font_color=(0, 0, 0),  # 字体颜色为黑色(RGB值)
)presentation.save('customized_template.pptx')
  1. 应用或修改幻灯片版式
from pptx import Presentation
from pptx.enum.shapes import PP_PLACEHOLDERdef apply_or_modify_layout(presentation, slide_index, layout_type, text=None, image_path=None):slide = presentation.slides[slide_index]# 如果需要更改现有幻灯片的版式slide_layout = presentation.slide_layouts[layout_type]slide.slide_layout = slide_layout# 应用版式后,可以按需修改各个占位符的内容if text:title_placeholder = slide.placeholders.get(title_shape_type=PP_PLACEHOLDER.TITLE)title_placeholder.text = textif image_path:content_placeholder = slide.placeholders.get(title_shape_type=PP_PLACEHOLDER.CONTENT)left, top = content_placeholder.left, content_placeholder.toppic = slide.shapes.add_picture(image_path, left, top, height=Inches(5), width=Inches(7))# 使用示例
presentation = Presentation('existing_presentation.pptx')apply_or_modify_layout(presentation,slide_index=0,  # 第一张幻灯片layout_type=1,  # 应用第二种版式(从0开始计数)text="New Title",  # 更改标题文字image_path="image.jpg",  # 插入图片
)presentation.save('modified_presentation.pptx')

请确保已安装python-pptx库,并根据实际需求调整上述示例代码。通过这些操作,您可以实现对母版和版式的自定义设计,以及快速标准化幻灯片内容布局。

九、自动化流程集成示例代码

在这里插入图片描述

要将PPT自动化操作集成到更大的工作流或自动化脚本中,您可以利用Python的调度库(如scheduleAPScheduler)来定时执行任务,或者结合事件驱动框架(如Flask-socketioCelery)来响应特定事件触发的PPT更新。以下是一些示例:

  1. 定时生成报告

使用schedule库创建定时任务:

import schedule
import time
from your_ppt_script import generate_report_ppt  # 假设您有一个名为generate_report_ppt的函数,用于生成报告PPTdef job():generate_report_ppt()  # 调用生成报告PPT的函数print("Report PPT generated at:", time.ctime())# 每天凌晨3点执行任务
schedule.every().day.at("03:00").do(job)while True:schedule.run_pending()time.sleep(1)  # 防止过于频繁地检查待执行任务

使用APScheduler库创建定时任务(更高级的功能,如持久化任务、多线程/进程等):

from apscheduler.schedulers.blocking import BlockingScheduler
from your_ppt_script import generate_report_pptdef job():generate_report_ppt()scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', days=1, start_date='2023-09-6 03:00:00')  # 每天凌晨3点执行
scheduler.start()
  1. 响应事件触发的PPT更新

假设您有一个基于Flask的应用,并使用Flask-SocketIO处理实时事件:

from flask import Flask, request
from flask_socketio import SocketIO, emit
from your_ppt_script import update_ppt_on_eventapp = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)@socketio.on('update_request')
def handle_update_event(data):event_data = data['event_data']update_ppt_on_event(event_data)  # 调用处理事件并更新PPT的函数emit('ppt_updated', {'status': 'success', 'message': 'PPT updated successfully'})if __name__ == '__main__':socketio.run(app)

使用Celery作为任务队列,响应事件并异步更新PPT:

from celery import Celery
from your_ppt_script import update_ppt_on_eventapp = Celery('tasks', broker='pyamqp://guest@localhost//')  # 使用RabbitMQ作为消息代理@app.task
def async_update_ppt(event_data):update_ppt_on_event(event_data)# 在事件处理器中调用异步任务
def handle_event(event_data):async_update_ppt.delay(event_data)

以上示例展示了如何将PPT自动化操作集成到定时任务或响应事件的工作流中。根据实际应用场景选择合适的库和方法,确保PPT生成与更新能够无缝融入您的自动化脚本。

十、python-pptx基础操作示例代码

在这里插入图片描述

确实,python-pptx 是一个功能强大的Python库,专门用于创建、读取、修改Microsoft PowerPoint .pptx 文件。它通过提供详细的API接口,使得开发者可以高效且精确地控制PPT的各种元素和属性。以下是使用python-pptx库进行PPT自动化操作的一些关键步骤和示例:

  1. 安装库

首先确保已安装python-pptx库:

pip install python-pptx
  1. 创建新演示文稿
from pptx import Presentation# 创建一个新的PPT文件
pres = Presentation()# 添加一张新的幻灯片
slide_layout = pres.slide_layouts[6]  # 选择一个预定义的布局(例如,标题和内容布局)
new_slide = pres.slides.add_slide(slide_layout)
  1. 添加内容

插入文本

title_shape = new_slide.shapes.title
title_shape.text = "Presentation Title"# 或者添加在内容区
content_box = new_slide.placeholders[1]
tf = content_box.text_frame
p = tf.add_paragraph()
p.text = "Slide Content"

插入图片

from pptx.util import Inchesimg_path = "path_to_your_image.jpg"
left = top = Inches(1.0)  # 图片位置
pic = new_slide.shapes.add_picture(img_path, left, top, height=Inches(5.0))

插入表格

table = new_slide.shapes.add_table(rows=2, cols=3, left=Inches(2), top=Inches(2)).table# 填充表格数据
for row in table.rows:for cell in row.cells:cell.text = "Cell Content"

插入形状和图表

shape = new_slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, left=Inches(1), top=Inches(1), width=Inches(3), height=Inches(2))chart_data = ChartData()
chart_data.categories = ['Category1', 'Category2']
chart_data.add_series('Series1', (1, 2, 3, 4, 5))chart = new_slide.shapes.add_chart(XL_CHART_TYPE.COLUMN_CLUSTERED, left, top, width=Inches(5), height=Inches(3), chart_data=chart_data).chart
  1. 保存文件
pres.save('output.pptx')

综上所述,python-pptx库为Python开发者提供了全面、灵活的手段来自动化处理.pptx文件,无论是批量生成报告、自动化更新现有PPT,还是构建复杂的工作流集成,都能满足需求。结合上述示例代码和库文档,您可以根据具体应用场景编写相应的自动化脚本。

十一、python-pptx进阶应用示例代码

在这里插入图片描述

除了基础的创建和编辑操作外,python-pptx还支持更高级别的定制化功能,以满足更为复杂的需求。下面对这些进阶应用进行详细说明:

  1. 样式设置

python-pptx允许对文本、形状、表格、图表等元素的样式进行精细调整,包括但不限于以下方面:

  • 字体:设置字体类型、大小、颜色、加粗、斜体、下划线、删除线等属性。

    font = p.font
    font.name = 'Arial'
    font.size = Pt(12)
    font.color.rgb = RGBColor(0x44, 0x66, 0xAA)
    font.bold = True
    font.italic = False
    
  • 填充:指定形状或文本框的填充颜色、渐变、图案或图片填充。

    fill = shape.fill
    fill.solid()
    fill.fore_color.rgb = RGBColor(0xFF, 0xCC, 0x00)  # 设置纯色填充# 或者使用渐变填充
    fill.gradient()
    fill.gradient_stops.add(RGBColor(0x00, 0x00, 0xFF), position=0)
    fill.gradient_stops.add(RGBColor(0xFF, 0xFF, 0xFF), position=1)
    
  • 边框:定义线条样式、颜色、宽度及边角效果。

    line = shape.line
    line.color.rgb = RGBColor(0x00, 0x88, 0x00)
    line.width = Pt(1.5)
    line.dash_style = MSO_LINE.DASH_DOT  # 设置虚线样式
    
  • 阴影与三维效果:为形状添加阴影、更改其深度和方向,以及应用三维旋转和透视效果。

    shadow = shape.shadow
    shadow.visible = True
    shadow.style = MSO_SHADOW.STYLE_OUTER
    shadow.blur_radius = Pt(½)
    shadow.color.rgb = RGBColor(0x99, 0x99, 0x99)# 三维效果
    shape.three_d_format.depth = Pt(10)
    shape.three_d_format.bevel_top_depth = Pt(2)
    shape.three_d_format.bevel_top_size = Pt(4)
    
  1. 主题管理

python-pptx支持应用、修改甚至创建自定义的主题(也称为“设计”),以保持演示文稿整体风格的一致性。

  • 应用预定义主题:从已有的主题库中选择并应用到整个演示文稿。

    theme_path = 'path/to/theme.xml'  # 主题文件路径
    pres.slide_master.part.drop_theme(theme_path)
    
  • 修改主题元素:调整主题的颜色方案、字体集、效果样式等。

    theme = pres.slide_master.theme
    color_scheme = theme.color_scheme
    color_scheme.colors[MSO_COLOR_INDEX.ACCENT_1].rgb = RGBColor(0xEE, 0xBB, 0xEE)major_font = theme.major_font
    major_font.typeface = 'Calibri'effect_scheme = theme.effect_scheme
    effect_scheme.fill_format.fill_type = PP_FILL.SOLID  # 更改默认填充类型
    
  • 自定义主题:通过创建新的主题XML文件或直接操作主题XML结构来实现完全自定义的主题设计。这通常涉及到对Open XML标准的深入理解。

  1. 动画和过渡效果

尽管python-pptx库本身并不直接支持创建或编辑动画和过渡效果,但因为.pptx文件实质上是一个遵循Open Packaging Conventions(OPC)标准的ZIP压缩包,内部包含一系列XML文件,因此可以通过以下方式间接实现:

  • 使用第三方库:某些库如python-docx可能提供了对动画和过渡效果的有限支持,或者可以寻找专门针对PPT动画的扩展库。

  • 直接编辑XML:解压.pptx文件,定位到包含动画和过渡信息的XML文件(如ppt/slides/slide1.xml中的<p:timing><p:transition>元素),使用Python的XML处理库(如lxml)进行手动编辑。这种方法要求对Open XML标准有深入了解,并且需要注意重新打包时保持文件结构的完整性。

综上所述,借助python-pptx库及其提供的进阶功能,Python开发者能够实现对.pptx文件的深度定制,包括样式设定、主题管理以及间接实现动画和过渡效果。这些能力使得在批量生成报告、自动化更新现有PPT,以及构建复杂工作流集成等场景下,能够充分满足各种特定需求。结合上述示例代码、库文档及可能的第三方工具,您可以根据实际项目要求编写相应的自动化脚本。

十二、win32com基础功能示例代码

在这里插入图片描述

在这里插入图片描述

以下是一段使用 win32com 库操作 Microsoft PowerPoint 的示例代码,展示了如何打开一个现有的 .ppt 文件,向其中添加一个新的幻灯片,插入文字、形状和图片,并设置一些基本的动画效果。最后,保存修改并关闭 PowerPoint 应用程序。

import os
import win32com.client as win32# 初始化 PowerPoint 应用程序实例
powerpoint_app = win32.Dispatch("PowerPoint.Application")# 设置是否显示 PowerPoint 界面(True为显示,False为隐藏)
powerpoint_app.Visible = True  # 可根据需求调整# 打开指定路径下的旧版 .ppt 文件
presentation_path = r"C:\path\to\your\presentation.ppt"
presentation = powerpoint_app.Presentations.Open(presentation_path)# 向演示文稿末尾添加新的幻灯片
new_slide = presentation.Slides.Add(Index=presentation.Slides.Count + 1, Layout=ppLayoutTitleOnly)# 在幻灯片标题处插入文字
title_shape = new_slide.Shapes.Title
title_shape.TextFrame.TextRange.Text = "New Slide Title"# 在幻灯片正文区域插入一个矩形形状,并添加文字
left_margin = 100
top_margin = 200
width = 300
height = 100
rectangle_shape = new_slide.Shapes.AddShape(Type=1, Left=left_margin, Top=top_margin, Width=width, Height=height)
rectangle_text = rectangle_shape.TextFrame.TextRange
rectangle_text.Text = "Rectangle Text"# 设置矩形形状填充颜色和边框样式
rectangle_shape.Fill.ForeColor.RGB = RGB(255, 128, 0)  # 填充为橙色
rectangle_shape.Line.Weight = 2  # 边框粗细为2磅
rectangle_shape.Line.DashStyle = 3  # 边框样式为虚线# 插入图片
image_path = r"C:\path\to\your\image.jpg"
with open(image_path, 'rb') as image_file:image_data = image_file.read()
image_shape = new_slide.Shapes.AddPicture(ImageFile=image_data, LinkToFile=False, SaveWithDocument=True,Left=left_margin + width + 50, Top=top_margin, Width=200, Height=150)# 添加动画效果
title_shape.AnimationSettings.EntryEffect = ppEffectFade  # 幻灯片标题淡入效果
rectangle_shape.AnimationSettings.EntryEffect = ppEffectZoom  # 矩形形状缩放效果
rectangle_shape.AnimationSettings.AnimateText = False  # 不对矩形内的文字应用动画
image_shape.AnimationSettings.EntryEffect = ppEffectAppear  # 图片出现效果# 设置动画顺序及持续时间
for shape in [title_shape, rectangle_shape, image_shape]:shape.AnimationSettings.PlaySettings.PlayOnClick = True  # 点击鼠标时播放动画shape.AnimationSettings.PlaySettings.Speed = 2  # 动画速度为中速# 保存更改并关闭 PowerPoint 应用程序
presentation.Save()
presentation.Close()
powerpoint_app.Quit()# 释放资源
del powerpoint_app

请注意,使用此代码前需要确保已安装 pywin32 库(即 win32com),且目标计算机上已安装兼容的 Microsoft PowerPoint 版本。同时,请替换示例中的文件路径 (presentation_pathimage_path) 为实际文件所在的路径。

这段代码仅作为示例,展示了 win32com 库的部分功能。根据实际需求,您还可以进一步扩展代码,以利用 PowerPoint 的更多高级功能,如 VBA 宏、复杂动画、交互式元素、图表、数据绑定等。

十三、win32com高级功能示例代码

在这里插入图片描述

在这里插入图片描述

win32com 提供了丰富的接口来操作 PowerPoint 的各种高级功能。下面是一些具体的扩展示例,涵盖 VBA 宏、复杂动画、交互式元素以及图表数据绑定:

  1. 使用 VBA 宏

如果您已经有一个现成的 VBA 宏代码,想要在 Python 脚本中调用它,可以使用 Run 方法。假设您的 PowerPoint 演示文稿中有一个名为 MyMacro 的宏:

# 调用名为 "MyMacro" 的 VBA 宏
presentation.Run("MyMacro")

如果需要传递参数给宏,请查阅 VBA 宏的定义以了解参数类型和顺序,然后在 Run 方法中按照顺序传入相应的值。

  1. 创建复杂动画

除了基础的动画效果,win32com 还允许您创建更复杂的动画序列,如自定义路径动画、触发器动画等。以下是一个创建自定义路径动画的例子:

# 获取要添加路径动画的形状
shape_to_animate = new_slide.Shapes("Rectangle 1")# 创建一个路径动画
path_animation = shape_to_animate.AddAnimation(AnimationType=msoAnimTypePath,Trigger=msoAnimTriggerOnPageClick,  # 点击幻灯片时触发
)# 设置路径动画的路径(此处为一个简单的“心形”路径)
path_points = [(100, 60), (90, ½0), (60, 90), (30, 90), (10, 60), (30, 30), (60, 10), (90, 30), (100, 60)]
path = presentation.Path(1, msoPathCurve, path_points)
path_animation.Path = path# 设置动画的速度和重复次数
path_animation.Timing.Duration = 3  # 持续3秒
path_animation.Timing.RepeatCount = 1  # 重复一次# 设置动画的开始方式(与其它动画同时开始)
path_animation.Timing.Start = msoAnimAfterPrevious  # 在前一个动画结束后开始
  1. 添加交互式元素

PowerPoint 支持多种交互式元素,如超链接、动作按钮等。以下是如何添加一个点击后跳转至网页的动作按钮:

# 添加一个动作按钮
button_shape = new_slide.Shapes.AddOLEObject(Left=100, Top=200, Width=80, Height=50, ClassName="Forms.CommandButton.1")# 设置按钮的外观(可选)
button_shape.TextFrame.TextRange.Text = "Visit Website"
button_shape.TextFrame.TextRange.Font.Color.RGB = RGB(0, 0, 255)
button_shape.Fill.ForeColor.RGB = RGB(255, 255, 255)# 为按钮添加点击事件,使其跳转至指定网页
hyperlink_address = "https://example.com"
button_shape.ActionSettings(ppMouseClick).Hyperlink.Address = hyperlink_address
  1. 图表数据绑定

如果您需要动态创建或更新 PowerPoint 中的图表数据,可以先创建图表,然后通过 Excel 对象模型来操作数据。以下是一个简单示例:

# 在幻灯片上添加一个柱状图
chart_shape = new_slide.Shapes.AddChart2(Left=100, Top=100, Width=500, Height=300, ChartType=xlColumnClustered)# 获取图表对应的 Excel 工作簿和工作表
excel_workbook = chart_shape.Chart.ChartData.Workbook
excel_worksheet = excel_workbook.Worksheets(1)# 写入数据到 Excel 工作表
data = [["Category", "Value"],["Category A", 10],["Category B", 20],["Category C", 30]
]
for row_index, row_data in enumerate(data, start=2):for col_index, value in enumerate(row_data):excel_worksheet.Cells(row_index, col_index).Value = value# 更新图表数据源范围
chart_shape.Chart.SetSourceData(Source=excel_worksheet.Range("A1:B4"))# 保存更改并关闭 Excel 工作簿(无需手动保存,因为已设置为与 PowerPoint 文档一起保存)
excel_workbook.Close(SaveChanges=True)

以上示例展示了如何使用 win32com 库扩展 Python 脚本来实现 PowerPoint 中的 VBA 宏调用、复杂动画、交互式元素和图表数据绑定等功能。根据实际需求,您可以结合这些示例进行定制化开发。记得在使用这些功能前,确保安装了 pywin32 库,并在运行环境中有兼容的 Microsoft PowerPoint 和 Excel 应用程序。

十四、comtypes基础功能示例代码

在这里插入图片描述

comtypes 是另一个 Python 库,它提供了与 Microsoft Office 应用程序(包括 PowerPoint)的 COM 组件进行交互的能力。虽然 win32com 也是基于 COM 技术,但 comtypes 采取了不同的方法实现,可能更适合需要更底层控制或者跨平台(尽管在非 Windows 平台上使用 PowerPoint 的 COM 组件仍然受限)的场景。以下是一些使用 comtypes 与 PowerPoint 进行交互的示例代码片段:

注意: 使用 comtypes 时,请确保已通过 pip install comtypes 安装了该库。

  1. 启动 PowerPoint 应用程序
import comtypes.client# 启动 PowerPoint 应用程序实例
powerpoint = comtypes.client.CreateObject("Powerpoint.Application")
powerpoint.Visible = True  # 设置为 True 以显示 PowerPoint 界面
  1. 创建一个新的演示文稿
# 创建一个新的空白演示文稿
presentation = powerpoint.Presentations.Add()
  1. 添加新的幻灯片
# 添加一张新的幻灯片(默认布局)
new_slide = presentation.Slides.Add(Index=presentation.Slides.Count + 1, Layout=ppLayoutTitleOnly)
  1. 操作幻灯片内容
# 获取标题文本框并设置文本
title_shape = new_slide.Shapes.Title
title_shape.TextFrame.TextRange.Text = "My Presentation Title"# 添加一个文本框并设置内容
left, top, width, height = (100, 150, 300, 100)
text_box = new_slide.Shapes.AddTextbox(Orientation=ppVertical, Left=left, Top=top, Width=width, Height=height)
text_box.TextFrame.TextRange.Text = "This is some sample text."# 设置文本样式
text_range = text_box.TextFrame.TextRange
text_range.Font.Name = "Arial"
text_range.Font.Size = 14
text_range.Font.Bold = True
  1. 保存演示文稿
# 保存演示文稿到指定文件路径
file_path = "C:\\path\\to\\my_presentation.pptx"
presentation.SaveAs(file_path, FileFormat=ppSaveAsDefault)
  1. 关闭 PowerPoint 应用程序
# 关闭演示文稿并退出 PowerPoint
presentation.Close()
powerpoint.Quit()

十五、comtypes高级功能示例代码

在这里插入图片描述

  1. 创建复杂动画

对于复杂动画的创建,comtypes 可能需要更深入地操作 PowerPoint 的 API 结构。由于 comtypes 提供的是直接访问 COM 接口的方式,创建复杂动画可能涉及到直接构建和配置相关的 COM 对象。具体的实现会比较复杂,通常需要查阅 PowerPoint 的官方 COM API 文档以获取详细接口信息和参数要求。

  1. 添加交互式元素

添加交互式元素,如超链接、动作按钮等,同样可以通过直接操作 PowerPoint COM 对象实现。例如,创建动作按钮并设置其点击事件可以参考以下代码:

# 添加一个动作按钮
action_setting = comtypes.gen.PowerPoint.PpActionType.ppActionHyperlink
left, top, width, height = (100, 100, 100, 50)
button_shape = new_slide.Shapes.AddShape(Type=1, Left=left, Top=top, Width=width, Height=height)
button_shape.ActionSettings(action_setting).Hyperlink.Address = "http://example.com"
  1. 图表数据绑定

对于图表数据绑定,comtypes 可以通过操作 PowerPoint 图表的 ChartData 属性以及相关的 Excel COM 对象来实现。这通常涉及打开图表的数据工作簿,写入数据,然后更新图表数据源。具体实现细节与使用 win32com 类似,只是操作接口的对象类型和方法调用有所不同。

请注意,由于 comtypes 直接操作 COM 接口,其代码往往比使用 win32com 更加底层和复杂。在实际应用中,您需要根据项目的具体需求和对底层控制的要求,权衡选择 win32comcomtypes。对于大多数 Office 自动化任务,win32com 提供的高层封装通常更为便捷。然而,如果需要更精细的控制或者特定的性能优化,comtypes 可能是更好的选择。

十六、知识点归纳示例代码

在这里插入图片描述

  1. Python库的选择
  • python-pptx:这是一个专门针对.pptx文件格式的Python库,用于创建、修改和操作PowerPoint演示文稿。它提供了面向对象的接口,便于处理幻灯片、形状、文本、表格、图表、图片、主题等元素。
  • comtypeswin32com.client:这两个库允许通过COM接口直接与PowerPoint应用程序交互,适用于需要高级自动化功能(如触发宏、使用特定版本的PowerPoint特性、实时预览等)或需要操作运行中的PowerPoint实例的情况。comtypes 提供了更底层的COM访问,而 win32com.client 在Windows环境下提供更易用的封装。
  1. python-pptx 基础操作
  • 创建新PPT:使用 Presentation() 函数创建一个新的PPT对象。
  • 添加幻灯片:通过 presentation.slides.add_slide(layout) 添加新幻灯片,其中 layout 是指定的幻灯片布局。
  • 操作幻灯片内容
    • 文本:添加、修改或删除文本框内容,设置字体、颜色、对齐方式等属性。
    • 形状:插入、移动、删除各种形状,如矩形、线条、箭头等,并调整其样式。
    • 图片:插入图片,调整大小、位置和剪裁。
    • 表格:创建表格,填充数据,设置样式(边框、填充、单元格合并等)。
    • 图表:插入图表,绑定数据,设置图表类型、系列、轴标签等。
    • 主题:应用或修改主题,包括字体、颜色方案、背景样式等。
    • 保存PPT:使用 presentation.save(path) 将修改后的PPT保存到指定路径。
  1. comtypes或 win32com.client基础操作
  • 启动/关闭PowerPoint:创建PowerPoint应用程序对象,设置其可见性,并在操作完成后关闭。

  • 新建/打开/保存PPT:直接通过PowerPoint对象的API方法创建新文件、打开现有文件和保存文件。

  • 操作幻灯片

    • 添加/删除/复制幻灯片:使用PowerPoint对象的API方法管理幻灯片集合。
    • 操作内容:与 python-pptx 类似,但通过COM接口直接操作PowerPoint对象模型,可能需要更复杂的API调用。
    • 动画与交互
      • 添加动画效果:设置幻灯片对象、文本、形状等元素的动画效果,包括动画类型、持续时间、触发方式等。
      • 添加交互元素:如超链接、动作按钮、触发宏等。
    • 实时预览与演示:由于直接操作运行中的PowerPoint实例,可以即时查看修改结果,进行演示或打印。
  1. 数据驱动的PPT自动化
  • 数据源绑定:将外部数据(如CSV、Excel、数据库等)与PPT中的表格、图表等元素关联,实现动态更新。
  • 模板填充:设计固定格式的PPT模板,编写脚本批量替换模板中的占位符文本、图片等,生成多个定制化的PPT。
  1. 最佳实践
  • 模块化与函数封装:将常用操作封装为函数或类,提高代码复用性和可维护性。
  • 异常处理:添加适当的错误处理机制,确保程序在遇到问题时能够优雅地处理或给出提示。
  • 批处理与并发:对于大量PPT的自动化处理,考虑使用多线程、多进程或异步IO提高处理效率。
  • 文档与注释:编写清晰的文档和注释,方便他人理解和维护代码。
  1. 应用场景
  • 定期报告生成:自动从数据源获取最新数据,生成定期更新的销售报告、市场分析报告等。
  • 批量修改与转换:快速修改多个PPT的共性部分,或将Word、Excel等文档批量转换为PPT。
  • 教学资源制作:根据预定义结构和内容,自动生成标准化的教学课件。
  • 数据分析可视化:将数据分析结果自动转化为PPT中的图表,便于汇报和分享。

在这里插入图片描述

综上所述,Python自动化操作PPT涵盖了一系列库的使用、基本操作方法、数据驱动的自动化流程,以及最佳实践和应用场景。通过这些知识点,开发者可以有效地利用Python提升PPT制作的效率,减少重复劳动,实现复杂且精准的PPT自动化生成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/804558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

词频统计程序

使用Hadoop MapReduce处理文本文件&#xff0c;Mapper负责将文本分割为单词&#xff0c;然后Reducer对每个单词进行计数&#xff0c;最后将结果写入输出文件。 // 定义WordCount公共类 public class WordCount {// 主入口方法&#xff0c;处理命令行参数public static void m…

计算机视觉技术:深度学习在美颜SDK中的应用探索

当下&#xff0c;计算机视觉技术在美颜领域的应用变得越来越重要。接下来&#xff0c;小编将讲解深度学习在美颜SDK中的应用&#xff0c;以及它如何改变我们对美颜技术的认识和期待。 一、美颜技术的发展 虽然美颜技术可以在一定程度上改善图像质量&#xff0c;但往往难以满足…

Vue - 4( 8000 字 Vue 入门级教程)

一&#xff1a; Vue 初阶 1.1 关于不同版本的 Vue Vue.js 有不同版本&#xff0c;如 vue.js 与 vue.runtime.xxx.js&#xff0c;这些版本主要针对不同的使用场景和需求进行了优化&#xff0c;区别主要体现在以下几个方面&#xff1a; 完整版 vs 运行时版&#xff1a; vue.js&…

大厂设计师倾心推荐的在线作图免费网站

在当今数字时代&#xff0c;绘画已经成为各行各业的必备技能。无论你是设计师、学生、创作者还是业余爱好者&#xff0c;免费的在线绘图软件都是发挥创造力和表达想法的理想选择。本文将介绍七款强大免费的在线绘图软件&#xff0c;让你轻松实现自己的创作梦想。你可以在不安装…

中间件漏洞攻防学习总结

前言 面试常问的一些中间件&#xff0c;学习总结一下。以下环境分别使用vulhub和vulfocus复现。 Apache apache 文件上传 (CVE-2017-15715) 描述: Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上&#xff0c;由于其跨…

UE5、CesiumForUnreal实现建筑白模生长动画效果

文章目录 1.实现目标2.实现过程2.1 实现原理2.2 具体代码2.3 应用测试3.参考资料1.实现目标 在上篇文章加载本地建筑轮廓GeoJson数据生成建筑白模的基础上,本文通过材质“顶点偏移”实现建筑白模生长效果,GIF动图如下所示: 2.实现过程 常用的实现建筑生长效果的方式有两种,…

Unity 获取RenderTexture像素颜色值

拿来吧你~ &#x1f9aa;功能介绍&#x1f32d;Demo &#x1f9aa;功能介绍 &#x1f4a1;不通过Texture2D 而是通过ComputerShader 提取到RenderTexture的像素值&#xff0c;效率有提升哦&#xff01; &#x1f4a1;通过扩展方法调用&#xff0c;方便快捷&#xff1a;xxxRT.G…

Pytorch Windows EOFError: Ran out of input when num_workers>0

关于深度学习的一些学习框架,我使用过pytorch,caffe,caffe2,openchatkit,oneflow等,最近我将长达几十万字的报错手册重新进行了整理,制作出一个新的专栏,主要记录这几种常见的开发框架在安装和使用过程中常见的报错,以及我是如何解决掉的,以此来帮助更多的深度学习开…

大语言模型如何工作?

此为观看视频How Large Language Model works的笔记。 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一个大语言模型&#xff08;LLM&#xff09;&#xff0c;可以生成类似人类的文本。本文阐述&#xff1a; 什么是LLMLLM如何工作LLM的应用场景 什么是…

触控芯片TS223B功能介绍, 适用于小家电、电子玩具、智能物联网等各种触控产品方案。

•应用领域• 适用于小家电、电子玩具、智能物联网等各种触控产品方案。 •功能介绍• 单键电容式触控芯片TS223B具有功耗低、触控灵敏度高、抗干扰能力强等众多优势&#xff0c;输出方式包括直接输出、电平翻转输出&#xff0c;并且输出的初始状态可以配置&#xff0c;能灵活满…

FPGA笔试面试题目记录

1 logic utilization 题目&#xff1a;Rank the following operations from lowest utilization to highest. Assume that all variables are 32-bit integers,that the operations are implemented using LUTs ony and that the synthesiser will produce an optimal digital…

基于YOLOv8的摄像头下铁路工人安全作业检测系统

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的铁路工人安全作业检测系统&#xff0c;属于小目标检测范畴&#xff0c;并阐述了整个数据制作和训练可视化过程&#xff0c; 博主简介 AI小怪兽&#xff0c;YOLO骨灰级玩家&#xff0c;1&#xff0…

3D模型在线轻量化工具

在计算机图形学领域&#xff0c;3D模型简化工具是一种强大的工具&#xff0c;用于减少模型的面数&#xff0c;以提高模型在渲染和处理过程中的性能。本文将全面介绍为何需要简化模型、简化的方法、常见的简化算法以及一款三维模型优化产品 的使用方法&#xff0c;帮助读者更好地…

IP爆发出蓬勃生命力,泡泡玛特2023营收过亿IP达到10个

“原来我们是基于潮流在事情&#xff0c;后来是基于流行&#xff0c;然后我们现在想去做一个更大的圈&#xff0c;我们想基于快乐。”在2023年9月的一场采访中&#xff0c;泡泡玛特CEO王宁如是说。半年后&#xff0c;泡泡玛特交出了一份还不错的成绩单。近期&#xff0c;泡泡玛…

[StartingPoint][Tier1]Crocodile

Task 1 What Nmap scanning switch employs the use of default scripts during a scan? (哪些 Nmap 扫描开关在扫描期间使用默认脚本&#xff1f;) -sC Task 2 What service version is found to be running on port 21? 发现端口 21 上运行的服务版本是什么&#xff1f…

DEVOPS详解

一、简介 DevOps一词是由英文 Development&#xff08;开发&#xff09;和 Operations&#xff08;运维&#xff09;组合而成&#xff0c;但它所代表的理念和实践要比单独或组合的两个词广阔的多。DevOps 涵盖了开发、测试、安全、协作方式、数据分析、运维等许多方面。传统的开…

w1r3s 靶机学习

w1r3s 靶机学习 0x01 IP C for command kali ip 10.10.10.128victim ip 10.10.10.1290x02 开扫 C sudo nmap -sn 10.10.10.0/24-sn 多一步入侵和轻量级侦察 发送四项请求 -sL 列表扫描&#xff0c;多用于探测可用ip&#xff0c;广播扫描 –send-ip 时间戳请求&#xff0…

分贝和功率相关的概念

对于刚接触分贝 (dB) 的人来说&#xff0c;分贝 (dB) 的概念很困难且令人困惑&#xff0c;因为射频中经常涉及增益、功率、电压&#xff0c;再加上dB、dBm、dBW、瓦特、毫瓦等名词&#xff0c;且通常需要在线性值和分贝值之间来回转换&#xff0c;所以需要耐心地梳理他们之间的…

常见性能测试工具对比

在性能测试工作中&#xff0c;我们常常会遇到好几个工具&#xff0c;但是每一个工具都有自己的优势&#xff0c;一时间不知道怎么选择。 今天我们就将性能测试常用的工具进行对比&#xff0c;这样大家在选择工具的时候心里就有底啦&#xff01; 阿里云PTS 性能测试PTS&#xff…

【群智能算法改进】一种改进的鹦鹉优化算法 改进鹦鹉优化器 IPO算法【Matlab代码#73】

文章目录 【获取资源请见文章第5节&#xff1a;资源获取】1. 原始鹦鹉优化算法PO2. 改进后的IPO算法2.1 自适应切换因子2.2 混合柯西和高斯变异 3. 部分代码展示4. 仿真结果展示5. 资源获取 【获取资源请见文章第5节&#xff1a;资源获取】 1. 原始鹦鹉优化算法PO 鹦鹉优化算法…