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操作ssh实现服务器日志下载的方法
Jun 03 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
Python更新数据库脚本两种方法及对比介绍
Jul 27 Python
使用Python制作微信跳一跳辅助
Jan 31 Python
TensorFlow中权重的随机初始化的方法
Feb 11 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
Python 读取指定文件夹下的所有图像方法
Apr 27 Python
django利用request id便于定位及给日志加上request_id
Aug 26 Python
Python tkinter的grid布局及Text动态显示方法
Oct 11 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
PYQT5开启多个线程和窗口,多线程与多窗口的交互实例
Dec 13 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 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
自己在做项目过程中学到的PHP知识收集
2012/08/20 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
基于jQuery的history历史记录插件
2010/12/11 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
基于RequireJS和JQuery的模块化编程——常见问题全面解析
2016/04/14 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
jQuery文字轮播特效
2017/02/12 Javascript
使用yeoman构建angular应用的方法
2017/08/14 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
2018/09/05 jQuery
vue配置接口域名方法总结
2019/05/12 Javascript
vue + typescript + video.js实现 流媒体播放 视频监控功能
2019/07/07 Javascript
python获取当前计算机cpu数量的方法
2015/04/18 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
python框架django基础指南
2016/09/08 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
python实现udp传输图片功能
2020/03/20 Python
使用HTML5原生对话框元素并轻松创建模态框组件
2019/03/06 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
标签和贴纸印刷:Lightning Labels
2018/03/22 全球购物
应届生会计求职信
2013/11/11 职场文书
护士个人自我鉴定
2014/03/24 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
2014年中班下学期工作总结
2014/12/11 职场文书
2015最新民情日记范文
2015/06/26 职场文书
Nginx使用Lua模块实现WAF的原理解析
2021/09/04 Servers
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers