如何使用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 相关文章推荐
老生常谈进程线程协程那些事儿
Jul 24 Python
Python3简单实例计算同花的概率代码
Dec 06 Python
python实现雨滴下落到地面效果
Jun 21 Python
Flask之flask-script模块使用
Jul 26 Python
Python测试网络连通性示例【基于ping】
Aug 03 Python
python 实现调用子文件下的模块方法
Dec 07 Python
Python数据集切分实例
Dec 08 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
django 连接数据库 sqlite的例子
Aug 14 Python
Python代理IP爬虫的新手使用教程
Sep 05 Python
Django之使用内置函数和celery发邮件的方法示例
Sep 16 Python
关于Numpy中的行向量和列向量详解
Nov 30 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
文件上传程序的全部源码
2006/10/09 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
JS自动缩小超出大小的图片
2012/10/12 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
jQuery使用getJSON方法获取json数据完整示例
2016/09/13 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
微信小程序 image组件遇到的问题
2019/05/28 Javascript
vue进入页面时不在顶部,检测滚动返回顶部按钮问题及解决方法
2019/10/30 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
python获取一组数据里最大值max函数用法实例
2015/05/26 Python
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
深入了解Python在HDA中的应用
2019/09/05 Python
解决Python中回文数和质数的问题
2019/11/24 Python
CSS3中利用animation属性创建雪花飘落特效
2014/05/14 HTML / CSS
法院实习人员自我鉴定
2013/09/26 职场文书
大学毕业生工作的自我评价
2013/10/01 职场文书
环境工程大学生自荐信
2013/10/21 职场文书
毕业实习个人鉴定范文
2013/12/10 职场文书
少先队活动总结
2014/08/29 职场文书
公司周年庆典标语
2014/10/07 职场文书
2015年医院工作总结范文
2015/04/09 职场文书
小学生教师节广播稿
2015/08/19 职场文书
《活见鬼》教学反思
2016/02/24 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
情况说明书格式及范文
2019/06/24 职场文书
HTTP中的Content-type详解
2022/01/18 HTML / CSS
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技