如何使用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读写ini文件的方法
May 28 Python
MySQL中表的复制以及大型数据表的备份教程
Nov 25 Python
Django框架多表查询实例分析
Jul 04 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
微信小程序python用户认证的实现
Jul 29 Python
Python爬虫运用正则表达式的方法和优缺点
Aug 25 Python
opencv+python实现均值滤波
Feb 19 Python
在django中使用post方法时,需要增加csrftoken的例子
Mar 13 Python
Python pip install之SSL异常处理操作
Sep 03 Python
如何利用pygame实现打飞机小游戏
May 30 Python
Python中rapidjson参数校验实现
Jul 25 Python
python中pycryto实现数据加密
Apr 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
教你如何开启shopnc b2b2c 伪静态
2014/10/21 PHP
curl和libcurl的区别简介
2015/07/01 PHP
PHP函数func_num_args用法实例分析
2015/12/07 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
简单的js图片轮换代码(js图片轮播)
2014/05/06 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
IE6/IE7中JavaScript json提示缺少标识符、字符串或数字问题处理
2014/12/16 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
jQuery EasyUI 获取tabs的实例解析
2016/12/06 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
vue实现通讯录功能
2018/07/14 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
2020/01/03 Javascript
JavaScript array常用方法代码实例详解
2020/09/02 Javascript
Ant Design Pro 之 ProTable使用操作
2020/10/31 Javascript
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
Python线性方程组求解运算示例
2018/01/17 Python
Python requests库用法实例详解
2018/08/14 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
Python 处理文件的几种方式
2019/08/23 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
基于python的列表list和集合set操作
2019/11/24 Python
Python使用QQ邮箱发送邮件报错smtplib.SMTPAuthenticationError
2019/12/20 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
塔吉特百货公司官网:Target
2017/04/27 全球购物
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
程序员经常用到的UNIX命令
2015/04/13 面试题
三方协议书范本
2014/04/22 职场文书
Oracle创建只读账号的详细步骤
2021/06/07 Oracle
漫画「日和酱的要求是绝对的」第3卷封面公开
2022/03/21 日漫
Three.js实现雪糕地球的使用示例详解
2022/07/07 Javascript