首页 > 编程语言 >python实现docx转pptx(word文档转幻灯片)

python实现docx转pptx(word文档转幻灯片)

时间:2023-10-13 12:33:06浏览次数:70  
标签:pptx docx word Pt slide pdf 幻灯片

以前都是手工将word内容复制粘贴到ppt中,实在受够了。

文心一言真是大忽悠,给的转换方案是用docx2pptx库,然而根本没有这个库,倒是可以用我下面的代码生成这个库:-)

网上很多方案是转成图片形式插入ppt,导致无法正常编辑ppt.

于是研究出以下方案:

1.先将word文档的页面设置改为自定义大小,使每一页文字可容纳于一张幻灯片

2.去掉word文档页码(否则后面读取时会把页码作为正文的一部分,还要处理),然后转换为pdf格式(以便于按页读取,因为用代码读取word文档的一页比较困难,参看我的上一篇文章:python 获取word页数 https://www.cnblogs.com/pu369/p/17757633.html)

3.读取pdf每一页的文字,粘贴到ppt中。(注意在代码中设置好文本框大小及字号,保证ppt的文本框比pdf页要大。否则会因段落的换行符而影响显示效果)

4.打开ppt选择设计模板。然后可以按正常的PPT进行编辑。

主要用到三个库:1.用docx2pdf将word转pdf  2.用 PyPDF2读取pdf    3.用pptx生成幻灯片

代码:

from pptx import Presentation
from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT,MSO_ANCHOR
from pptx.util import Pt
from docx2pdf import convert
import PyPDF2

wordfile = "1.docx"
pdffile = "{}{}".format(wordfile[:-4],"pdf")
# 将Word文档转换为pdf 
convert(wordfile, pdffile)

# 创建一个Presentation对象  
prs = Presentation()
#打开pdf文件
with open(pdffile, 'rb') as file:
    # 创建一个PDF Reader对象
    pdf_reader = PyPDF2.PdfFileReader(file)
    # 获取PDF文件中页面的数量
    num_pages = pdf_reader.numPages   
    # 读取一页的内容
    for i in range(0,num_pages):
        page = pdf_reader.getPage(i)
        pdftext = page.extractText()#如有页码,则读出的第一个字符为页码
        # 在演示文稿中添加幻灯片
        slide_layout = prs.slide_layouts[5] # 5是标题幻灯片的布局  
        slide = prs.slides.add_slide(slide_layout)
        # 在幻灯片上添加一个shapge,并设置高度和宽度
        shapes0 =  slide.shapes[0]
        shapes0.height = Pt(450)
        shapes0.width = Pt(660)
        #左右边距
        shapes0.top = Pt(100)
        shapes0.left = Pt(100)
        #在shape里面添加文本
        txt_frame = slide.shapes[0].text_frame
        txt_frame.text = pdftext      
        #段落左对齐
        for p in txt_frame.paragraphs:
            p.alignment = 1
            p.font.size = Pt(25)
        #文本框顶端对齐
        txt_frame.vertical_anchor = MSO_ANCHOR.TOP      # 保存演示文稿  
    prs.save('1.pptx')  

注意:代码主要适用于文字 ,表格也会变成文字形式,图片我没有试。

 

标签:pptx,docx,word,Pt,slide,pdf,幻灯片
From: https://www.cnblogs.com/pu369/p/17761824.html

相关文章

  • 2023-10-13 (error) ERR Client sent AUTH, but no password is set ==》redis访问密
    当你尝试在redis终端输入authxxx(auth是固定值,xxx是你的密码),然后终端报错:(error)ERRClientsentAUTH,butnopasswordisset意思:(错误)ERR客户端发送了AUTH,但未设置密码。原因:你没有设置redis访问密码。当然如果你非要设置访问密码,那么你可以在redis根目录找到redis.windo......
  • 使用 Open XML SDK 实现 html 富文本转换为 docx 格式示例
     使用OpenXMLSDK实现html富文本转换为docx格式文档相对复杂。下面是一个示例。手动检测<strong>和<em>标签并应用相应的文本格式。usingSystem;usingDocumentFormat.OpenXml;usingDocumentFormat.OpenXml.Packaging;usingDocumentFormat.OpenXml.Wordproces......
  • Java word文本分词器简单使用
    1、引入依赖<dependency><groupId>org.apdplat</groupId><artifactId>word</artifactId><version>1.2</version></dependency>2、使用@OverridepublicList&l......
  • Python word'str'(字符串前缀string prefix)的种类
    Python字符串前缀(Stringprefix) r'string'r'',用法是不会对后方字符串中的转义符进行转义,如: str=r'\n'print(str)#会直接输出\n,并不会输出换行 f'string'f'',用法是对字符进行格式化就和str.format()一样,会对{}进行格式化,如: str=f'你好,{}'......
  • python将pdf文件转word
    pdf转word前言今天有朋友让我帮忙将pdf转为word,我首先想到的就是python,经过一顿搜索,最终决定采用pdf2docx的方案,然而实际操作的时候踩了坑,所以就先找了在线工具给搞了,但是我是一个有坑必填(有征服欲......
  • pageoffice多用户同时在线编辑word文档
    转载:多用户同时编辑多用户同时编辑注意本文中展示的代码均为关键代码,复制粘贴到您的项目中,按照实际的情况,例如文档路径,用户名等做适当修改即可使用。总体来说,各种Web系统中的Word文档在线处理大体可以分为以下四种流转处理方式:A用户编辑完,流转给B用户修改,再流转给C用户修改,直......
  • python 获取word页数
    没想到获取个word页数这么简单的需求,实现起来还挺难。1.根据网上说法:word文档中不保存总页数,只是在渲染时才根据文字和表格等去摆放到一页上,摆放不下时才展现下一页。所以从docx中取不到总页数2.因此,仅用docx库不行,还需要用win32com。而win32com实际是:pipinstallpypiwin32 ......
  • word如何标题编号不乱
    一问题每回标题编号都乱的一批,得手动调整,这次学习视频中,留意一下里面的操作,恍然大悟,还是三人行,有我师哇,关门造车,造个寂寞 二解决先写字,再选择样式,让系统自己生成标题 ......
  • ImportError: cannot import name 'parse_xml' from 'docx.oxml'
    问题解决:查看每一个报错的文件,比如__init__.py, composer.py找到报错的这一行,比如:fromdocx.oxmlimportparse_xml替换为:fromdocx.oxml.parserimportparse_xml注意:可能有多个文件出现这个问题,需要逐一解决!......
  • WordPress网站被黑怎么办?【含解决方案】
    在我们的日常WordPress主题售后工作中,经常会有用户反馈网站出现问题,例如:阿里云提示后门木马文件;打开后跳转到其他地址;页面出现乱码;被添加了其他内容等,根据我们的经验,这种一般都是网站被黑导致的。 如何确认网站是否被黑根据以往经验,可以通过以下方式来判断:1、如果是阿里云提......