工作中,有多个原理图pdf文件,为了方便查找网标,所以需要把多个pdf文件进行合并
在网上查了以下使用python PyPDF2进行
源码如下
#encoding=gb18030
import os
import PyPDF2
##获取当前py文件所在路径
def get_exec_dir():
'''获取当前执行文件所在的目录
如果本程序打包成为一个文件,则执行目录应该在临时文件夹中
'''
#获取当前执行文件所在路径
exe_path = os.path.realpath(__file__)
print(f'主文件路径:{exe_path}')
exe_dir = os.path.dirname(exe_path)
print(f'主文件所在的目录:{exe_dir}')
return exe_dir
def get_pdf_list(path):
pdf_list = []
for f in os.listdir(path):
if f.endswith('.pdf') :
pdf_list.append(f'{path}\\{f}')
return pdf_list
def merge(path, pdfs):
'''合并pdf'''
pdf_merge = PyPDF2.PdfFileMerger()
for pdf in pdfs:
pdf_merge.append(pdf)
pdf_merge.write(f'{path}\\test.pdf')
pdf_dir = get_exec_dir()
pdf_list = get_pdf_list(pdf_dir)
merge(pdf_dir, pdf_list)
把此文件和pdf文件放到同一目录运行
运行python代码,最终在当前文件夹下生成test.pdf
此代码主要分成3个函数
第一个获取py文件所在路径
def get_exec_dir():
'''获取当前执行文件所在的目录
如果本程序打包成为一个文件,则执行目录应该在临时文件夹中
'''
#获取当前执行文件所在路径
exe_path = os.path.realpath(__file__)
print(f'主文件路径:{exe_path}')
exe_dir = os.path.dirname(exe_path)
print(f'主文件所在的目录:{exe_dir}')
return exe_dir
这个函数返回py文件所在目录,这里使用__file__,如果直接在控制台敲代码则,__file__这个变量不存在,会导致这个函数出错
exe_path = os.path.realpath(__file__)
获取文件的绝对路径
exe_dir = os.path.dirname(exe_path)
返回文件的目录
第二个函数
def get_pdf_list(path):
pdf_list = []
for f in os.listdir(path):
if f.endswith('.pdf') :
pdf_list.append(f'{path}\\{f}')
return pdf_list
列出path路径下所有的pdf文件
f.endswith('.pdf') 判断文件的后缀是否以 .pdf结尾
pdf_list.append(f'{path}\\{f}') 把pdf的绝对路径添加进列表
第三个函数,合并pdf
def merge(path, pdfs):
'''合并pdf'''
pdf_merge = PyPDF2.PdfFileMerger()
for pdf in pdfs:
pdf_merge.append(pdf)
pdf_merge.write(f'{path}\\test.pdf')
pdf_merge = PyPDF2.PdfFileMerger() 生成pdf合并对象
接下来把所有pdf添加进合并对象中
pdf_merge.write(f'{path}\\test.pdf') 在pdf所在路径下生成test.pdf文件
记录点滴...