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

yipeiwu_com6年前Python基础

本文实例讲述了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中的除法运算,在python 2.5版本中存在两种除法运算,即所谓的true除法和floor除法。当使用x/y形式进行除法运算时,如果x和y都是整形,那么运算的会...

超简单使用Python换脸实例

超简单使用Python换脸实例

换脸! 这段时间,deepfakes搞得火热,比方说把《射雕英雄传》里的朱茵换成了杨幂,看下面的图!毫无违和感! 其实早在之前,基于AI换脸的技术就得到了应用,比方说《速度与激情7》里...

解决pycharm回车之后不能换行或不能缩进的问题

解决pycharm回车之后不能换行或不能缩进的问题

如果不小心按到键盘上的Insert键的话,光标显示的就不是一条竖线,而是一个类似方块的阴影区域,比如 插入一下insert键的介绍:它叫插入键,缩写INS。主要用于在文档中切换文本输入...

Python DataFrame一列拆成多列以及一行拆成多行

Python DataFrame一列拆成多列以及一行拆成多行

摘要 在进行数据分析时,我们经常需要把DataFrame的一列拆成多列或者根据某列把一行拆成多行,这篇文章主要讲解这两个目标的实现。 1.读取数据 2.将City列转成多列(以‘|'...

Python算法中的时间复杂度问题

Python算法中的时间复杂度问题

在实现算法的时候,通常会从两方面考虑算法的复杂度,即时间复杂度和空间复杂度。顾名思义,时间复杂度用于度量算法的计算工作量,空间复杂度用于度量算法占用的内存空间。 本文将从时间复杂度的概...