AI 办公实操:PDF 自动分页 + Excel 智能配图









三下科学晨读晚默(教科版)(1).pdf 我希望把这个pdf的 每一页分成上下两部分。最后保存。











将pdf文件夹下的pdf的第一页导出成图片,名称和原名相同。再根据3.xlsx这个文件的A列的姓名,插入图片到B列,要求姓名和图片名相同。











。再唠叨一句,AI时代,手打输入太过时了,可以语音输入了,反正你说的一些胡话,AI也可以理解。尤其当你要输入的提示词过多时,语音输入真的不要太方便。from pypdf import PdfReader, PdfWriterfrom reportlab.pdfgen import canvasfrom reportlab.lib.pagesizes import letterimport ioinput_pdf = "三下科学晨读晚默(教科版)(1).pdf"output_pdf = "三下科学晨读晚默(教科版)_分割合并.pdf"reader = PdfReader(input_pdf)print(f"总页数: {len(reader.pages)}")if reader.pages:page = reader.pages[0]media_box = page.mediaboxwidth = float(media_box.width)height = float(media_box.height)print(f"页面宽度: {width}")print(f"页面高度: {height}")writer = PdfWriter()for i, page in enumerate(reader.pages):media_box = page.mediaboxpage_width = float(media_box.width)page_height = float(media_box.height)mid_height = page_height / 2top_page = PdfWriter()top_page.add_page(page)top_page.pages[0].mediabox.upper_left = (0, page_height)top_page.pages[0].mediabox.lower_right = (page_width, mid_height)bottom_page = PdfWriter()bottom_page.add_page(page)bottom_page.pages[0].mediabox.upper_left = (0, mid_height)bottom_page.pages[0].mediabox.lower_right = (page_width, 0)top_output = io.BytesIO()top_page.write(top_output)top_output.seek(0)writer.add_page(PdfReader(top_output).pages[0])bottom_output = io.BytesIO()bottom_page.write(bottom_output)bottom_output.seek(0)writer.add_page(PdfReader(bottom_output).pages[0])print(f"第 {i+1} 页已分割为上下两部分")with open(output_pdf, "wb") as f:writer.write(f)print(f"处理完成,已保存为: {output_pdf}")
import osimport globimport fitzfrom openpyxl import load_workbookfrom openpyxl.drawing.image import Image as OpenpyxlImagepdf_folder = r'h:\AI办公\pdf'excel_file = r'h:\AI办公\3.xlsx'pdf_files = glob.glob(os.path.join(pdf_folder, '*.pdf'))print(f"找到 {len(pdf_files)} 个PDF文件")for pdf_path in pdf_files:pdf_name = os.path.splitext(os.path.basename(pdf_path))[0]print(f"处理: {pdf_name}.pdf")doc = fitz.open(pdf_path)page = doc[0]zoom = 2.0mat = fitz.Matrix(zoom, zoom)pix = page.get_pixmap(matrix=mat)output_path = os.path.join(pdf_folder, f'{pdf_name}.png')pix.save(output_path)print(f" 保存图片: {output_path}")doc.close()wb = load_workbook(excel_file)sheet = wb.activenames_col_a = []for row in range(2, sheet.max_row + 1):cell_value = sheet.cell(row=row, column=1).valueif cell_value:names_col_a.append((row, cell_value))print(f"\nExcel中A列姓名: {[n[1] for n in names_col_a]}")for row_num, name in names_col_a:image_file = os.path.join(pdf_folder, f'{name}.png')if os.path.exists(image_file):print(f"为 '{name}' 插入图片: {image_file}")img = OpenpyxlImage(image_file)img.width = 120img.height = 160img.anchor = f'B{row_num}'sheet.add_image(img)sheet.column_dimensions['B'].width = 20sheet.row_dimensions[row_num].height = 130print(f" 已插入图片到B{row_num}")else:print(f"警告: 未找到图片文件 '{name}.png'")wb.save(excel_file)print(f"\n完成! Excel文件已保存到: {excel_file}")

夜雨聆风
