首页 > 编程语言 >软件测试|教你用Python处理PDF文件(一)

软件测试|教你用Python处理PDF文件(一)

时间:2023-06-14 18:33:20浏览次数:49  
标签:文件 Python 教你用 拜仁 pdf PDF 慕尼黑 page 软件测试

在这里插入图片描述

前言

点击获取更多技术资料!

我们在工作中,难免会遇到需要处理PDF文件的情况,PDF文件与Word文件不同,内容提取不是很容易,表格和图片都需要特别处理。不过PDF有一个优势,PDF可以跨平台使用,Windows系统,Mac系统都可以打开PDF文件,不像doc文件,需要在word或者类似的软件中才能打开。

但是PDF文件的内容复制并不方便,要是能够使用Python将内容取出来的话,就会很舒服了!本文就来给大家介绍一下Python处理PDF文件的方法。

环境与资源准备

Python有一个非常优秀的处理PDF的第三方库——PyPDF2,这是一个开源免费的库,用于处理PDF文件,能够实现对PDF文件的分离、合并、裁剪、转换、加密、解密等操作。

安装如下:

pip install PyPDF2

资源准备

我们创建了一个PDF文件,文件名为test.pdf,文件第一页内容为拜仁慕尼黑,第二页主要内容为两张图片,第三页主要内容为一个表格。

提取PDF文本内容

在我们获取PDF文件内容前,我们需要先获取一下PDF文件的基本信息,比如页数和页面文本等。代码如下:

from PyPDF2 import PdfReader

reader = PdfReader("test.pdf")

# 总页数
number_of_pages = len(reader.pages)

# 第一页
page = reader.pages[0]
text = page.extract_text()
print(text)

--------------------------
输出内容如下:
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  
 
拜仁慕尼黑  

PDF文件合并

同样地,我们也可以实现两个PDF文件的合并,代码如下:

import os
from PyPDF2 import PdfMerger

# pdf文件存放路径
src_path = 'files'

# 将待拼接的pdf文件以绝对路径的形式放在一个列表里
pdf_list = [f for f in os.listdir(src_path) if f.endswith('.pdf')]
pdf_list = [os.path.join(src_path, filename) for filename in pdf_list]

pdf_merger = PdfMerger()
for pdf in pdf_list:
    pdf_merger.append(pdf, import_outline=False)

pdf_merger.write("merged.pdf")

运行代码之后,我们就可以看到文件夹中多了一个merged.pdf文件,文件包含了合并的PDF文件的内容。

添加水印

如果我们想要为PDF文件添加水印,可以用于防伪等方面,那也是可以使用Python来实现的,代码如下:

from PyPDF2 import PdfWriter, PdfReader

# 读取作为水印的pdf
watermark = PdfReader("files/mark.pdf")

# 待加水印的pdf
reader = PdfReader("files/test.pdf")
page = reader.pages[0]

# watermark.pdf的第一页作为水印
page.merge_page(watermark.pages[0])

writer = PdfWriter()
writer.add_page(page)

# 保存成新的pdf
with open("output.pdf", "wb") as fp:
    writer.write(fp)

生成的PDF文件内容如下:

在这里插入图片描述

总结

本文主要介绍了使用Python读取PDF文件以及合并多个PDF文件,为PDF文件添加水印功能的实现,后续我们将为大家介绍为PDF加密与解密的操作。

点击获取更多技术资料!

标签:文件,Python,教你用,拜仁,pdf,PDF,慕尼黑,page,软件测试
From: https://www.cnblogs.com/hogwarts/p/17481070.html

相关文章

  • python nohup 远程运行不宕机方法
    远程运行最怕断电,训练了几个小时的数据说没就没,或者停止运行。用nohup记录代码的输出,还可以不受断电的影响。方法1.用nohup运行一个python文件nohuppython-umain.py>nohup.out2>&1&除了main.py换成自己的文件名,nohup.out也可以改为其他名字,nohup1.out等。其余照搬。不......
  • python GUI+爬虫——12306抢票软件(2)
    这部分主要是项目环境的配置,下图是概览1.基于项目的虚拟环境--pipenv1.1简介1.2安装pipinstallpipenv, 检查安装状态:pipenv--version 我的系统是mac,该项目使用Windows10开发更好1.3创建项目的虚拟环境,使用pycharm1.4创建完后修改安装源,修改位置为pipfile文件修改:来源修......
  • python偏函数学习笔记
    Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partialfunction)比如,int函数默认十进制转换,若提供其它base参数,就可以进行n进制转换int('12345',base=8)5349int('12345',16)74565定义一个int2()的函数,默认把base=2传进去defint2(x,base=2):retu......
  • python高阶函数filter、sorted学习笔记
    filterPython内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。e.g在一个list中,删掉偶数,只保留奇数,可以这么写:点击查看代码de......
  • python day7
    第一阶段第六章6.7元组 text1=('周杰伦',11,['football','music'])index=text1.index(11)print(index)print(text1[0])deltext1[2][1]print(text1)text1[2].append("coding")print(text1)6.8字符串my_str=&quo......
  • 【Python&RS】基于Python批量下载哨兵二号数据
    ​学遥感的避免不了使用哨兵数据,毕竟10m的分辨率可以满足大部分的定量分析,同时也是最重要的一点,它免费!!! 但如果一幅一幅去下载影像实在是太慢了,特别是如果需要研究长时间序列的影像,那下载数据就成了最痛苦的环节了。所以这里给大家分享一下如何使用Python和IDM批量下......
  • python基础25
    第三方模块的下载与安装内置的模块不能满足我们的需求,所以,大多数时候都需要借助于第三方模块第三方模块的下载需要基于网络下载如何下载和使用下载第三方模块需要pip工具方式一:命令行pipinstall模块名pipinstalldjango......
  • python匿名函数学习笔记
    当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。list(map(lambdax:x*x,[1,2,3,4,5,6,7,8,9]))[1,4,9,16,25,36,49,64,81]由此,匿名函数lambdax:x*x实际上就是:deff(x):returnx*x关键字lambda表示匿名函数,冒号前......
  • python 操作文件 筛选 glob
    importglobimportosstr_addr=r"D:\360极速浏览器下载"str_join=os.path.join(str_addr,"*.*")glob.glob(str_join)list(glob.glob(str_join))==glob.glob(str_join)list(glob.iglob(str_join))==glob.glob(str_join)https://cloud.tencent.com/d......
  • 【技术积累】Python中的NumPy库【二】
    NumPy库的主要类有哪些?NumPy库的主要类包括:ndarray:N维数组对象,是NumPy最重要的类之一。它是Python中数组的基本数据结构,可以进行高效的数学计算和数据处理操作。ufunc:通用函数对象,是NumPy库中的另一个重要类。它是一种高效的元素级运算工具,提供了基本......