Python ppt

news2024/9/20 14:58:36

python生成ppt,数据源为html

from lxml import  html
from pptx import Presentation
from pptx.util import Inches
from pptx.dml.color import RGBColor
from pptx.enum.shapes import MSO_SHAPE

# HTML代码
html_content = """
<html>
    <body>
        <div style="background-color: red; position: absolute; left: 50px; top: 200px; width: 100px; height: 20px;">Red Box</div>
        <div style="background-color: blue; position: absolute; left: 50px; top: 250px; width: 150px; height: 20px;">Blue Box</div>
        <div style="background-color: green; position: absolute; left: 50px; top: 300px; width: 200px; height: 20px;">Green Box</div>
    </body>
</html>
"""

# 将HTML转化为XML结构
html_tree = html.fromstring(html_content)

# 设置不同颜色的RGB颜色
color_map = {
    'red': RGBColor(255, 0, 0),
    'blue': RGBColor(0, 0, 255),
    'green': RGBColor(0, 255, 0),
    'white': RGBColor(255, 255, 255)
}

# 初始化PowerPoint演示文稿
prs = Presentation()

# 第一页幻灯片添加标题和副标题
title_slide_layout = prs.slide_layouts[0]
title_slide = prs.slides.add_slide(title_slide_layout)
title_slide.shapes.title.text = "测试标题"
title_slide.placeholders[1].text = "测试副标题"


# 第二页幻灯片(prs.slide_layouts[5]:空白布局)添加标题
blank_slide_layout = prs.slide_layouts[5]
blank_slide = prs.slides.add_slide(blank_slide_layout)
blank_slide.shapes.title.text = "HTML转化成PowerPoint例子"

# 获取样式方法
def parse_style(style):
    styles = {}
    for item in style.split(';'):
        if ':' in item:
            key, value = item.split(':')
            styles[key.strip()] = value.strip()
    return styles

# 转换CSS像素到PowerPoint英寸方法
def px_to_inches(px):
    return px / 96  # Assuming 96 pixels per inch

# 循环HTML中的div元素
for div in html_tree.xpath('//div'):
    style = div.attrib.get('style', '')
    styles = parse_style(style)
    
    # 提取样式,如果没有设置背景色,则默认为白色
    bg_color = styles.get('background-color', 'white')
    width = int(styles.get('width', '100px').replace('px', ''))
    height = int(styles.get('height', '100px').replace('px', ''))
    left = int(styles.get('left', '0px').replace('px', ''))
    top = int(styles.get('top', '0px').replace('px', ''))
    
    # 将CSS像素到PowerPoint英寸
    width_in_inches = Inches(px_to_inches(width))
    height_in_inches = Inches(px_to_inches(height))
    left_in_inches = Inches(px_to_inches(left))
    top_in_inches = Inches(px_to_inches(top))
    
    # 获取填充颜色
    fill_color = color_map.get(bg_color.lower(), RGBColor(255, 255, 255))

    # 将形状添加到幻灯片中
    shape = blank_slide.shapes.add_shape(
        MSO_SHAPE.RECTANGLE,  # 枚举
        left=left_in_inches,
        top=top_in_inches,
        width=width_in_inches,
        height=height_in_inches,
    )
    # 设置形状的填充颜色
    shape.fill.solid()
    shape.fill.fore_color.rgb = fill_color

# 保存演示文稿
prs.save('output.pptx')
print("PowerPoint file 'output.pptx' has been created.")

效果图

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

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

相关文章

【深度学习 transformer】使用pytorch 训练transformer 模型,hugginface 来啦

Hugging Face是一个致力于开源自然语言处理&#xff08;NLP&#xff09;和机器学习项目的社区。它由几个关键组件组成&#xff1a; Transformers&#xff1a;这是一个基于PyTorch的库&#xff0c;提供了各种预训练的NLP模型&#xff0c;如BERT、GPT、RoBERTa、DistilBERT等。它…

【陪诊系统-PC管理端】动态路由

先说说这里为什么要使用动态路由&#xff1f; 因为前面的菜单管理功能模块中&#xff0c;可以创建或修改不同权限&#xff0c;当前登录账号可以绑定不同的权限&#xff0c;不同权限能访问的功能页面不同&#xff0c;所以使用动态路由来控制。 而登录成功后&#xff0c;服务器…

Sentence-BERT实现文本匹配【对比损失函数】

引言 还是基于Sentence-BERT架构&#xff0c;或者说Bi-Encoder架构&#xff0c;但是本文使用的是参考2中提出的对比损失函数。 架构 如上图&#xff0c;计算两个句嵌入 u \pmb u u和 v \pmb v v​之间的距离(1-余弦相似度)&#xff0c;然后使用参考2中提出的对比损失函数作为…

docker 安装 rabbitmq

参考文档&#xff1a; https://hub.docker.com/_/rabbitmq/ https://www.rabbitmq.com/docs/download https://www.kuangstudy.com/zl/rabbitmq#1366643532940484610 执行下面的命令 docker run -d -it --name myrabbit -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PA…

“解决 Docker 启动失败:排查和修复 overlay2 存储驱动与网络模块问题”。

目录 1.报错如下 2.报错详解 1. ” 表明 overlay2 存储驱动挂载失败&#xff0c;找不到相应设备。 2.表明在路径中找不到 fuse-overlayfs 可执行文件。 3.表明加载 bridge 和 br_netfilter 模块失败。 4.及后续一系列关于停止服务的信息&#xff0c;是由于前面的错误导致的…

硬件生产厂家运维系统思路

当前硬件生产厂家运维已经逐渐摆脱原有的现场调试&#xff0c;初步诊断和运维已经进化为远程运维&#xff1b;主要方式为厂家建立运维系统&#xff0c;使用人员只需要关注厂家公众号或者登录官网&#xff0c;即可完成原来必须到现场才能解决的问题&#xff1b; 原弊端&#xff…

探讨 | 大模型在传统NLP任务的使用姿势

写在前面 今天给大家带来一篇震宇兄&#xff08;知乎邱震宇&#xff09;探讨大模型技术在提升传统NLP类任务效果上的应用方式的文章&#xff0c;主要从文本分类任务出发。 知乎&#xff1a;https://zhuanlan.zhihu.com/p/704983302PS&#xff1a;长文警告&#xff01;建议收藏…

Burp Suite Professional 2024.8 发布下载,新增功能概览

Burp Suite Professional 2024.8 (macOS, Linux, Windows) - Web 应用安全、测试和扫描 Burp Suite Professional, Test, find, and exploit vulnerabilities. 请访问原文链接&#xff1a;https://sysin.org/blog/burp-suite-pro/&#xff0c;查看最新版。原创作品&#xff0…

退火吗?C#/WinForm演示退火算法

退火模型&#xff1a;模拟退火算法&#xff08;Simulated Annealing, SA&#xff09;是一种概率型全局优化算法&#xff0c;灵感来源于物理学中的退火过程。它通过模拟金属退火过程中的加热和缓慢冷却&#xff0c;来寻找问题的近似全局最优解。算法开始时&#xff0c;初始温度设…

70万个哺乳动物功能基因集!这个数据库值得重视

生信碱移 Rummagene数据库 Rummagene 从 PubMed Central (PMC) 出版物提取了超70万个基因集&#xff0c;用于各类基因功能关联注释。 组学技术的引入逐渐将生物和生物医学研究从研究单个基因和蛋白质转向研究基因集、基因簇、分子复合物和基因表达模块。许多生物医学和生物研究…

log4j 清除MDC上下文 MDC分类日志

在项目里需要分类收集处理日志信息&#xff0c;使用 log4j的MDC在线程中添加分类信息。不过最近却出现日志信息记录错误的情况&#xff0c;具体来说&#xff0c;就是会出现本来是属于下一个分类的一部分信息莫名的记录到上一个分类的日志文件中了。这很显然是MDC信息错误造成的…

【nnUNet】环境安装

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ&#xff1a;870202403 公众号&#xff1a;VTK忠粉 前言 本文分享医疗分割模型nnUNet的环境安装教程&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0…

数据中台 | 数据智能平台产品系列文章,企业开发和盘活数据资产的利器!(上篇)

引言 发展数字经济&#xff0c;实现数字中国是我国的国家战略&#xff0c;坚定且不可动摇&#xff0c;近期随着《数据二十条》、《“数据要素”三年行动计划》、《关于加强数据资产管理的指导意见》等重磅政策的发布&#xff0c;使数字化转型成为越来越多企业增强竞争、扩大营收…

LabVIEW程序员错误排查思路

当LabVIEW程序员在开发过程中遇到难以解决的错误且网上搜不到答案时&#xff0c;需要采取系统性的方法进行排查和解决。这包括回顾代码逻辑、深入理解LabVIEW的底层机制、参考专业文献和求助社区等方式。下面将从多角度详细解读专业程序员在面对这种困境时的应对策略&#xff0…

【系统分析师】-面向对象方法

目录 1、基本概念 2、UML 2.1、基本结构 2.1.1.构造块 2.1.1.1、事物 2.1.1.2、关系 2.1.1.3、图形 2.1.2.规则 2.1.3.公共机制 2.2、41视图 3、面向对象分析OOA 3.1、用例模型 3.2、分析模型 4、面向对象设计OOD 4.1、细分 4.2、设计原则 5、面向对象的程序设…

一字线模组厂家的选择与使用技巧

在当今自动化与智能制造的浪潮中&#xff0c;一字线模组作为精密定位与传输的核心部件&#xff0c;其性能与质量直接关系到整个生产线的效率与稳定性。因此&#xff0c;选择合适的一字线模组厂家并掌握其使用技巧&#xff0c;对于提升企业竞争力至关重要。接下来我们跟着鑫优威…

四、配置三层交换实验组网

一、实验拓扑 二、实验目的 通过配置交换机&#xff0c;令不同vlan间的主机能够互相通信 三、实验步骤 SW12 <Huawei>undo terminal monitor Info: Current terminal monitor is off. <Huawei>system-view Enter system view, return user view with CtrlZ. [H…

Spring 学习笔记

概述 Spring 是一个企业级 J2EE 应用开发一站式解决方案&#xff0c;其提供的功能贯穿了项目开发的表现层、业务层和持久化层&#xff0c;同时&#xff0c;Spring 可以和其他应用框架无缝整合 Spring 的特性包括以下几个方面&#xff1a; 轻量&#xff1a;Spring 是一个轻量…

CISAW软件安全开发模型的核心思想

在软件安全开发的领域中&#xff0c;采用的模型与信息安全保障体系紧密相连&#xff0c;它们共同构成了一个坚实的防御机制。 这种模型不仅注重程序、数据和文档三个实体对象的全生命周期管理&#xff0c;还强调实现这些对象的可用性、完整性、真实性、机密性和不可否认性等关…

Cesium 展示——绘制等值线图

文章目录 需求分析资料需求 分析 首先需要开启地形数据 开启方式见:地形开启否则会遇到以下问题直接上实例代码export function getPoints