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进程间通信用法实例
Jun 04 Python
Pycharm 创建 Django admin 用户名和密码的实例
May 30 Python
python爬虫正则表达式之处理换行符
Jun 08 Python
python用fsolve、leastsq对非线性方程组求解
Dec 15 Python
用python生成与调用cntk模型代码演示方法
Aug 26 Python
Python实现微信机器人的方法
Sep 06 Python
详解Python3中的 input() 函数
Mar 18 Python
Jupyter notebook如何实现指定浏览器打开
May 13 Python
Python实时监控网站浏览记录实现过程详解
Jul 14 Python
深入了解Python 方法之类方法 &amp; 静态方法
Aug 17 Python
python数据抓取3种方法总结
Feb 07 Python
Python爬虫基础之爬虫的分类知识总结
May 13 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
php分享朋友圈的实现代码
2019/02/18 PHP
JavaScript 函数调用规则
2009/09/14 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
用js判断输入是否为中文的函数
2014/03/10 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
Jquery Easyui日历组件Calender使用详解(23)
2016/12/18 Javascript
Map.vue基于百度地图组件重构笔记分享
2017/04/17 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
element中的$confirm的使用
2020/04/26 Javascript
JavaScript经典案例之简易计算器
2020/08/24 Javascript
PYTHON正则表达式 re模块使用说明
2011/05/19 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
浅谈python数据类型及类型转换
2017/12/18 Python
python3爬取淘宝信息代码分析
2018/02/10 Python
Python读写zip压缩文件的方法
2018/08/29 Python
带你认识Django
2019/01/15 Python
Win10环境python3.7安装dlib模块趟过的坑
2019/08/01 Python
Python如何基于rsa模块实现非对称加密与解密
2020/01/03 Python
Python PyQt5整理介绍
2020/04/01 Python
Windows 下更改 jupyterlab 默认启动位置的教程详解
2020/05/18 Python
美国最大的旗帜经销商:Carrot-Top
2018/02/26 全球购物
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
在网络中有两台主机A和B,并通过路由器和其他交换设备连接起来,已经确认物理连接正确无误,怎么来测试这两台机器是否连通?如果不通,怎么来判断故障点?怎么排
2014/01/13 面试题
实习老师个人总结的自我评价
2013/09/28 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS