一个PDF文档很长,希望按照章节分拆成小文档。
可以在kimichat中输入提示词:
你是一个Python编程专家,要完成一个编写拆分PDF文档的Python脚本的任务,具体步骤如下:
打开文件夹:D:\chatgpt图书\图书1,
读取文件夹里面的PDF文档:Porter L. Learn AI-assisted Python Programming;
这个PDF文档里面一共有11个章节,需要拆分出来的章节是这6、7、8、9这三个章节:
第6章Testing and prompt engineering,页码范围是:99—123
第7章 Problem decomposition,页码范围是:124—157
第8章Debugging and better understanding your code,页码范围是:158—181
第9章Automating tedious tasks,页码范围是:182—215
用PyPDF2库将第7章、第8章、第9章分拆成3个独立的PDF文档,文档标题名和章节标题名一致,保存在文件夹:打开文件夹:D:\chatgpt图书\图书分拆;
然后用python-docx库将PDF文档转换成docx文档格式;
注意:
每一步都要打印相关的信息;
要有错误处理和调试信息,这有助于找出问题所在;
PdfFileReader 类在 PyPDF2 版本 3.0.0 中已经被弃用并移除了,应该使用 PdfReader 类来代替。
这是kimi智能助手生成的代码:
import os
import PyPDF2
from PyPDF2 import PdfReader, PdfWriter
from pdf2docx import Converter
# 定义文件夹路径和文件名
pdf_folder_path = "D:\\chatgpt图书\\图书1"
output_folder_path = "D:\\chatgpt图书\\图书分拆"
pdf_filename = "Porter L. Learn AI-assisted Python Programming.pdf"
# 定义章节的页码范围
chapters = {
"Problem decomposition": (124, 157),
"Debugging and better understanding your code": (158, 181),
"Automating tedious tasks": (182, 215)
}
# 检查输入文件夹是否存在
if not os.path.exists(pdf_folder_path):
print(f"Error: The folder {pdf_folder_path} does not exist.")
exit()
# 检查输出文件夹是否存在,如果不存在则创建
if not os.path.exists(output_folder_path):
os.makedirs(output_folder_path)
# 读取PDF文档
pdf_path = os.path.join(pdf_folder_path, pdf_filename)
if not os.path.exists(pdf_path):
print(f"Error: The file {pdf_filename} does not exist in the folder {pdf_folder_path}.")
exit()
pdf_reader = PdfReader(pdf_path) # 使用PdfReader替代PdfFileReader
num_pages = len(pdf_reader.pages)
print(f"The PDF document has {num_pages} pages.")
# 拆分PDF文档并转换为docx
for chapter_title, (start_page, end_page) in chapters.items():
try:
# 创建一个PDF写入器
pdf_writer = PdfWriter()
# 添加指定页码范围的页面到pdf_writer
for page_num in range(start_page, end_page + 1):
if page_num <= num_pages:
pdf_writer.add_page(pdf_reader.pages[page_num - 1]) # PdfReader使用pages属性
else:
print(f"Warning: Page {page_num} does not exist in the document.")
# 设置文档信息
pdf_writer.add_metadata({
'/Title': chapter_title,
'/Author': 'Porter L.'
})
# 保存PDF文档
output_pdf_path = os.path.join(output_folder_path, f"{chapter_title}.pdf")
pdf_writer.write(open(output_pdf_path, 'wb'))
print(f"Chapter '{chapter_title}' has been successfully saved as {output_pdf_path}")
# 使用pdf2docx转换PDF为docx
cv = Converter(output_pdf_path)
docx_path = os.path.splitext(output_pdf_path)[0] + ".docx"
cv.convert(docx_path, start=0, end=None)
cv.close()
print(f"Chapter '{chapter_title}' has been successfully converted to docx at {docx_path}")
except Exception as e:
print(f"An error occurred while processing chapter '{chapter_title}': {e}")
print("PDF splitting and conversion process completed.")
运行程序,成功分拆文档: