对于样式固定且需要每天更新的PPT,可以使用python自动完成并解放双手。以每天更新的降水预报照片为例,简单介绍一下脚本。
PPT固定格式
通常使用NCL在单个pdf中绘制包含多个图片的pdf格式的图片。要将这些图片粘贴到PPT中,必须先将pdf页面转换为png格式,然后剪切白色边缘。
从Pdf到png
此步骤主要使用fitz库
Import sys、fitz
Import OS
Import datetime
Defpymupdf _ fitz (pdfpath、imagepath) :
# pdfPath是pdf图片文件的完整目录
# imagePath是输出png图片目录
StartTime_pdf2img=da() #开始时间
打印(' imagepath=' imagepath)
PdfDoc=(pdfPath)
For pg in range):
Print('page={})。format(pg))
页面=pdf doc [pg]
Rotate=int(-90)
#角度尺寸的缩放系数为1.3,生成分辨率为2.6的图像。
#如果不在此处设置,则默认图片大小为792X612,dpi=96
zoom _ x=1.33333333 #;1056x816) (2 - 1584x1224)
Zoom _ y=1.33333333
Mat=(zoom _ x、zoom _ y)。prerotate (rotate)
Pix=(matrix=mat,alpha=false)
If not os。(imagePath):#确认要储存图片的资料夹存在
Os.makedirs(imagePath) #图片文件夹不存在时创建
#将图像写入指定的文件夹
(操作系统)。(imagepath,' {}。png '。format (pg))
EndTime_pdf2img=da()#结束时间
Print('pdf2img时间=',(end time _ pdf 2 img-start time _ pdf 2 img))。seconds)剪切白色角
此步骤主要使用PIL库
From PIL import Image、ImageOps
#剪切图片周围的白边
Defcrop _ margin (img _ fileobj,out,padding=(0,0,0,0)) :
# img_fileobj是原始图片的完整路径
# out是输出图像的完整路径
# padding对四个边界保留执行空大小
Image=image.open (img _ fileobj)。convert ('RGB ')
Ivt _ image=imageo(图像)
Bbox=ivt_image.getbbox()
Left=bbox[0]-padding[0]
Top=bbox[1]-padding[1]
Right=bbox[2] padding[2]
Bottom=bbox[3] padding[3]
Cropped _ image=image.crop ([left,top,right,bottom])
Cropped_image.save(out)
Return以下是主要使用pptx库的PPT制作部分的介绍。需要加载的内容包括
From pptx import Presentation
From import Inches、Pt、Cm
From import MSO_ANCHOR,PP_ALIGN新的空白页面
Defnew _ page (PRS,SLD _ layout _ title _ and _ content=6):
# PRS是PPT对象
# SLD_LAYOUT_TITLE_AND_CONTENT是页面样式,您可以根据实际需要更改编号
slide _ layout=[SLD _ layout _ title _ and _ content]
幻灯片=(slide _ layout)
Return
创建Prs=Presentation() # PPT
Slide=ne
w_page(prs) # 新建空白页面页面样式
添加图片
def Add_pic(slide, img, img_left, img_top, img_height): #slide为ppt页面对象 img_path = img #图片完整路径 left = Cm(img_left) top = Cm(img_top) pic = (img_path, left, top, height=Cm(img_height))
图片的相关参数,可以先手动贴一张图到ppt中,右键打开大小和位置,则可获取相关的大小和位置的参数信息。
图片大小及位置参数
添加文本框
def Add_txt(slide, text, text_left, text_top, text_width, text_height): # 预设位置和大小 left = Cm(text_left) top = Cm(text_top) width = Cm(text_width) height = Cm(text_height) # 添加文本框 txBox = (left, top, width, height) tf = # = MSO_ANCHOR.MIDDLE # 文本框中写入文字 para = () = text = PP_ALIGN.CENTER # = 1.5 # 1.5 倍的行距 ### 设置字体 # font = # = '微软雅黑' # 字体类型 # = True # 加粗 # = Pt(32) # 大小
与图片参数获取类似,可以现在ppt中手动添加文本框,再获取大小和位置参数
主程序伪代码示意
# @Author: Jiao B.F. # @Email: 1034745512@qq.com if __name__ == "__main__": prs = Presentation() # 新建ppt ... for i, img in enumerate(imgs): slide = new_page(prs) # 新建空白页面 print(img) valid1 = init + da(hours = i*acc) valid2 = init + da(hours = (i+1)*acc) # WRF预报 txt_info = r"{}月{:02d}日{:02d}时-{}月{:02d}日{:02d}时WRF模拟降水(UTC)".format( valid1.month, valid1.day, valid1.hour, valid2.month, valid2.day, valid2.hour ) crop_margin(img, img) # 切除白边 Add_pic(slide, img, 6.77, 0.73, 7.92) Add_txt(slide, txt_info, 6, 7.84, 13.4, 1.03) # EC预报 til = valid2.strftime("%Y-%m-%d_%H_%M_%S") ec_img = "ecplt_Single_pcp{}_{}_zoomout.png".format(acc, til) ec_full = os.(ec_dir, ec_img) txt_info = r"{}月{:02d}日{:02d}时-{}月{:02d}日{:02d}时EC预报降水(UTC)".format( valid1.month, valid1.day, valid1.hour, valid2.month, valid2.day, valid2.hour ) crop_margin(ec_full, ec_full) Add_pic(slide, ec_full, 0.43, 9.9, 7.92) Add_txt(slide, txt_info, -0.34, 17.01, 13.4, 1.03) # GFS 预报 valid2_bjt = valid2 + da(hours=8) til = valid2_bjt.strftime("%Y-%m-%d_%H_%M_%S") gfs_img = "gfsplt_Single_pcp{}_{}_zoomout.png".format(acc, til) gfs_full = os.(gfs_dir, gfs_img) if not os.(gfs_full): continue txt_info = r"{}月{:02d}日{:02d}时-{}月{:02d}日{:02d}时GFS预报降水(UTC)".format( valid1.month, valid1.day, valid1.hour, valid2.month, valid2.day, valid2.hour ) crop_margin(gfs_full, gfs_full) Add_pic(slide, gfs_full, 13.6, 9.9, 7.92) Add_txt(slide, txt_info, 12.29, 17.01, 13.4, 1.03) (';) # 保存ppt。重复运行脚本默认覆盖, # 注意不要在打开的时候运行脚本,会碰到权限的问题
1.《【怎么贴PPT】解放双手,使用python自动完成PPT》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《【怎么贴PPT】解放双手,使用python自动完成PPT》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/2544481.html