如何使用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文件读写并使用mysql批量插入示例分享(python操作mysql)
Feb 17 Python
Python程序员开发中常犯的10个错误
Jul 07 Python
零基础写python爬虫之爬虫框架Scrapy安装配置
Nov 06 Python
python+django快速实现文件上传
Oct 24 Python
基于python3 OpenCV3实现静态图片人脸识别
May 25 Python
python 制作自定义包并安装到系统目录的方法
Oct 27 Python
python自动化之Ansible的安装教程
Jun 13 Python
Windows系统Python直接调用C++ DLL的方法
Aug 01 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
python能在浏览器能运行吗
Jun 17 Python
Django自带的用户验证系统实现
Dec 18 Python
Python实战之疫苗研发情况可视化
May 18 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
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
基于PHP实现等比压缩图片大小
2016/03/04 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
javascript修改表格背景色实例代码分享
2013/12/10 Javascript
jQuery获取iframe的document对象的方法
2014/10/10 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
15个jquery常用方法、小技巧分享
2015/01/13 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
jQuery中的siblings用法实例分析
2015/12/24 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
python操作ssh实现服务器日志下载的方法
2015/06/03 Python
基于python中staticmethod和classmethod的区别(详解)
2017/10/24 Python
Matplotlib scatter绘制散点图的方法实现
2020/01/02 Python
用什么库写 Python 命令行程序(示例代码详解)
2020/02/20 Python
解决python脚本中error: unrecognized arguments: True错误
2020/04/20 Python
阿联酋优惠券服务:Living Kool
2019/12/12 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
化工专业个人的求职信范文
2013/11/28 职场文书
政风行风评议整改方案
2014/09/15 职场文书
保研推荐信格式
2015/03/25 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
2019年入党思想汇报格式与要求
2019/06/25 职场文书
python OpenCV学习笔记
2021/03/31 Python