假定你有一个很无聊的任务,需要将几十个PDF文件合并成一个PDF文件。每一个文件都有一个封面作为第一页,但你不希望合并后的文件中重复出现这些封面。即使有许多免费的程序可以合并PDF,很多也只是简单的将文件合并在一起。让我们来写一个Python程序,定制需要合并到PDF中的页面。

总的来说,该程序需要完成:找到当前工作目录中所有PDF文件。

按文件名排序,这样就能有序地添加这些PDF。

除了第一页之外,将每个PDF的所有页面写入输出的文件。

从实现的角度来看,代码需要完成下列任务:调用os.listdir(),找到当前工作目录中的所有文件,去除掉非PDF文件。

调用Python的sort()列表方法,对文件名按字母排序。

为输出的PDF文件创建PdfFileWriter对象。

循环遍历每个PDF文件,为它创建PdfFileReader对象。

针对每个PDF文件,循环遍历每一页,第一页除外。

将页面添加到输出的PDF。

将输出的PDF写入一个文件,名为allminutes.pdf

针对这个项目,打开一个新的文件编辑器窗口,将它保存为combinePdfs.py。

第1步:找到所有PDF文件

首先,程序需要取得当前工作目录中所有带.pdf扩展名的文件列表,并对它们排序。让你的代码看起来像这样:

#! python3

# combinePdfs.py - Combines all the PDFs in the current working directory into

# into a single PDF.

❶ import PyPDF2, os

# Get all the PDF filenames.

pdfFiles = []

for filename in os.listdir('.'):

if filename.endswith('.pdf'):

❷ pdfFiles.append(filename)

❸ pdfFiles.sort(key=str.lower)

❹ pdfWriter = PyPDF2.PdfFileWriter()

# TODO: Loop through all the PDF files.

# TODO: Loop through all the pages (except the first) and add them.

# TODO: Save the resulting PDF to a file.

在#!行和介绍程序做什么的描述性注释之后,代码导入了os和PyPDF2模块❶。os.listdir(‘.’)调用将返回当前工作目录中所有文件的列表。代码循环遍历这个列表,将带有.pdf扩展名的文件添加到pdfFiles中❷。然后,列表按照字典顺序排序,调用sort()时带有key/str.lower关键字参数❸。

代码创建了一个PdfFileWriter对象,保存合并后的PDF页面❹。最后,一些注释语句简要描述了剩下的程序。

第2步:打开每个PDF文件

现在,程序必须读取pdfFiles中的每个PDF文件。在程序中加入以下代码:

#! python3

# combinePdfs.py - Combines all the PDFs in the current working directory into

# a single PDF.

import PyPDF2, os

# Get all the PDF filenames.

pdfFiles = []

--snip--

# Loop through all the PDF files.

for filename in pdfFiles:

pdfFileObj = open(filename, 'rb')

pdfReader = PyPDF2.PdfFileReader(pdfFileObj)

# TODO: Loop through all the pages (except the first) and add them.

# TODO: Save the resulting PDF to a file.

针对每个PDF文件,循环内的代码调用open(),以’wb’作为第二个参数,用读二进制的模式打开文件。open()调用返回一个 File 对象,它被传递给PyPDF2.PdfFileReader(),创建针对那个PDF文件的PdfFileReader对象。

第3步:添加每一页

针对每个PDF文件,需要循环遍历每一页,第一页除外。在程序中添加以下代码:

#! python3

# combinePdfs.py - Combines all the PDFs in the current working directory into

# a single PDF.

import PyPDF2, os

--snip--

# Loop through all the PDF files.

for filename in pdfFiles:

--snip--

# Loop through all the pages (except the first) and add them.

❶ for pageNum in range(1, pdfReader.numPages):

pageObj = pdfReader.getPage(pageNum)

pdfWriter.addPage(pageObj)

# TODO: Save the resulting PDF to a file.

for循环内的代码将每个Page对象拷贝到PdfFileWriter对象。要记住,你需要跳过第一页。因为PyPDF2认为0是第一页,所以循环应该从1开始❶,然后向上增长到pdfReader.numPages中的整数,但不包括它。

第4步:保存结果

在这些嵌套的for循环完成后,pdfWriter变量将包含一个PdfFileWriter对象,合并了所有PDF的页面。最后一步是将这些内容写入硬盘上的一个文件。在程序中添加以下代码:

#! python3

# combinePdfs.py - Combines all the PDFs in the current working directory into

# a single PDF.

import PyPDF2, os

--snip--

# Loop through all the PDF files.

for filename in pdfFiles:

--snip--

# Loop through all the pages (except the first) and add them.

for pageNum in range(1, pdfReader.numPages):

--snip--

# Save the resulting PDF to a file.

pdfOutput = open('allminutes.pdf', 'wb')

pdfWriter.write(pdfOutput)

pdfOutput.close()

第5步:类似程序的想法

能够利用其他PDF文件的页面创建PDF文件,这让你的程序能完成以下任务:从PDF文件中截取特定的页面。

重新调整PDF文件中页面的次序。

创建一个PDF文件,只包含那些具有特定文本的页面。文本由extractText()来确定。

本文摘自:《Python编程快速上手 让繁琐工作自动化》

本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用最强大的编程语言和工具,并且将体会到Python编程的快乐。

python 知乎 合并 pdf_如何用Python程序将几十个PDF文件合并成一个PDF?其实只要这四步...相关推荐

  1. 怎么将几张pdf合并成一张_怎么把多个PDF文件合并成一个

    怎么把多个PDF文件合成为一个PDF文件?我相信这个问题是许多小伙伴在工作当中都会遇到的一个问题,其实想要将多个PDF文件合成为一个PDF文件还是非常简单的,只需要利用到迅捷PDF转换器,就可以轻松的 ...

  2. 如何将两个或多个PDF文件合并成一个?这3个方法可以看看

    在工作中,有时候我们需要把两个或多个PDF文件合并成一个,这样一来,可以方便阅读.修改,还能快速打印文件. 下面分享3个工具,看看如何将两个或多个PDF文件合并成一个文件. 方法一:使用美图工具 如果 ...

  3. python均线选股_python选股模型均线,已知股票数据,如何用Python绘制k线日对应数据...

    Q1:已知股票数据,如何用Python绘制k线日对应数据 我没遇到过 只是自己写过 有点经验 先确定时间片 然后再把tick插入就行了 Q2:使用python实现ema(指数移动平均的计算) a =  ...

  4. 办公自动化:PDF文件合并器,用Python将多个PDF文件进行合并

    相关文件 想学Python的小伙伴可以关注小编的公众号[Python日志] 有很多的资源可以白嫖的哈,不定时会更新一下Python的小知识的哈!! Python源码.问题解答学习交流群:7731621 ...

  5. Python PDF文件合并,提取

    文章目录 1. 功能介绍 2.项目难点 1. tkinter设置图标显示 3. 源代码 3. 代码打包 1. 打包过后程序运行出错 2. 打包命令 3.打包技巧 1. 功能介绍 选择两个pdf指定的页 ...

  6. PDF文件合并 –Python

    PDF 文件合并 – Python 安装 明确目标 Simple case 了解需求 Part I Part II 代码实现 安装 因版本差异,可能会产生报错. Python import platf ...

  7. Python实现PDF文件合并

    PDF是我们目前办公处理的一种重要文件格式,目前商用PDF浏览器一般对合并PDF功能有权限限制,下面介绍利用Python实现多个PDF合并的方法,以实现更高效便捷的PDF文件合并需求. 实现步骤分成三 ...

  8. python实现PDF文件合并操作,附可直接使用的exe文件

    前几日在打数学建模比赛,发现有一个需求是把保证书和论文两个PDF文件合并成一个再去提交,但我在网上搜寻了很多的网站和软件,却发现它们大多数都是收费的,以WPS为例,使用合并PDF功能需要开通完整的稻草 ...

  9. python实现pdf文件合并,多个pdf文件合并,pdf文件叠加

    不多说,直接上代码: # -*- coding:utf-8*-# 请拉到最底下,修改这两个变量 # 请修改需要合并的文件的文件夹路径:file_dir # 请修改输出文件名: outfileimpor ...

  10. 【Python】将多个jpg合并成一个pdf

    import img2pdf import time # 导入时间库生成时间戳 import os ` local_time = time.localtime() # 获取本地时间 time_sign ...

最新文章

  1. LeetCode简单题之移动零
  2. extjs关于jsonreader
  3. Android混合推送,MUI框架-推送配置核心代码-个推推送
  4. Linux_指令杂烩
  5. wagtail python cms 测试部署
  6. 工厂三兄弟之简单工厂模式(二)
  7. android9.0不能用4g定位,Android 9.0新特性:让用户认为4G信号更强
  8. 【MM配置】Pricing 采购定价 2
  9. Blazor University (1)介绍 - 什么是 Blazor?
  10. python负数的表示方法_python输入负数
  11. Requirejs常用配置和应用
  12. C# 多张图片生成PDF
  13. 程序员需要了解英国文学
  14. I3D【Inflated 3D ConvNet】——膨胀卷积网络用于行为识别
  15. 构建初级前端页面重构开发环境
  16. 现货白银分析离不开SLV持仓分析
  17. 计算机垃圾回收站桌面上找不到,桌面上的回收站不见了怎么办?桌面上的回收站不见了解决方法...
  18. java程序员 待遇_现在的java程序员薪资待遇怎么样?
  19. 苹果笔记本显卡性能测试软件,苹果新MBP性能测试成绩出炉:SSD表现出色 显卡性能偏弱...
  20. MySQL 索引失效详解

热门文章

  1. 数据降维(四)ISOMAP
  2. 程序员背锅救星-docker
  3. 平台式惯性导航系统简介(持续更新ing)
  4. 打鱼晒网c语言用switch语句,三天打鱼两天晒网题目的C++源代码.docx
  5. WebService(一):工作原理
  6. ERP系统与MRP系统
  7. 对MRPⅡ/ERP的认知
  8. 微软私有云分享(R2)9-SCVMM R2和SP1界面的不同
  9. lsass.exe是什么?
  10. AO采集用友oracle,用SQL快速生成用友GRP-U8的AO财务账套的方法2017