如何使用python进行pdf文件分割


Posted in Python onNovember 11, 2019

这篇文章主要介绍了如何使用python进行pdf文件分割,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

代码如下

import os
from pyPdf import PdfFileWriter, PdfFileReader
def split(pdf_file, delta, output_dir):
  if not os.path.exists(output_dir):
    os.makedirs(output_dir)
  if not os.path.exists(pdf_file):
    return

  print('----------参数信息---------------')
  print('File:' + pdf_file)
  print('PageNums:' + str(delta))
  print('Dest:' + output_dir)
  print('-----------pdf开始切分-----------')
  file_name = pdf_file.split('/')[-1].split('.')[0]
  output_dir = os.path.join(out_dir, file_name)
  if not os.path.exists(output_dir):
    os.mkdir(output_dir)
  input_stream = file(pdf_file, 'rb')
  pdf_input = PdfFileReader(input_stream)
  page_count = pdf_input.getNumPages()
  sum_page_count = int(page_count / (delta * 1.0))
  remind_page = page_count % delta
  for i in range(0, sum_page_count + 1):
    start = i * delta
    end = (i + 1) * delta
    pdf_out = PdfFileWriter()
    file_path = os.path.join(output_dir, os.path.split(pdf_file)[1]) #
    if i < sum_page_count:
      full_file_name = file_name + str(start + 1) + '-' + str(end) + ".pdf"
      file_path = os.path.join(output_dir, full_file_name)
      print(full_file_name + '切分完成')
      for j in range(start, end):
        page = pdf_input.getPage(j)
        pdf_out.addPage(page)
    else:
      full_file_name = file_name + str(start + 1) + '-' + str(start + remind_page) + ".pdf"
      file_path = os.path.join(output_dir, full_file_name)
      print(full_file_name + '切分完成')
      for j in range(delta * (sum_page_count), page_count):
        page = pdf_input.getPage(j)
        pdf_out.addPage(page)
    out_stream = file(file_path, 'wb')
    pdf_out.write(out_stream)
    out_stream.close()
  input_stream.close()
  print('-----------pdf切分完成-----------')

if __name__ == '__main__':
  import sys  
  #python splitPdf.py /Users/xxxxx/Downloads/UNIX网络编程卷1:套接字联网API(第3版).pdf 180 /Users/xxxxx/Documents/output

  try:
    pdf_path = sys.argv[1]
    page_count = int(sys.argv[2])
    out_dir = sys.argv[3]
    split(pdf_path, page_count, out_dir)
  except:
    pass

使用方法

$ python splitPdf.py /Users/xxxxx/Downloads/UNIX网络编程卷1:套接字联网API(第3版).pdf 180 /Users/xxxxx/Documents/output
----------参数信息---------------
File:/Users/xxxxx/Downloads/UNIX网络编程卷1:套接字联网API(第3版).pdf
PageNums:180
Dest:/Users/xxxxx/Documents/output
-----------pdf开始切分-----------
UNIX网络编程卷1:套接字联网API(第3版)1-180.pdf切分完成
UNIX网络编程卷1:套接字联网API(第3版)181-360.pdf切分完成
UNIX网络编程卷1:套接字联网API(第3版)361-540.pdf切分完成
UNIX网络编程卷1:套接字联网API(第3版)541-720.pdf切分完成
UNIX网络编程卷1:套接字联网API(第3版)721-823.pdf切分完成
-----------pdf切分完成-----------

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
理解生产者消费者模型及在Python编程中的运用实例
Jun 26 Python
Python实现二分查找与bisect模块详解
Jan 13 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
Pycharm 设置自定义背景颜色的图文教程
May 23 Python
Python for循环生成列表的实例
Jun 15 Python
深入浅析Python传值与传址
Jul 10 Python
对python requests的content和text方法的区别详解
Oct 11 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
Aug 09 Python
tesserocr与pytesseract模块的使用方法解析
Aug 30 Python
使用Python求解带约束的最优化问题详解
Feb 11 Python
python实现处理mysql结果输出方式
Apr 09 Python
Java多线程实现四种方式原理详解
Jun 02 Python
python实发邮件实例详解
Nov 11 #Python
Python 中 -m 的典型用法、原理解析与发展演变
Nov 11 #Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 #Python
Python帮你识破双11的套路
Nov 11 #Python
如何基于Python批量下载音乐
Nov 11 #Python
Python实现报警信息实时发送至邮箱功能(实例代码)
Nov 11 #Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
Nov 11 #Python
You might like
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
laravel excel 上传文件保存到本地服务器功能
2019/11/14 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
JavaScript显示当然日期和时间即年月日星期和时间
2013/10/29 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
JavaScript中的数组特性介绍
2014/12/30 Javascript
jQuery中复合属性选择器用法实例
2014/12/31 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
AngularJS实现标签页的两种方式
2016/09/05 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
javascript的delete运算符知识点总结
2019/11/19 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
[01:57]2018DOTA2亚洲邀请赛赛前采访-iG
2018/04/03 DOTA
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
python中defaultdict的用法详解
2017/06/07 Python
利用python操作SQLite数据库及文件操作详解
2017/09/22 Python
了解不常见但是实用的Python技巧
2019/05/23 Python
python实现截取屏幕保存文件,删除N天前截图的例子
2019/08/27 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
如何写出高性能的JSP和Servlet
2013/01/22 面试题
C语言面试题
2013/05/19 面试题
大学生最常用的自我评价
2013/12/07 职场文书
建议书怎么写
2014/03/12 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
财务人员岗位职责
2015/02/03 职场文书
idea搭建可运行Servlet的Web项目
2021/06/26 Java/Android
java多态注意项小结
2021/10/16 Java/Android
Python 视频画质增强
2022/04/28 Python
win10此电脑打不开怎么办 win10双击此电脑无响应的解决办法
2022/07/23 数码科技