【office办公-pdf篇】pdf合并与拆分让我们摆脱付费软件的功能限制好不好

好工具,可以事半功倍,今天一起学习Pdf合与分

工具模块PyPDF2
层次分析—文件路径与文件读取与保存
读入文件夹:
data\in
读入文件名:temp.pdf
保存文件夹:
data\out
保存文件,1.pdf,2.pdf,3.pdf…
合并文件:
431.pdf

层次分析—从文件中取出每一页

    pdf_writer = PdfFileWriter()
    page = pdfReader.getPage(page_no)
    pdf_writer.addPage(page)

层次分析—从文件中取出每一页
构造出包括路径和每一页文件名的路径信息

    file ='{0}.pdf'.format(page_no + 1)
    outfile = os.path.join(outdir,file)

层次分析—创建路径信息到硬盘,同时调用pdf_writer中的保存的页面信息,写入到指定outfile位置
注:output_pdf是接收来自pdf_writer的写入信息的。

    with open(outfile,'wb') as output_pdf:
        pdf_writer.write(output_pdf)
    print('拆分并把文件写入')

层次分析—重新建立写变量pdf_wrigter,指定序号为3,0,2页面添加到pdf_writer中(合并)

    pdf_writer = PdfFileWriter()
    pdf_writer.addPage(pdfReader.getPage(3))
    pdf_writer.addPage(pdfReader.getPage(0))
    pdf_writer.addPage(pdfReader.getPage(2))

层次分析—重新建立文件名,路径,完成文件信息,通过with open()写入硬盘,完成合并后的写入操作

    file = '431.pdf'
    outfile = os.path.join(outdir,file)
    with open(outfile,'wb') as output_pdf:
        pdf_writer.write(output_pdf)
        print('选择需要页合并')

以下为完整的代码

# coding = utf-8
from PyPDF2 import *
import os
indir = r'data\in'
outdir = r'data\out'
infile = os.path.join(indir,'temp.pdf') #读取文件路径
pdfReader = PdfFileReader(infile)

for page_no in range(pdfReader.numPages):
    pdf_writer = PdfFileWriter()
    page = pdfReader.getPage(page_no)
    pdf_writer.addPage(page)

    file ='{0}.pdf'.format(page_no + 1)
    outfile = os.path.join(outdir,file)
    
    with open(outfile,'wb') as output_pdf:
        pdf_writer.write(output_pdf)
    print('拆分完成')
    
    pdf_writer = PdfFileWriter()
    pdf_writer.addPage(pdfReader.getPage(3))
    pdf_writer.addPage(pdfReader.getPage(0))
    pdf_writer.addPage(pdfReader.getPage(2))

    file = '431.pdf'
    outfile = os.path.join(outdir,file)
    with open(outfile,'wb') as output_pdf:
        pdf_writer.write(output_pdf)
        print('选择需要页合并')


读后感:

  1. 代码分段书写,分析,目的是方便读者阅读理解每小段代码的内涵
  2. 通过解析这些小的代码片断,让大家理解代码运行的逻辑
  3. 通过前后的分析让大家知道python代码还是很容易理解,很容易阅读的

学习体会:

语言的学习不是一个快速的过程,能力的提升,确实需要知识的累积,每一个小的代码的内涵,组合成大段的代码块,大的代码块组合成整个软件体,从而完成系统性工程的创建。
提示每一个学习者不要过于心急,在自己的时间允许范围内,让真敲代码,仔细琢磨代码运行的逻辑,积累多了,你终于在某一天,也会突然感到豁然开朗。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值