如何使用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 相关文章推荐
Django中的CACHE_BACKEND参数和站点级Cache设置
Jul 23 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
Jul 12 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
python验证码识别实例代码
Feb 03 Python
tensorflow 加载部分变量的实例讲解
Jul 27 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
python re正则匹配网页中图片url地址的方法
Dec 20 Python
python实现车牌识别的示例代码
Aug 05 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 Python
K近邻法(KNN)相关知识总结以及如何用python实现
Jan 28 Python
Python读写yaml文件
Mar 20 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 MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
php获取目录所有文件并将结果保存到数组(实例)
2013/10/25 PHP
PHP中绘制图像的一些函数总结
2014/11/19 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
比较全的JS checkbox全选、取消全选、删除功能代码
2008/12/19 Javascript
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
layui实现数据分页功能(ajax异步)
2019/07/27 Javascript
nodejs实现聊天机器人功能
2019/09/19 NodeJs
详解vue中多个有顺序要求的异步操作处理
2019/10/29 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
把大数据数字口语化(python与js)两种实现
2013/02/21 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
使用 Supervisor 监控 Python3 进程方式
2019/12/05 Python
python基于opencv检测程序运行效率
2019/12/28 Python
python实现126邮箱发送邮件
2020/05/20 Python
浅谈django框架集成swagger以及自定义参数问题
2020/07/07 Python
Python 忽略文件名编码的方法
2020/08/01 Python
Python文件操作的面试题
2013/06/22 面试题
高三自我鉴定
2013/10/23 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
《值日生》教学反思
2014/02/17 职场文书
销售目标责任书
2014/07/23 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
放假通知格式
2015/04/14 职场文书
学校运动会加油词
2015/07/18 职场文书