看这里!完全免费!几段代码实现PDF拆分!

前言

在一些情况下,如将一些论文从电子书籍中单独拿出来,这个时候就需要将PDF拆分。还有很多其他的情况。但是目前WPS的拆分功能是需要VIP的,这是十分头疼的。

方法

准备工作

  • 电脑上安装好Python运行环境
  • 使用如下命令安装好pymupdf库
python -m pip install --upgrade pymupdf

库说明

PyMuPDF是一个轻量级PDF,XPS和电子书查看器,渲染器和工具包,它可以很方便地对PDF进行操作,包括增加页数,删除页数,修改内容,查看内容等。
官网在这里

代码

import fitz

def split(doc, from_pa, to_pa):
    Doc=doc[0:-4]
    # 打开源PDF
    doc=fitz.open(doc)
    # print(doc.page_count)
    # 我们要保存到的PDF文件
    DOC = fitz.open()
    # 将doc的from_pa至to_pa页的内容复制到DOC中
    DOC.insert_pdf(doc,from_page=from_pa-1,to_page=to_pa-1)
    # 如果发现有些页面多余,可以用这个语句删除
    # DOC.delete_page(pno=0)
    # 保存文件
    DOC.save(Doc+"(拆分).pdf")
    #print("操作完成,文件以保存在:"+Doc+"(拆分).pdf")
    s1="\n操作完成,文件已保存在:\n"+Doc+"(拆分).pdf"
    print(s1)
    return s1
# 调用主函数
if __name__ == '__main__':
	# 一个目录
    path = "E:\\Desktop\\Other conferences\\3.A Wide Area Service Oriented Architecture Design for Plug and Play of Power Grid Equipment\\参考文献\\"
    # PDF文件名
    name = "A Scheduling Strategy of Cloud and Fog Collaborative Computing Based on Execution Time Evaluation.pdf"
    doc = path + name
    # 开始的页数
    from_pa = 1148
    # 结束的页数
    to_pa = 1152
    split(doc,from_pa,to_pa)
用到的函数

(1)fitz.open()
作用:访问受支持的文档,必须使用以下语句打开该文件。
使用方法:

# 打开1.pdf
doc = fitz.open("1.pdf")
# 不加参数,表示暂时是空的
doc1 = fitz.open()

(2)insert_pdf(docsrc,from_page=-1,to_page=-1,start_at=-1)
作用:在不同 PDF 文档之间复制页面,是实现拆分PDF的核心。
用法:

# 打开1.pdf
doc1 = fitz.open('1.pdf') 
# 创建一个空的pdf
doc2 = fitz.open()        
# 将doc1的1-10页的内容复制到doc2中         
doc2.insert_pdf(doc1, to_page = 9)
# 将doc2保存到2.pdf中
doc2.save("2.pdf")

常用参数:

  • docsrc (文档) – 打开的PDF文档,不得是当前文档。但是,它可能引用相同的基础文件。
  • from_page (int) – docsrc 中的第一个页码。默认值为零。
  • to_page (int) – 文档中要复制的最后一页码。默认为最后一页。
  • start_at (int) – 第一个复制的页面将成为目标中的页码start_at。默认值 -1 将页面范围追加到末尾。如果为零,则页面范围将插入当前第一页之前。

(3)delete_page(pno=-1)
作用:删除指定的单独一页
用法:

doc1 = fitz.open('1.pdf') 
# 删除第一页
doc1.delete_page(0)

参数:pno (int) – 要删除的页面。负数从文档末尾向后计数(如索引)。默认值为最后一页。

小结

PyMuPDF的功能不止上面说的这个,它还有很多强大的功能,后续如果用到再进行补充。
目前上面的代码只支持连续页面的,如果是分批次的,需要运行多次。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzl2040

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值