首先确保Python库已经更新好,如果没有需要:
1、找到pip3.exe所在的文件夹,复制路径
我的路径是:
2、按Win+R,输入CMD确定
3、进入后,先输入cd 路径 回车
4、输入 pip3 install pypdf2 回车
5、输入 pip3 install pdfplumber 回车
代码:
from PyPDF2 import PdfReader, PdfWriter import os # PDF 文件路径 input_path = r'C:\Users\cc\Desktop\任务\琼瑶作品全集.pdf' # 检查输入文件是否存在 if not os.path.isfile(input_path): raise FileNotFoundError(f"文件 {input_path} 未找到") # 创建一个 PdfReader 对象来读取 PDF 文件 pdf_reader = PdfReader(input_path) # 定义一个页面范围的列表,每个子列表表示一个要拆分出的页面范围 # 注意:这里修正了原代码中页面范围列表的语法错误 page_ranges = [ [3, 222], [223, 490], [491, 857], [858, 1238], [1239, 1592], [1593, 1919], [1920, 2251], [2252, 2590], [2591, 2735], [2736, 2928], [2929, 3133], [3134, 3324], [3325, 3521], [3522, 3778], [3779, 4032], [4033, 4199], [4200, 4448], [4449, 4734], [4735, 5159], [5160, 5401], [5402, 5549], [5550, 5824], [5825, 6060], [6061, 6251], [6252, 6413], [6414, 6578], [6579, 6718], [6719, 6851], [6852, 7072], [7073, 7334], [7335, 7564], [7565, 7754], [7755, 7902], [7903, 8110], [8111, 8267], [8268, 8407], [8408, 8554], [8555, 8737], [8738, 8963], [8964, 9188], [9189, 9397], [9398, 9623], [9624, 9834], [9835, 9986], [9987, 10183], [10184, 10326], [10327, 10500], [10501, 10667], [10668, 10831], [10832, 11070], [11071, 11304], [11305, 11550], [11551, 11726], [11727, 11850], [11851, 12044], [12045, 12291], [12292, 12577], [12578, 12820], [12821, 13043], [13044, 13196] ] # 定义输出文件名的前缀列表(确保前缀数量与页面范围数量匹配) # 注意:这里修正了原代码中前缀列表的引号不匹配问题 filename_prefixes = [ '还珠格格(上)', '还珠格格(下)', '还珠格格之风云再起', '还珠格格之生死相许', '还珠格格之浪迹天涯', '还珠格格之天上人间(上)', '还珠格格之天上人间(中)', '还珠格格之天上人间(下)', '梅花烙', '苍天有泪之无语问苍天', '苍天有泪之爱恨千千万', '苍天有泪之人间有天堂', '我的故事', '烟雨濛濛', '窗外', '青青河边草', '在水一方', '庭院深深', '几度夕阳红', '寒烟翠', '翦翦风', '彩云飞', '碧云天', '一颗红豆', '梦的衣裳', '匆匆,太匆匆', '燃烧吧!火鸟', '冰儿', '菟丝花', '星河', '海鸥飞处', '雁儿在林梢', '却上心头', '我是一片云', '聚散两依依', '问斜阳', '昨夜之灯', '失火的天堂', '紫贝壳', '心有千千结', '浪花', '秋歌', '月朦胧鸟朦胧', '人在天涯', '金盏花', '雪珂', '望夫崖', '水云间', '烟锁重楼', '幸运草', '潮声', '月满西楼', '水灵', '女朋友', '六个梦', '白狐', '船', '彩霞满天', '一帘幽梦', '新月格格' ] # 遍历页面范围列表和文件名前缀列表(假设它们长度相同) for i, (page_range, prefix) in enumerate(zip(page_ranges, filename_prefixes)): start_page, end_page = page_range # 检查页面范围的有效性 if start_page < 0 or end_page >= len(pdf_reader.pages): print(f"警告:在 page_ranges 的索引 {i} 处发现页面范围超出 PDF 文件的总页数:{page_range}") continue # 跳过无效的页面范围 # 创建一个 PdfWriter 对象来写入拆分后的 PDF 文件 pdf_writer = PdfWriter() # 将指定范围内的页面添加到 PdfWriter 对象中 for page_num in range(start_page, end_page + 1): page = pdf_reader.pages[page_num] pdf_writer.add_page(page) # 定义输出文件的名称(使用前缀来命名) output_filename = f'{prefix}.pdf' output_path = os.path.join(os.path.dirname(input_path), output_filename) # 将拆分后的 PDF 文件写入到磁盘上 with open(output_path, 'wb') as output_pdf: pdf_writer.write(output_pdf) print(f'已创建 {output_path}')