乐于分享
好东西不私藏

利用Python将400多页的pdf文件拆分成多个小的pdf文件

利用Python将400多页的pdf文件拆分成多个小的pdf文件

点击上方的蓝字和下方的卡片关注我,一起踏上数据分析进阶之路!

你好,我是林赛~
最近有个朋友在准备靠托业,他在网上买了资料,其中一个真题pdf有400多页,想先打印1套出来做。又不想400多页一起打印,所以就想办法拆pdf。
找工具废了好长时间,很多都是要付费的。于是我用豆包生成了能拆分pdf文件的python代码。
有需要的小伙伴,可以直接拿去用!当然,也可以自己用豆包去写。
01
准备工作
安装必要的库:
pip install PyPDF2 
如果你用的是Anaconda,也可以用:
conda install PyPDF2 
02
代码实现

按固定页数拆分(示例:每 50 页一个 PDF):

from PyPDF2 import PdfReader, PdfWriterdef split_pdf(file_path, per_pages=50, save_dir="./"):    reader = PdfReader(file_path)    total = len(reader.pages)    start = 0    idx = 1    while start < total:        writer = PdfWriter()        end = start + per_pages        # 截取区间 [start, end)        for p in range(start, min(end, total)):            writer.add_page(reader.pages[p])        out_name = f"{save_dir}拆分_{idx}_{start+1}-{min(end,total)}.pdf"        with open(out_name, "wb"as f:            writer.write(f)        print(f"已生成:{out_name}")        start = end        idx += 1# ========== 修改这里参数 ==========if __name__ == "__main__":    pdf_path = r"test.pdf"   # 你的原PDF路径    split_pdf(pdf_path, per_pages=50)  # per_pages:每份多少页    # 拆分后保存在指定路径下(传入参数即可)    # save_folder = r"C:/Users/linda/Downloads/"         # split_pdf(pdf_path, per_pages=50, save_folder)

自定义页码分段拆分(比如 [1-30,31-80,81-400]):


from PyPDF2 import PdfReader, PdfWriterdef split_by_ranges(pdf_path, ranges, save_dir="./"):    reader = PdfReader(pdf_path)    for i, (s, e) in enumerate(ranges, 1):        writer = PdfWriter()        for p in range(s-1, e): # PyPDF页码从0开始            writer.add_page(reader.pages[p])        out = f"{save_dir}分段_{i}_{s}-{e}.pdf"        with open(out, "wb"as f:            writer.write(f)        print(out)if __name__ == "__main__":    pdf = r"test.pdf"    # 自定义多段:[(起始页,结束页),...]    split_ranges = [(1,40),(41,90),(91,400)]    split_by_ranges(pdf, split_ranges)    # 拆分后保存在指定路径下(传入参数即可)    # save_folder = r"C:/Users/linda/Downloads/"         # split_by_ranges(pdf, split_ranges, save_folder)
以上就是今天的分享,感谢观看!
点击【赞】【在看】,这将是我前进的动力和鼓励!谢谢你的支持!

欢迎关注我,一起学习数据知识,一起成长~

👇👇👇

 - END -

装必要的库: