C#实现象棋AI:从极小化极大算法到Alpha-Beta剪枝的实战解析
2026/7/22 15:10:38
在处理电子书、扫描书籍或技术文档时,经常会遇到一个需求:
📌按照指定页码范围,把一个 PDF 拆分成多个 PDF 文件(例如按章节拆分)
本文将介绍一种简单、稳定、无需外部依赖的方法,使用 Python 的pypdf库来实现 PDF 的批定页码分割。
可用以下命令确认:
python--version使用 pip 安装最新版pypdf:
pipinstallpypdf如果你在 Linux / macOS 上,且存在 Python2/3 共存问题,可使用:
pip3installpypdf安装完成后测试是否成功:
frompypdfimportPdfReader,PdfWriterprint("pypdf installed OK")PdfReader:读取原始 PDFPdfWriter:创建新的 PDF 文件📌适用场景:
frompypdfimportPdfReader,PdfWriterimportosdefsplit_pdf_by_page_ranges(input_pdf,output_folder,ranges):reader=PdfReader(input_pdf)# 创建输出目录ifnotos.path.exists(output_folder):os.makedirs(output_folder)foridx,(start_page,end_page)inenumerate(ranges,1):writer=PdfWriter()# PDF 内部页码从 0 开始,因此要 -1forpage_numinrange(start_page-1,end_page):ifpage_num<len(reader.pages):writer.add_page(reader.pages[page_num])else:print(f"Warning: page{page_num+1}out of range.")output_filename=(f"{output_folder}/chapter_{idx}_pages_{start_page}-{end_page}.pdf")withopen(output_filename,"wb")asoutput_file:writer.write(output_file)print(f"Saved{output_filename}")你只需要定义一个页码区间列表,格式如下:
# ✏️ 自定义分章节页码(格式:[(开始页, 结束页), ...])page_ranges=[(1,34),# 序(35,50),# 第一章(51,73),# 第二章(74,93),# 第三章(94,118),# 第四章(119,152),# 第五章(153,166),# 第六章(167,183),# 第七章(184,206),# 第八章(207,230),# 第九章(231,251),# 第十章]📌注意事项:
split_pdf_by_page_ranges("input.pdf","./output_manual_split",page_ranges)执行后目录结构如下:
output_manual_split/ ├── chapter_1_pages_1-34.pdf ├── chapter_2_pages_35-50.pdf ├── chapter_3_pages_51-73.pdf ├── ... └── chapter_11_pages_231-251.pdf完整代码
frompypdfimportPdfReader,PdfWriterimportosdefsplit_pdf_by_page_ranges(input_pdf,output_folder,ranges):reader=PdfReader(input_pdf)ifnotos.path.exists(output_folder):os.makedirs(output_folder)foridx,(start_page,end_page)inenumerate(ranges,1):writer=PdfWriter()# 页码从 0 开始,用户输入通常是从 1 开始forpage_numinrange(start_page-1,end_page):ifpage_num<len(reader.pages):writer.add_page(reader.pages[page_num])else:print(f"Warning: page{page_num+1}out of range.")output_filename=f"{output_folder}/chapter_{idx}_pages_{start_page}-{end_page}.pdf"withopen(output_filename,"wb")asoutput_file:writer.write(output_file)print(f"Saved{output_filename}")# ✏️ 自定义你的分章节页码(格式:[(开始页, 结束页), ...])page_ranges=[(1,34),# 序(35,50),# 第一章(51,73),# 第二章(74,93),# 第三章(94,118),# 第四章(119,152),# 第五章(153,166),# 第六章(167,183),# 第七章(184,206),# 第八章(207,230),# 第九章(231,251),# 第十章]# 用法示例split_pdf_by_page_ranges("input.pdf","./output_manual_split",page_ranges)