根据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('成功!')
```
写的比较烂,实现功能为主了 wushaominkk 发表于 2022-11-3 11:04
不是很实用,必须按照规定格式转化,还是感谢您分享编程思路
不是很明白你的意思,不实用的地方能具体说一下吗?
此外能麻烦你提供一下更好的实现思路吗? yu520 发表于 2022-11-3 08:48
这个word转PPT应该需要提前在word里面提前设定好文本格式把?
不用的,随便都行,但是不支持数学公式 感谢楼主分享,挺好的思路,可以批量转到 PPT 里面再细化调整!{:1_893:} 挺好的思路啊。 这个word转PPT应该需要提前在word里面提前设定好文本格式把?
这种技术分享的帖子就应该大力点赞,哈哈,向大佬学习。 不是很实用,必须按照规定格式转化,还是感谢您分享编程思路 好东西,必须支持一下 请问下PPT可以转Word么 ,需要打印{:1_907:}
页:
[1]
2