pip install PyPDF2pip install pdfplumber
2. 批量拆分@H_301_19@@H_301_4@将一个pdf拆分为几个小的pdf,主要用到PyPDF2这个库拆分思路如下:读取pdf的整体信息,总页数等遍历每一页内容,以每个step为间隔将pdf保存为每一个小的文件块将小的文件重新保存为新的pdf文件
import os import PyPDF2from PyPDF2 import pdffileReaderfrom PyPDF2 import pdffileWriterdef split_pdf(filename, filepath, save_dirpath, step=5): """ 拆分pdf为多个小的pdf文件, @param filename:文件名 @param filepath:文件路径,包含pdf的名字 @param save_dirpath:保存小的pdf的文件路径 @param step: 每step间隔的页面生成一个文件,例如step=5,表示0-4页、5-9页...为一个文件 @return: """ if not os.path.exists(save_dirpath): os.mkdir(save_dirpath) pdf_reader = pdffileReader(filepath) # 读取每一页的数据 pages = pdf_reader.getNumPages() for page in range(0, pages, step): pdf_writer = pdffileWriter() # 拆分pdf,每 step 页的拆分为一个文件 for index in range(page, page+step): if index < pages: pdf_writer.addPage(pdf_reader.getPage(index)) # 保存拆分后的小文件 save_path = os.path.join(save_dirpath, filename+str(int(page/step)+1)+'.pdf') print(save_path) with open(save_path, "wb") as out: pdf_writer.write(out) print("文件已成功拆分,保存路径为:"+save_dirpath)filename='易方达中小盘混合型证券投资基金2020年中期报告'filepath=r'E:\数据分析\python办公\易方达中小盘混合型证券投资基金2020年中期报告.pdf'save_dirpath='E:\数据分析\python办公\pdf拆分'split_pdf(filename,filepath,save_dirpath,step=5)
@H_301_4@PyPDF2\utils.py
将其中的238 行的
r = s.encode('latin-1')if len(s) < 2:bc[s] = rreturn r
@H_301_4@改为try:r = s.encode('latin-1')if len(s) < 2:bc[s] = rreturn rexcept Exception as e:r = s.encode('utf-8')if len(s) < 2:bc[s] = rreturn r
@H_301_4@改完后一定要重启python,否则不成功3. 批量合并@H_301_19@@H_301_4@思路:确定要合并的文件顺序循环追加到一个文件块中保存成为一个新的文件
def concat_pdf(filename, read_dirpath, save_filepath): """ 合并多个pdf文件 @param filename:文件名前缀 @param read_dirpath:要合并的pdf目录 @param save_filepath:合并后的pdf文件路径,包含新pdf的名字 @return: """ pdf_writer = pdffileWriter() # 对文件名进行排序 List_filename = os.Listdir(read_dirpath) List_filename.sort(key=lambda x: int(x[:-4].replace(filename, ""))) for filename in List_filename: print(filename) filepath = os.path.join(read_dirpath, filename) # 读取文件并获取文件的页数 pdf_reader = pdffileReader(filepath) pages = pdf_reader.getNumPages() # 逐页添加 for page in range(pages): pdf_writer.addPage(pdf_reader.getPage(page)) # 保存合并后的文件 with open(save_filepath, "wb") as out: pdf_writer.write(out) print("文件已成功合并,保存路径为:"+save_filepath)filename='易方达中小盘混合型证券投资基金2020年中期报告'read_dirpath='E:\数据分析\python办公\pdf拆分'save_filepath='E:\数据分析\python办公\pdf合并\易方达中小盘混合型证券投资基金2020年中期报告.pdf'concat_pdf(filename,read_dirpath,save_filepath)
@H_301_4@ 总结 以上是内存溢出为你收集整理的【python办公自动化】task 04 python与pdf全部内容,希望文章能够帮你解决【python办公自动化】task 04 python与pdf所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)