如何使用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 相关文章推荐
netbeans7安装python插件的方法图解
Dec 24 Python
Python的函数嵌套的使用方法
Jan 24 Python
Python中优化NumPy包使用性能的教程
Apr 23 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
Python中协程用法代码详解
Feb 10 Python
Python中将dataframe转换为字典的实例
Apr 13 Python
Python中浅拷贝copy与深拷贝deepcopy的简单理解
Oct 26 Python
python求最大公约数和最小公倍数的简单方法
Feb 13 Python
Python字符串格式化f-string多种功能实现
May 07 Python
简单的命令查看安装的python版本号
Aug 28 Python
python中numpy数组与list相互转换实例方法
Jan 29 Python
Python数组变形的几种实现方法
May 30 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
url decode problem 解决方法
2011/12/26 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
微信公众平台实现获取用户OpenID的方法
2015/04/15 PHP
php 截取GBK文档某个位置开始的n个字符方法
2017/03/08 PHP
php脚本守护进程原理与实现方法详解
2017/07/20 PHP
PHP使用标准库spl实现的观察者模式示例
2018/08/04 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
Web前端设计模式  制作漂亮的弹出层
2010/10/29 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2012/01/21 Javascript
js 数组去重的四种实用方法
2014/09/09 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
2016/12/08 Javascript
详解如何使用Vue2做服务端渲染
2017/03/29 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
2017/09/18 Javascript
elemetUi 组件--el-upload实现上传Excel文件的实例
2017/10/27 Javascript
跨域请求两种方法 jsonp和cors的实现
2018/11/11 Javascript
微信小程序提交form操作示例
2018/12/30 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
javascript实现切割轮播效果
2019/11/28 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
2019/09/04 Python
python 实现矩阵按对角线打印
2019/11/29 Python
pytorch实现mnist数据集的图像可视化及保存
2020/01/14 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
马来西亚网上美容店:Hermo.my
2017/11/25 全球购物
一套Java笔试题
2016/08/20 面试题
微信营销策划方案
2014/02/24 职场文书
绩效考核实施方案
2014/03/18 职场文书
新年爱情寄语
2014/04/08 职场文书
三方合作意向书范本
2015/05/09 职场文书