如何使用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 相关文章推荐
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
Oct 13 Python
Python产生Gnuplot绘图数据的方法
Nov 09 Python
python 用下标截取字符串的实例
Dec 25 Python
python设定并获取socket超时时间的方法
Jan 12 Python
pthon贪吃蛇游戏详细代码
Jan 27 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
python简单区块链模拟详解
Jul 03 Python
python使用多线程编写tcp客户端程序
Sep 02 Python
Python对接支付宝支付自实现功能
Oct 10 Python
python重要函数eval多种用法解析
Jan 14 Python
python3.8与pyinstaller冲突问题的快速解决方法
Jan 16 Python
pandas实现导出数据的四种方式
Dec 13 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弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
PHP 常用的header头部定义汇总
2015/06/19 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
nodejs教程 安装express及配置app.js文件的详细步骤
2013/05/11 NodeJs
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
js实现有时间限制消失的图片方法
2015/02/27 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
Bootstrap Table中的多选框删除功能
2018/07/15 Javascript
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
2018/09/06 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
js面试题之异步问题的深入理解
2020/09/20 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
使用Python的Flask框架实现视频的流媒体传输
2015/03/31 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
python中操作文件的模块的方法总结
2021/02/04 Python
德国狗狗用品在线商店:Schecker
2017/03/17 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
关于赌博的检讨书
2014/01/08 职场文书
自考生自我评价分享
2014/01/18 职场文书
实习单位鉴定评语
2014/04/26 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
投标授权委托书范文
2014/08/02 职场文书
小学一年级数学教学计划
2015/01/20 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
2016猴年春节问候语
2015/11/11 职场文书
Nginx反爬虫策略,防止UA抓取网站
2021/03/31 Servers