前言:在这里并不是将PDF中的文字和图片转为相对应的PPT,只是简单的把PDF作为图片插入到PPT中!
最终呈现的效果如下图:
话不多说,直接开干!
第一步:先写出PDF转PPT的代码。
import os
import fitz
import pptx
from pptx.util import Inches
import PySimpleGUI as sg# 将 pysimplegui 命名成 sg
def pdf_to_img(pdf_path,ppt_name):
doc = fitz.open(pdf_path) # 打开pdf
img_dir = r'./'
img_path=[]
for page in doc: # 遍历pdf的每一页
zoom_x = 2.0 # 设置每页的水平缩放因子
zoom_y = 2.0 # 设置每页的垂直缩放因子
mat = fitz.Matrix(zoom_x, zoom_y)
pix = page.get_pixmap(matrix=mat)
pix.save(r"{}page-{}.png".format(img_dir, page.number)) # 保存
img_path.append(r"{}page-{}.png".format(img_dir, page.number))
#创建PPT,并将图片存入PPT中
ppt = pptx.Presentation() # 生成ppt对象
for i in img_path:
layout = ppt.slide_layouts[6] # 定义一个 PPT 页面 插入图片,这里选择样式6
slide = ppt.slides.add_slide(layout)
image = slide.shapes.add_picture(
image_file=i,
left=Inches(0),
top=Inches(0),
width=Inches(10),
height=Inches(8)
)
# 目前设置会撑满整张PPT,大小可自行调整
ppt.save(ppt_name)
for i in img_path:#这里写一个for循环把之前保存的图片再删掉
os.remove(i)
第二步:写一个窗口页面,并将之前写好的程序放进去。
在python中有很多包可以制作窗口,像tkinter,wxPython,PyQT,PySimpleGUI等,在这里我使用了 PySimpleGUI制作窗口页面。
sg.theme('LightBlue2')#选择一个窗口主题,就是窗口的颜色样式
#制作窗口页面的主体部分
layout = [
[sg.Text('PDF文件转化PPT文件',font=('微软雅黑',12))],
[sg.FilesBrowse('选择文件',key='s_file',target='f_name',font=('微软雅黑',13)),sg.I('',key='f_name',font=('微软雅黑',12),size=(66,1),text_color='blue')],
[sg.Output(size=(100,40),font=('宋体',10))],
[sg.Button('开始转化'),sg.Button('退出程序')]
]
window = sg.Window('pdf-ppt',layout,font=('宋体',15),default_element_size=(50,10))#创建窗口
while True:
event,values = window.read()
print(event,values)
if event == "开始转化":
if values['s_file'].split(';')[0].split('.')[1] == 'pdf':#判断你所选文件是否为PDF文件
print('文件个数:{}'.format(len(values['s_file'].split(';'))))#输出文件个数
for f in values['s_file'].split(';'):
base = os.path.basename(f)#获取转化前文件的绝对路径
ppt_name = r'{}.ppt'.format(base.split('.')[0])#制作转化后PPT的名称
pdf_to_img(f, ppt_name)#程序运行
print('转化成功!')
print(r'文件名称:{}'.format(ppt_name))
s = os.path.abspath(ppt_name)#获取转化后文件的绝对路径并输出
print(r'文件保存路径:{}'.format(s))
print('\n')
else:
sg.Popup('文件格式错误,请选择文件后缀名为.pdf的文件!')
if event in (None,'退出程序'):
break
window.close()
至此,一个PDF转PPT的小程序就制作完成了。
第三步:用pyinstaller将此程序打包成一个应用程序方便使用。
首先是安装pyinstaller,你可以打开pycharm进行安装,如下图。
然后就是创建一个“纯净”的环境,也就是创建一个新项目,如下图:
之后在pycharm新的项目里的终端输入:pyinstaller -F 你文件的名字
然后再敲回车就行。