Python实现简单拆分PDF文件的方法


Posted in Python onJuly 30, 2015

本文实例讲述了Python实现简单拆分PDF文件的方法。分享给大家供大家参考。具体如下:

依赖pyPdf处理PDF文件
切分pdf文件

使用方法:
1)将要切分的文件放在input_dir目录下
2)在configure.txt文件中设置要切分的份数(如要切分4份,则设置part_num=4)
3)执行程序
4)切分后的文件保存在output_dir目录下
5)运行日志写在pp_log.txt中

P.S. 本程序可以批量切割多个pdf文件

from pyPdf import PdfFileWriter, PdfFileReader
import os
import time
import sys
def part_pdf(input_file, output_file, config_count, f_w, now, file_name):
  file1 = file(input_file, 'rb')
  pdf = PdfFileReader(file1)
  pdf_pages_len = len(pdf.pages)
  if config_count <= pdf_pages_len:
    ye = pdf_pages_len / config_count
    lst_ye = pdf_pages_len % config_count
    part_count = 0
    part_count_ye = 0
    for fen in range(config_count):
      part_count += 1
      if part_count == config_count:
        part_ye = ye + lst_ye
      else:
        part_ye = ye
      write_pdf(pdf, part_count_ye, part_count_ye+part_ye, fen, output_file)
      part_count_ye += ye
  else:
    f_w.writelines('time: '+now+' file name: '+file_name+' status: part_num > pdf pages [error]\n')
    sys.exit(1)
def write_pdf(pdf, part_count_ye, part_count_ye_end, fen, output_file):
  out = PdfFileWriter()
  for pp in range(part_count_ye, part_count_ye_end):
    out.addPage(pdf.getPage(pp))
  ous = file(output_file+'_'+str(fen+1)+'.pdf', 'wb')
  out.write(ous)
  ous.close()
def pdf_main():
  f = open('configure.txt', 'r')
  f_w = open('pp_log.txt', 'a')
  now = time.strftime('%Y-%m-%d %H:%M:%S')
  for i in f:
    i_ = i.strip()
    aa = i_.split('=')[1]
    if i_.find('part_num=') != -1 and aa.isdigit():
      config_count = int(aa)
    else:
      f_w.writelines('time: '+now+' status: part_num in configure.txt is error [error]\n')
      sys.exit(1)
  files = os.listdir('input_dir/')
  for each in files:
    input_file = 'input_dir/'+each
    file_name = input_file[input_file.index('/'):input_file.index('.')]
    output_file = 'output_dir/'+file_name
    part_pdf(input_file, output_file, config_count, f_w, now, file_name)
    f_w.writelines('time: '+now+' file name: '+file_name+' status: success\n')
pdf_main()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python open读写文件实现脚本
Sep 06 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
Python制作Windows系统服务
Mar 25 Python
Python中的defaultdict与__missing__()使用介绍
Feb 03 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
简单了解python代码优化小技巧
Jul 08 Python
详解python中自定义超时异常的几种方法
Jul 29 Python
python实现异常信息堆栈输出到日志文件
Dec 26 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
Python netmiko模块的使用
Feb 14 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
Oct 16 Python
使用Python脚本生成随机IP的简单方法
Jul 30 #Python
Python实现批量读取word中表格信息的方法
Jul 30 #Python
python删除特定文件的方法
Jul 30 #Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 #Python
Python的迭代器和生成器
Jul 29 #Python
在Python程序中操作MySQL的基本方法
Jul 29 #Python
Python操作Word批量生成文章的方法
Jul 28 #Python
You might like
第十四节 命名空间 [14]
2006/10/09 PHP
十天学会php之第二天
2006/10/09 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
laravel 自定义常量的两种方案
2019/10/14 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
JS 的应用开发初探(mootools)
2009/12/19 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
React性能优化系列之减少props改变的实现方法
2019/01/17 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
JavaScript中ES6规范中let和const的用法和区别
2020/08/06 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
Python使用Selenium+BeautifulSoup爬取淘宝搜索页
2018/02/24 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
pip安装python库的方法总结
2019/08/02 Python
python 视频逐帧保存为图片的完整实例
2019/12/10 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
SmartBuyGlasses德国:购买太阳镜和眼镜
2019/08/20 全球购物
淘宝网店营销策划书
2014/01/11 职场文书
新护士岗前培训制度
2014/02/02 职场文书
党员创先争优公开承诺书
2014/03/28 职场文书
中学生操行评语大全
2014/04/24 职场文书
青年志愿者活动方案
2014/08/17 职场文书
关于九一八事变的演讲稿2014
2014/09/17 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
初中思品教学反思
2016/02/20 职场文书
Nginx域名转发https访问的实现
2021/03/31 Servers
使用tensorflow 实现反向传播求导
2021/05/26 Python