吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3115|回复: 11
收起左侧

[Python 原创] 根据docx文档自动转换为ppt

  [复制链接]
NewSea 发表于 2022-11-2 16:11
Word文档
image.png
其中+++++++++++++为下一页的分隔符
PPT文档样式
image.png
源代码:
import pptx as ppt
from pptx.util import Cm
import docx as word
import re

lineSpace = float(input('行间距: '))
fontsize = int(input('字体大小 (0将不会改变): '))

# read content from docx files
filename = input('文档名称: ')
rDocSoc = word.Document(filename)
wPPTSoc = ppt.Presentation()
# create slide
slideLayout = wPPTSoc.slide_layouts.get_by_name('Blank')
slide = wPPTSoc.slides.add_slide(slideLayout)
left = Cm(1.94)
top = Cm(1.15)
width = Cm(20.52)
height = Cm(10)
txBox = slide.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame

PPTCount = 0

def getStyle(p, check=False):
    for run in p.runs:
        if check == True:
            if run.font.name == None or run.font.size == None:
                continue
            else:
                return run.font.name, run.font.size
        else:
            return run.font.name, run.font.size

for p in rDocSoc.paragraphs:
    if '++++++++++' in p.text:
        PPTCount += 1
        slideLayout = wPPTSoc.slide_layouts.get_by_name('Blank')
        slide = wPPTSoc.slides.add_slide(slideLayout)
        left = Cm(1.94)
        top = Cm(1.15)
        width = Cm(20.52)
        height = Cm(10)
        txBox = slide.shapes.add_textbox(left, top, width, height)
        tf = txBox.text_frame

    else:
        # add text content
        slideP = tf.add_paragraph()
        if len(p.text) > 30:
            slideP.text = '\n'.join(re.findall(r'.{34}', p.text))
        else:
            slideP.text = p.text
        try:
            if fontsize == 0:
                slideP.font.font, slideP.font.size = getStyle(p, True)
            else:
                slideP.font.font, slideP.font.size = getStyle(p, True)
                slideP.font.size = fontsize
        except:
            slideP.font.font = getStyle(p)
        slideP.line_spacing = lineSpace

wPPTSoc.save('result.pptx')
print('成功!')

写的比较烂,实现功能为主了

免费评分

参与人数 2吾爱币 +8 热心值 +1 收起 理由
wushaominkk + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
weidechan + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| NewSea 发表于 2022-11-4 18:18
wushaominkk 发表于 2022-11-3 11:04
不是很实用,必须按照规定格式转化,还是感谢您分享编程思路

不是很明白你的意思,不实用的地方能具体说一下吗?
此外能麻烦你提供一下更好的实现思路吗?
 楼主| NewSea 发表于 2022-11-4 18:17
yu520 发表于 2022-11-3 08:48
这个word转PPT应该需要提前在word里面提前设定好文本格式把?

不用的,随便都行,但是不支持数学公式
yyqzh 发表于 2022-11-2 18:36
感谢楼主分享,挺好的思路,可以批量转到 PPT 里面再细化调整!
ysjd22 发表于 2022-11-2 18:55
挺好的思路啊。
yu520 发表于 2022-11-3 08:48
这个word转PPT应该需要提前在word里面提前设定好文本格式把?
wb20211111 发表于 2022-11-3 09:37
这种技术分享的帖子就应该大力点赞,哈哈,向大佬学习。
wushaominkk 发表于 2022-11-3 11:04
不是很实用,必须按照规定格式转化,还是感谢您分享编程思路
dsduanduan 发表于 2022-11-4 09:16
好东西,必须支持一下
qq63 发表于 2022-11-6 11:25
请问下PPT可以转Word么 ,需要打印
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 02:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表