文件处理与pdf处理

文章目录
一、文件处理与pdf处理思维导图
二、补充说明:pdf的读取、合并、转换、水印添加(自学,如有错误烦请指正)
1、pdf的读取
1. 对pdf文本内容的读取
2、读取pdf表格内容转化为EXCEL
2、pdf的合并
3、word转pdf(没仔细看)
4、pdf添加水印
一、文件处理与pdf处理思维导图

%title插图%num
二、补充说明:pdf的读取、合并、转换、水印添加(自学,如有错误烦请指正)
1、pdf的读取
1. 对pdf文本内容的读取
主要使用的是pdfplumber库

%title插图%num

库的安装:(以 anaconda为例)

%title插图%num
如果出现error,建议根据出错的类型百度,我出错的原因是pip太旧了啥啥的,更新就好了
安装完成后,请看代码及注释
import pdfplumber #导入库
with pdfplumber.open(“D:/ps/test.pdf”) as pdf :
pdf_len = len(pdf.pages) #获取pdf所有页数
print(pdf_len) #输出pdf所有页数
first_page = pdf.pages[0] #获取pdf页面信息列表的*页的内容
print(first_page) #输出
print(first_page.chars[0]) #输出*页的独立的字符的属性
first_page.extract_text() #获取当前页面文本值
for i in range(0,pdf_len): # 遍历所有页面,获取文本值并输出
print(pdf.pages[i].extract_text())

2、读取pdf表格内容转化为EXCEL
部分代码:

import pdfplumber #导入库
import pandas as pd #导入库
import os #导入库

old_dir_path = ‘D:/tools/python/study/datafile/txtpdf/oldfiles’ #路径
old_pdf_path = os.path.join(old_dir_path,’first.pdf’) #旧处理文件的地址

pdf = pdfplumber.open(old_pdf_path) #打开旧的需要进行处理的文件,命名为pdf

pdf_pages = len(pdf.pages) #获取pdf的页数
pdf_pages

#获取*页的表格,若没有表格,会返回错误
pdf.pages[1].extract_table()

all_content = [] #创建一个列表,获取pdf的所有表格

for i in range(0,pdf_pages): #0到*后一页循环
for j in pdf.pages[i].extract_tables(): #返回[[每一行内容]]的嵌套格式的内容,没有表格,返回空字符串的列表
for k in j: #对每一行内容进行遍历
if ‘ ‘ not in k: #判断是否有空字符串
all_content.append(k) #在建立原列表的基础上添加内容
print(k) #输出

data = pd.DataFrame(all_content) #转成DataFrame(),二维的有行有列的表
print(data)
data.to_excel(‘pdf_tables.xlsx’,index = False, header = None) #生成xlsx文件,即excel里面的表格

2、pdf的合并
代码(非完全自创代码段):

from PyPDF2 import PdfFileReader #导入库
from PyPDF2 import PdfFileWriter
import os

old_dir_path = ‘D:/tools/python/study/datafile/txtpdf/oldfiles’ #写入路径

pdf_paths = [] #定义一个列表保存所有pdf路径

for file_name in os.listdir(old_dir_path): #使用os模块,获得该路径下所有文件
if ‘.pdf’ in file_name: #判断是否是pdf文件,是的话则加入列表
pdf_paths.append(os.path.join(old_dir_path,file_name)) # 增加了路径
new_pdf = PdfFileWriter() # 类 支持将pdf文件写出,给定由另一类产生的页面(通常为 PdfFileReader)
#记录 pdf总页数
numPages = 0
for pdfpath in pdf_paths: #循环获取路径
old_pdf = PdfFileReader(open(pdfpath,’rb’)) #初始化
pdfPages = old_pdf.getNumPages()#获取当前pdf页数
numPages += pdfPages #增加pdf页数
for i in range(old_pdf.getNumPages()) : #增加所有页面合并后的内容
new_pdf.addPage(old_pdf.getPage(i))
with open(os.path.join(new_pdf_path,new_name),’wb’) as p:
new_pdf.write(p) #写入pdf

3、word转pdf(没仔细看)
4、pdf添加水印
pdf添加水印,其实我认为就是pdf和水印的pdf进行合并而产生的效果,所以代码也是从这个思路走的
代码段+注释:

from PyPDF2 import PdfFileReader,PdfFileWriter #导入库
pdf = PdfFileReader(‘D:/tools/python/study/datafile/txtpdf/oldfiles/first.pdf’)
water_pdf = PdfFileReader(‘D:/tools/python/study/datafile/txtpdf/water.pdf’)

water = water_pdf.getPage(0)
writer = PdfFileWriter()

for i in range(pdf.getNumPages()):
pdf.getPage(i).mergePage(water)
writer.addPage(pdf.getPage(i))

writer.write(open(‘newnew.pdf’,’rwb’))

python还可以对pdf进行很多操作,这里只是列举了常见得几种,对于有密码得pdf,我选择手动解个密(狗头),文件批量处理就当我没说,作为初学者,还有很多地方不是太懂,希望后续可以更新改进。