日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python纯代码pdf批量快速转换成ppt

發(fā)布時(shí)間:2023/12/9 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python纯代码pdf批量快速转换成ppt 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

pdf2ppt

使用python快速輕便的將pdf轉(zhuǎn)換成ppt文件

引用https://github.com/phasedOut/pdf2pptx 做的jpg合并成ppt

引用https://www.cnblogs.com/loveprogramme/p/11247037.html 做的pdf切割成jpg

github地址:https://github.com/Derekchen147/pdf2ppt

目錄

  • jpgs:保存分割出來的jpg
  • result:保存最終生成的ppt
  • source_files:保存想要轉(zhuǎn)變成ppt格式的pdf(會(huì)歷遍這個(gè)文件夾里面所有的pdf,要改幾個(gè)放幾個(gè))
  • requirements.txt:保存運(yùn)行需要的包

使用方法

將requirements.txt里面的包都下載下來,可以用

pip install -r requirements.txt -i https://pypi.douban.com/simple

下載全部

把想要改成ppt的pdf都放到source_files里面,然后直接

python pdf2ppt.py

代碼

代碼分為兩部分
一部分將source_files文件夾中的每一個(gè)pdf文件每一個(gè)切分成jpg并保存在jpgs文件夾里面
另一部分將jpgs文件夾里面的jpg圖片讀取出來并合并成ppt

import fitz import os import time from tqdm import tqdmimport os import datetime from PIL import Imagefrom pptx import Presentation from pptx.util import Inches, Ptfor filename in os.listdir('source_files/'):# 將pdf一張張切割成jpgtimestamp = time.time()print('切割pdf為jpg...')full_path = "./source_files/%s" % filename # 拼接,得到PDF文件的絕對(duì)路徑print(full_path)doc = fitz.open(full_path) # 打開一個(gè)PDF文件,doc為Document類型,是一個(gè)包含每一頁P(yáng)DF文件的列表rotate = int(0) # 設(shè)置圖片的旋轉(zhuǎn)角度,如果圖片方向不對(duì)的話改這個(gè)zoom_x = 2.0 # 設(shè)置圖片相對(duì)于PDF文件在X軸上的縮放比例zoom_y = 2.0 # 設(shè)置圖片相對(duì)于PDF文件在Y軸上的縮放比例trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate) #旋轉(zhuǎn)圖片,如果圖片方向不對(duì)的話改前面rotate的旋轉(zhuǎn)角度print("%s開始轉(zhuǎn)換..." % filename)if doc.pageCount > 1: # 獲取PDF的頁數(shù)for pg in tqdm(range(doc.pageCount)):page = doc[pg] # 獲得第pg頁pm = page.getPixmap(matrix=trans, alpha=False) # 將其轉(zhuǎn)化為光柵文件(位數(shù))new_full_name = filename.split(".")[0] # 保證輸出的文件名不變if not os.path.exists('./jpgs/%s' % new_full_name):os.mkdir('./jpgs/%s' % new_full_name)pm.writeImage("./jpgs/%s/%s-%s.jpg" % (new_full_name, new_full_name, pg)) # 將其輸入為相應(yīng)的圖片格式,可以為位圖,也可以為矢量圖# 我本來想輸出為jpg文件,但是在網(wǎng)頁中都是png格式(即調(diào)用writePNG),再轉(zhuǎn)換成別的圖像文件前,最好查一下是否支持else:page = doc[0]pm = page.getPixmap(matrix=trans, alpha=False)new_full_name = full_path.split(".")[0]pm.writeImage("%s.jpg" % new_full_name)print("%s轉(zhuǎn)換jpg完成!" % filename)print('耗時(shí):', time.time() - timestamp, 's')print('\n\n')

接下來將分割好的jpg文件讀取出來并且合并成ppt。可以在這里改ppt需要生成的大小,默認(rèn)是16*9

# 將分割好的jpg圖片整合到ppttimestamp = time.time()print('整合jpg為ppt...')# 將filename改成不帶格式名字的str,如file.pdf則filename = filefilename = filename.split(".")[0] # jpg保存的地址jpg_path = './jpgs/%s' % filenamepages = os.listdir(jpg_path)prs = Presentation()# 在這里修改ppt長寬格式。默認(rèn)是16*9prs.slide_width = Inches(16)prs.slide_height = Inches(9)for index, page in enumerate(tqdm(pages)):# 得到單張jpg圖片的地址jpg_file = "./jpgs/%s/%s-%d.jpg" % (filename,filename,index)# 獲取jpg文件的長寬image = Image.open(jpg_file)height = image.heightwidth = image.width# #Rotate 270 degrees if horizontal# if height > width:# adjusted = image.rotate(270, expand=True)# adjusted.save(jpg_file)# 設(shè)置ppt的slidetitle_slide_layout = prs.slide_layouts[0]slide = prs.slides.add_slide(title_slide_layout)# 將圖片插入slide中。# left和top表示圖片與slide邊框的距離,默認(rèn)為0# height=prs.slide_height, width=prs.slide_width調(diào)整圖片大小,默認(rèn)塞滿整個(gè)slideleft = top = 0slide.shapes.add_picture(jpg_file, left, top, height=prs.slide_height, width=prs.slide_width)prs.save('result/%s.pptx' % filename)print("成功保存ppt文件 %s.pptx", filename)print('耗時(shí):', time.time() - timestamp, 's')print('\n\n')

總結(jié)

以上是生活随笔為你收集整理的Python纯代码pdf批量快速转换成ppt的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。