Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)



 

Python操作Word模块库文档

python文档 — python-docx 0.8.11 文档 (osgeo.cn)

python-docx — python-docx 0.8.11 documentation

Word转换PDF

使用office组件将word转换成PDF文件(缺点:只支持windows平台)

原理:使用python win32 库 调用word底层vba,将word转成pdf

安装

pip install pywin32

本地选装 office 套件,可以安装比较稳定的版本

常用方法与属性

函数名&属性&类  含义
win32com.client.gencache.EnsureDispatch()  设置word应用
ensureDispatch.Documents.Open(path)  读取数据
doc.ExportAsFixedFormat(pdfPath)  导出数据

代码

from win32com.client import gencache
from win32com.client import constants,gencache
def createPdf(wordPath, pdfPath):
  """
 word转pdf
 :param wordPath: word文件路径
 :param pdfPath: 生成pdf文件路径
 """
  word = gencache.EnsureDispatch('Word.Application')
  doc = word.Documents.Open(wordPath,ReadOnly=1)
  doc.ExportAsFixedFormat(pdfPath,
 constants.wdExportFormatPDF,
 Item=constants.wdExportDocumentWithMarkup,
 CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
  word.Quit(constants.wdDoNotSaveChanges)
if __name__ == "__main__":
  # 路径填写绝对路径
  createPdf(
 r'D:\code\python\auto_code_word\base_data\原数据.docx',r'D:\code\python\auto_code_word\create_data
\10_word转换成pdf.pdf'
 )
  # 命令要安装pywin32模块,命令:pip install pywin32

PDF读取内容

安装

pip install pypdf2

pip install pdfplumber

常用方法与属性

函数名&属性&类  含义
PyPDF2.PdfFileReader(file)  读取PDF
pdf.getNumPages() 获取总页码
pdf.getPage(num)  获取第num页数据
page.extractText() 获取页面数据

代码

#pip install pypdf2
from PyPDF2 import PdfFileReader
def read_pdf1():
  # 打开文件
  with open('./base_data/10_word转换成pdf.pdf','rb') as f:
    # 将打开的文件传递给Reader对象
    reader = PdfFileReader(f)
    # 获取页面的总页数
    number = reader.getNumPages()
    print(number)
    # 获取单页
    page = reader.getPage(0)
    # 提取文本
    info = page.extractText()
    print(info)
# pip install pdfplumber
def read_pdf2():
  import pdfplumber
  # 打开文件
  with pdfplumber.open('./base_data/10_word转换成pdf.pdf') as f:
    # 获取数据
    print(f.pages)
    for p in f.pages:
      print(p.extract_text())
if __name__ =='__main__':
  # read_pdf1()
  read_pdf2()

PDF合并文件

在工作时,有时会碰到多个同类型内容的PDF文件,页码数又少,一个一个的打开又比较麻烦。这时应该如何处理呢?

这时就需要一个合并PDF的操作,而合并PDF操作的思路是:

1、读取源PDF文件

2、写入到一个新的PDF文件中

常用方法与属性

函数名&属性&类  含义
PyPDF2.PdfFileWriter()  创建一个pdf文件
write.addPage(page)  增加一页数据

代码

def merger_file(*m_path):
  from PyPDF2 import PdfFileReader,PdfFileWriter
  # 创建一个写入的对象
  writer = PdfFileWriter()
  # 读数据
  for path in m_path:
    # 创建reader
    reader = PdfFileReader(open(path,'rb'))
    # 读取页面数据
    for p in reader.pages:
      # 写新的pdf
      writer.addPage(p)
  # 保存
  with open('./create_data/02_合并pdf.pdf','wb') as f:
    writer.write(f)
if __name__ =='__main__':
  path = r'.\base_data\10_word转换成pdf.pdf'
  merger_file(path,path,path)

PDF拆分文件

在工作时,有时会碰到一个比较大的PDF的文件,页码数比较多。而我们又想将数据进行分割,又如何处理呢?

这时就需要一个操作拆分PDF,而拆分PDF的操作的思路是:

1、读取源PDF文件

2、写入到一个新的PDF文件中

代码

from PyPDF2 import
PdfFileReader,PdfFileWriter
def chai_pdf(path):
  # 读取文件
  reader = PdfFileReader(open(path,'rb'))
  # 获取页面数据
  for i,p in enumerate(reader.pages):
    writer = PdfFileWriter()
    writer.addPage(p)
    # 保存新pdf文件
    with open(f'./create_data/03_拆分pdf_{i}.pdf','wb') as f:
      writer.write(f)
if __name__ =='__main__':
  path = './create_data/02_合并pdf.pdf'
  chai_pdf(path)

PDF加密文件

代码

from asyncore import write
from PyPDF2 import PdfFileReader,PdfFileWriter
def jia_mi(path):
  # 读取数据
  reader = PdfFileReader(open(path,'rb'))
  # 创建写Pdf的对象
  writer = PdfFileWriter()
  # 写入密码
  writer.encrypt('123')
  # 把内容复制pdf的writer中
  for p in reader.pages:
    writer.addPage(p)
  # 保存数据
  with open('./create_data/04_加密pdf.pdf','wb') as f:
    writer.write(f)
if __name__ =='__main__':
  path = r'base_data\10_word转换成pdf.pdf'
  jia_mi(path)

PPT基本操作-增加幻灯片

当内容比较简洁时,使用Word编写内容比较单调,这时可以考虑使用PPT编写内容,而Python如何操作PPT呢?

这时可以使用第3方库 python-pptx 来操作PPT

安装

pip install python-pptx

常用方法与属性

函数名&属性&类  含义
pptx.Presentation()  创建PPT文件对象
ppt.slide_layouts[num]  选择PPT页面布局
ppt.slides.add_slide()  增加PPT页面
presentation.save(path)  保存文件

代码

# pip install python-pptx
def create_ppt():
  from pptx import Presentation
  # 创建ppt
  ppt = Presentation()
  # 增加幻灯片
 ppt.slides.add_slide(ppt.slide_layouts[0])
 ppt.slides.add_slide(ppt.slide_layouts[1])
 ppt.slides.add_slide(ppt.slide_layouts[3])
 ppt.slides.add_slide(ppt.slide_layouts[6])
  # 保存
  ppt.save('./create_data/01_创建PPT.pptx')
if __name__ == '__main__':
  create_ppt()

PPT基本操作-增加内容

常用方法与属性

函数名&属性&类 含义
slide.shapes  获取内容框
slide.shapes.title  获取内容框标题对象
slide.shapes.title.text  获取/设置内容框标题值
slide.shapes.placeholders[num]  获取第num个内容框
slide.placeholder.text 获取/设置内容框内容
slide.placeholder.text_frame.add_paragraph()  增加一个段落
paragraph.text  获取/设置段落内容
paragraph.level 获取/设置段落等级
paragraph.font.bold  设置段落字体
paragraph.font.size  设置段落字体大小
slide.shapes.add_textbox()  增加一个内容文本域

代码

from pptx import Presentation
from pptx.util import Pt
def create_info():
  # 创建一个ppt
  ppt = Presentation()
  # 添加内容
  # 增加第1个页面
  slide = ppt.slides.add_slide(ppt.slide_layouts[1])
  # 获取标题
  title = slide.shapes.title
  title.text = 'This is Python Title'
  # 获取内容框
  content = slide.placeholders[1]
  content.text = 'Content Info'
  # 增加第2个页面
  slide2 = ppt.slides.add_slide(ppt.slide_layouts[1])
  # 获取内容占位框
  content2 = slide2.placeholders[1]
  # 获取内容frame框对象
  tf = content2.text_frame
  # 增加段落内容
  par = tf.add_paragraph()
  # 设置段落内容
  par.text = '1级内容'
  # 设置内容等级
  par.level = 1
  par2 = tf.add_paragraph()
  par2.text = '2级内容'
  par2.level = 2
  par3 = tf.add_paragraph()
  par3.text = '3级内容'
  par3.level = 3
  # 增加第3个页面
  slide3 = ppt.slides.add_slide(ppt.slide_layouts[6])
  left = top = right = bottom = Pt(200)
  # 增加文本框
  tb = slide3.shapes.add_textbox(left,top,right,bottom)
  # 增加内容
  tf4 = tb.text_frame
  par4 = tf4.add_paragraph()
  par4.text = '1级内容'
  par4.font.bold = True
  par4.font.size = Pt(30)
  # 保存ppt
  ppt.save('./create_data/02_增加内容.pptx')
if __name__ =='__main__':
  create_info()
目录
相关文章
|
27天前
|
数据安全/隐私保护 Python
python之自动化进入CSDN
python之自动化进入CSDN
22 0
|
12天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
48 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
7天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
27 2
|
9天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
23 3
|
7天前
|
数据采集 IDE 测试技术
Python实现自动化办公:从基础到实践###
【10月更文挑战第21天】 本文将探讨如何利用Python编程语言实现自动化办公,从基础概念到实际操作,涵盖常用库、脚本编写技巧及实战案例。通过本文,读者将掌握使用Python提升工作效率的方法,减少重复性劳动,提高工作质量。 ###
22 1
|
15天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
16天前
|
数据管理 程序员 数据处理
利用Python自动化办公:从基础到实践####
本文深入探讨了如何运用Python脚本实现办公自动化,通过具体案例展示了从数据处理、文件管理到邮件发送等常见办公任务的自动化流程。旨在为非程序员提供一份简明扼要的实践指南,帮助他们理解并应用Python在提高工作效率方面的潜力。 ####
|
15天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
16天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。
|
16天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##