如何使用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中关键字is与==的区别简述
Jul 31 Python
Python sys.argv用法实例
May 28 Python
详解Django中的ifequal和ifnotequal标签使用
Jul 16 Python
python获取外网IP并发邮件的实现方法
Oct 01 Python
python将txt文档每行内容循环插入数据库的方法
Dec 28 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
Aug 02 Python
通过 Django Pagination 实现简单分页功能
Nov 11 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
python3 正则表达式基础廖雪峰
Mar 25 Python
django ListView的使用 ListView中获取url中的参数值方式
Mar 27 Python
解决tensorflow/keras时出现数组维度不匹配问题
Jun 29 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上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
php中将一段数据存到一个txt文件中并显示其内容
2014/08/15 PHP
PHP中new static()与new self()的区别异同分析
2014/08/22 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
关于laravel 子查询 &amp; join的使用
2019/10/16 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
JS+CSS实现带关闭按钮DIV弹出窗口的方法
2015/02/27 Javascript
javascript实现检验的各种规则
2015/07/31 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
BootStrap 图片样式、辅助类样式和CSS组件的实例详解
2017/01/20 Javascript
Vue-Cli中自定义过滤器的实现代码
2017/08/12 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
Puppet的一些技巧
2018/09/17 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
2018/12/07 Javascript
[11:27]《一刀刀一天》之DOTA全时刻20:TI4总奖金突破920W TS赛事分析
2014/06/18 DOTA
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
python的三目运算符和not in运算符使用示例
2014/03/03 Python
python安装以及IDE的配置教程
2015/04/29 Python
详解在Python中处理异常的教程
2015/05/24 Python
Python安装lz4-0.10.1遇到的坑
2018/05/20 Python
python中的decimal类型转换实例详解
2019/06/26 Python
Django实现文件上传和下载功能
2019/10/06 Python
职称自我鉴定
2013/10/15 职场文书
仓库管理专业个人的自我评价
2013/12/30 职场文书
小学生环保标语
2014/06/13 职场文书
常用的MongoDB查询语句的示例代码
2021/07/25 MongoDB
OpenStack虚拟机快照和增量备份实现方法
2022/04/04 Servers