如何使用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 pass 语句使用示例
Mar 11 Python
python数据结构之图的实现方法
Jul 08 Python
Python多线程扫描端口代码示例
Feb 09 Python
快速解决安装python没有scripts文件夹的问题
Apr 03 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
Jul 17 Python
Django框架模型简单介绍与使用分析
Jul 18 Python
python命名空间(namespace)简单介绍
Aug 10 Python
python 发送json数据操作实例分析
Oct 15 Python
使用Python实现画一个中国地图
Nov 23 Python
Python使用进程Process模块管理资源
Mar 05 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
python 自定义异常和主动抛出异常(raise)的操作
Dec 11 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结合飞信 免费天气预报短信
2009/05/07 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
PHP获取文件夹大小函数用法实例
2015/07/01 PHP
php图像处理类实例
2015/07/28 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
2016/10/11 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
2019/10/03 PHP
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
js兼容的placeholder属性详解
2013/08/18 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
VUE实现表单元素双向绑定(总结)
2017/08/08 Javascript
jquery对table做排序操作的实例演示
2017/08/10 jQuery
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
Python中django学习心得
2017/12/06 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
设置python3为默认python的方法
2018/10/31 Python
浅谈pycharm出现卡顿的解决方法
2018/12/03 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
2020/04/23 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
Html5 实现微信分享及自定义内容的流程
2019/08/20 HTML / CSS
玩具反斗城西班牙网上商城:ToysRUs西班牙
2017/01/19 全球购物
美国在线购物频道:Shop LC
2019/04/21 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
安全生产计划书
2014/05/04 职场文书
个人年终总结范文
2015/03/09 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
Python 中 Shutil 模块详情
2021/11/11 Python