大家好!小编今天要为大家带来一篇关于Python操作PDF的秘籍——无论是要将PDF合并成一份整体,还是将一个庞大的PDF文件拆分成多个小伙伴,都轻松hold住!你准备好了吗?让我们开始这场奇妙的PDF操作之旅吧!
准备工作
因为操作PDF,需要用到Python的一个重要的库:PyPDF2。所以还没安装PyPDF2库的,我们先通过pip安装一下吧:
pip install PyPDF2
1、合并PDF - 让PDF们手牵手
from PyPDF2 import PdfWriter
from pathlib import Path
def merge_pdfs(src_folder_path, merged_file_path):
src_folder = Path(src_folder_path)
merged_file = Path(merged_file_path)
merger = PdfWriter()
for pdf in src_folder.glob("*.pdf"):
merger.append(pdf)
merger.write(merged_file)
merger.close()
# 示例用法
merge_pdfs("C:/Users/olive/Desktop/待合并的PDF",
"C:/Users/olive/Desktop/待合并的PDF/merged.pdf")
代码解析:
1.
from PyPDF2 import PdfWriter
:导入PyPDF2库中的PdfWriter,它提供了用于创建新PDF文件的功能。2.
from pathlib import Path
:导入Python中的pathlib库中的Path,用于处理文件路径。3.
def merge_pdfs(src_folder_path,merged_file_path):
:定义了一个函数merge_pdfs
,该函数接受两个参数:src_folder_path
(指定的文件夹路径,包含待合并的PDF文件)和merged_file_path
(合并后的PDF文件的保存路径)。4.
src_folder = Path(src_folder_path)
:将src_folder_path
转换为Path对象,以便后续处理文件夹。5.
merged_file = Path(merged_file_path)
:将merged_file_path
转换为Path对象,以便后续保存合并后的PDF文件路径。6.
merger = PdfWriter()
:创建一个PdfWriter对象,用于写入PDF文件。7.
for pdf in src_folder.glob("*.pdf"):
:遍历src_folder
文件夹中所有的PDF文件(以".pdf"结尾的文件)。8.
merger.append(pdf)
:将遍历到的每个PDF文件添加到合并器(merger)中。9.
merger.write(merged_file)
:将合并后的PDF文件保存到指定的路径(merged_file
)。10.
merger.close()
:关闭合并器,完成文件合并操作。11.
# 示例用法...
:提供了一个示例用法,调用了merge_pdfs
函数,并传入了文件夹路径和合并后的PDF文件保存路径。
2、拆分PDF - 让每页都成主角
from PyPDF2 import PdfReader, PdfWriter
from pathlib import Path
def split_pdf(input_file_path, output_folder, step=1):
input_file = Path(input_file_path)
output_folder = Path(output_folder)
pdf_reader = PdfReader(input_file)
for page_num in range(0, len(pdf_reader.pages), step):
pdf_writer = PdfWriter()
for page in pdf_reader.pages[page_num:page_num + step]:
pdf_writer.add_page(page)
output_filename = f"第{int(page_num / step) + 1}章.pdf"
pdf_writer.write(output_folder / output_filename)
# 示例用法
split_pdf('C:/Users/olive/Desktop/待拆分的PDF/large_file.pdf',
'C:/Users/olive/Desktop/待拆分的PDF', 2)
代码解析:
1.
from PyPDF2 import PdfReader,PdfWriter
:导入PyPDF2库中的PdfReader和PdfWriter,分别用于读取PDF文件和创建新的PDF文件。2.
from pathlib import Path
:导入Python中的pathlib库中的Path,用于处理文件路径。3.
def split_pdf(input_file_path,output_folder,step=1):
:定义了一个函数split_pdf
,该函数接受三个参数:input_file_path
(要拆分的PDF文件路径)、output_folder
(拆分后的PDF文件保存的文件夹路径)、step
(可选参数,默认值为1,指定每个拆分后的文件包含的页面数量)。4.
input_file = Path(input_file_path)
:将input_file_path
转换为Path对象,以便后续处理PDF文件。5.
output_folder = Path(output_folder)
:将output_folder
转换为Path对象,以便后续保存拆分后的PDF文件路径。6.
pdf_reader = PdfReader(input_file)
:创建一个PdfReader对象,用于读取输入的PDF文件。7.
for page_num in range(0,len(pdf_reader.pages),step):
:循环遍历PDF文件中的每一个页面,步长为step
。8.
pdf_writer = PdfWriter()
:创建一个PdfWriter对象,用于创建新的PDF文件。9.
for page in pdf_reader.pages[page_num:page_num + step]:
:遍历PDF文件的每个页面,并依次添加到pdf_writer
中。10.
output_filename = f"第{int(page_num / step) + 1}章.pdf"
:根据拆分后的序号生成输出文件名。11.
pdf_writer.write(output_folder / output_filename)
:将拆分后的页面保存到指定的输出文件夹中,并使用生成的文件名。12.
# 示例用法...
:提供了一个示例用法,调用了split_pdf
函数,并传入了大型PDF文件的路径、输出文件夹的路径以及步长参数。
激动人心的测试
1、合并PDF文件
我们先准备几个PDF文档,记得给文档先编个号哦,不然合并的时候,顺序可能会乱掉:
然后,待最后一行的测试代码改一下,改成你自己的文件夹路径:
# 示例用法
merge_pdfs("C:/Users/olive/Desktop/待合并的PDF",
"C:/Users/olive/Desktop/待合并的PDF/merged.pdf")
最后,运行代码,我们来检验一下成果吧:
OK,我们看到merged.pdf文件出来了,大家可以打开该文件自行检验一下合并的效果。
2、拆分PDF文件
我们可以把刚才合并好的PDF再做一下拆分,顺便重新命个名吧:
然后,记得改一下测试代码哦,改成你自己的路径,这次我们想两页两页地拆分:
# 示例用法
split_pdf('C:/Users/olive/Desktop/待拆分的PDF/large_file.pdf',
'C:/Users/olive/Desktop/待拆分的PDF', 2)
运行代码,检验一下成果吧:
嘿嘿,是不是感觉有了点魔法般的妙手回春?让Python为你打开了PDF操作的新世界!快来试试吧,相信你一定也能成为这场奇妙冒险故事中的主角!
希望这些代码能带给你一些灵感和乐趣!如果你对PDF操作还有其他想法,或者是“突如其来”的妙点子,也欢迎分享给我哦!让我们一起为PDF的奇妙世界续写更多美妙篇章吧!💫📄✨