NewSea 发表于 2022-11-2 16:11

根据docx文档自动转换为ppt

Word文档

其中+++++++++++++为下一页的分隔符
PPT文档样式

源代码:
```python
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('成功!')
```
写的比较烂,实现功能为主了

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 里面再细化调整!{:1_893:}

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么 ,需要打印{:1_907:}
页: [1] 2
查看完整版本: 根据docx文档自动转换为ppt