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

 更新时间:2015年07月30日 12:09:04   作者:willzhao  
这篇文章主要介绍了Python实现简单拆分PDF文件的方法,可实现将一个PDF文件拆分成指定份数的功能,涉及pyPdf模块的使用技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

相关文章

  • Pandas —— resample()重采样和asfreq()频度转换方式

    Pandas —— resample()重采样和asfreq()频度转换方式

    今天小编就为大家分享一篇Pandas —— resample()重采样和asfreq()频度转换方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • tensorflow 变长序列存储实例

    tensorflow 变长序列存储实例

    今天小编就为大家分享一篇tensorflow 变长序列存储实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • Python使用xlwt模块操作Excel的方法详解

    Python使用xlwt模块操作Excel的方法详解

    这篇文章主要介绍了Python使用xlwt模块操作Excel的方法,结合实例形式分析了Python安装xlwt模块及使用xlwt模块针对Excel文件的创建、设置、保存等常用操作技巧,需要的朋友可以参考下
    2018-03-03
  • python 用正则表达式筛选文本信息的实例

    python 用正则表达式筛选文本信息的实例

    今天小编就为大家分享一篇python 用正则表达式筛选文本信息的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • python多任务及返回值的处理方法

    python多任务及返回值的处理方法

    今天小编就为大家分享一篇python多任务及返回值的处理方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python日志记录模块实例及改进

    python日志记录模块实例及改进

    许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪。在python中,我们不需要第三方的日志组件,因为它已经为我们提供了简单易用、且功能强大的日志模块:logging。
    2017-02-02
  • Matplotlib实战之平行坐标系绘制详解

    Matplotlib实战之平行坐标系绘制详解

    平行坐标系是一种统计图表,它包含多个垂直平行的坐标轴,每个轴表示一个字段,并用刻度标明范围,下面我们就来看看如何绘制平行坐标系吧
    2023-08-08
  • python基础教程之五种数据类型详解

    python基础教程之五种数据类型详解

    这篇文章主要介绍了python基础教程之五种数据类型详解的相关资料,这里对Python 的数据类型进行了详细介绍,需要的朋友可以参考下
    2017-01-01
  • Python对小数进行除法运算的正确方法示例

    Python对小数进行除法运算的正确方法示例

    这篇文章主要介绍了Python对小数进行除法运算的正确方法示例,正确的方法是需要转换成浮点数,否则永远不会得到正确结果,需要的朋友可以参考下
    2014-08-08
  • pytest实战技巧之参数化基本用法和多种方式

    pytest实战技巧之参数化基本用法和多种方式

    本文介绍了pytest参数化的基本用法和多种方式,帮助读者更好地使用这个功能,同时,还介绍了一些高级技巧,如动态生成参数名称、参数化的组合和动态生成参数化装饰器,帮助读者更灵活地使用参数化,感兴趣的朋友参考下吧
    2023-12-12

最新评论