如何使用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基于windows平台锁定键盘输入的方法
Mar 05 Python
Python找出文件中使用率最高的汉字实例详解
Jun 03 Python
Python正则替换字符串函数re.sub用法示例
Jan 19 Python
利用Python实现Windows定时关机功能
Mar 21 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
Django Rest framework之权限的实现示例
Dec 17 Python
python算法题 链表反转详解
Jul 02 Python
使用Python进行防病毒免杀解析
Dec 13 Python
python 抓取知乎指定回答下视频的方法
Jul 09 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 Python
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
Apr 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获取本机真实IP地址实例代码
2016/03/31 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
比较详细的关于javascript 解析json的代码
2009/12/16 Javascript
原生js写的放大镜效果
2012/08/22 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
基于promise.js实现nodejs的promises库
2014/07/06 NodeJs
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
JS实现进入页面时渐变背景色的方法
2015/02/25 Javascript
js计算文本框输入的字符数
2015/10/23 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
jQuery实现用户输入自动完成功能
2017/02/13 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
2019/11/11 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
JavaScript undefined及null区别实例解析
2020/07/21 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
python学习之面向对象【入门初级篇】
2017/01/21 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
python用post访问restful服务接口的方法
2018/12/07 Python
用Python实现大文本文件切割的方法
2019/01/12 Python
python print出共轭复数的方法详解
2019/06/25 Python
python实现一个函数版的名片管理系统过程解析
2019/08/27 Python
Python如何使用函数做字典的值
2019/11/30 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
解决img标签上下出现间隙的方法
2016/12/14 HTML / CSS
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
毕业生就业自荐信
2013/12/04 职场文书
护士个人自我鉴定
2014/03/24 职场文书
幼儿园大班开学教师寄语
2014/04/03 职场文书
青年志愿者活动总结
2014/04/26 职场文书
毕业证委托书范文
2014/09/26 职场文书
机关职员工作检讨书
2014/10/23 职场文书
观看《信仰》心得体会
2016/01/15 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python