Python实现简单拆分PDF文件的方法
作者:willzhao 发布时间:2022-09-27 19:20:37
标签:Python,PDF
本文实例讲述了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程序设计有所帮助。


猜你喜欢
- 在网站中经常会生成表格,CSV和Excel都是常用的报表格式,CSV相对来说比较简单,如果大家有疑问我会相继发布一些CSV的实例,这里主要介
- 引言在上一篇文章中 GoFrame数据校验之校验结果 | Error接口对象 ,关于顺序与非顺序性校验没有做充分的介绍。这篇文章填上之前留的
- Anaconda是一个和Canopy类似的科学计算环境,但用起来更加方便。自带的包管理器conda也很强大。首先是下载安装。Anaconda
- 你不得不承认,今天网络发展之迅速,信息流动速度之快、量之大,是我们不曾考虑过的,但现在它就真真切切地摆在我们面前。如何接纳信息,怎么处理、消
- 一、组件设计组件就是把图形、非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式现在有一个场景,点击新增与编辑都弹框出来进行填写,
- 目录爬虫Python验证码识别 1、批量下载验证码图片2、识别代码看看效果 3、折腾降噪、去干扰爬虫Python验证码识
- 一、实验内容编写一Python程序,要求实现以下功能:读入一幅图像。使用两种以上的方法分别向图像中添加噪声。输出一幅二值图像,图像中未加入噪
- Python最近挺火呀,比鹿晗薛之谦还要火,当然是在程序员之间。下面我们看看有关Python的相关内容。上一篇文章我们已经介绍了部分Pyth
- 最近,同事需要从数个表中查询用户的业务和报告数据,写了一个SQL语句,查询比较慢:Select S.Name,S.AccountantCod
- 在pytorch训练过程中可以通过下面这一句代码来打印当前学习率print(net.optimizer.state_dict()['
- 1、数组a第0个元素(二维数组)下的所有子元素(一维数组)的第一列import numpy as npb=np.arange(24)a=b.
- 今天接到测试人员反应,测试环境前端应用程序无连接mysql数据库,登录mysql服务器,查看错误日志,发现有如下报错:ERROR 1135
- 一、发送电子邮件Python标准库提供了smtplib,用于实现SMTP协议发送邮件。标准库还提供email模块帮助我们构建邮件格式。SMT
- 说明Django 默认的用户表 auth_user 包含 id, password, last_login, is_superuser, u
- 在应用中,有时候会 依赖第三方模块执行方法,比如调用某模块的上传下载,数据库查询等操作的时候,如果出现网络问题或其他问题,可能有超时重新请求
- 在php中实现验证码还是很方便的,关键点在于掌握php gd库与session的用法。纵观网上php 生成验证码的例子,无不是php gd库
- 破解百度翻译翻译是一件麻烦的事情,如果可以写一个爬虫程序直接爬取百度翻译的翻译结果就好了,可当我打开百度翻译的页面,输入要翻译的词时突然发现
- 本文实例讲述了Python实现求最大公约数及判断素数的方法。分享给大家供大家参考。具体实现方法如下:#!/usr/bin/env pytho
- 游戏开始前的注意事项1:游戏《外星人入侵》将包含很多文件,请在你的D盘中新建一个空文件夹,并将其命名为alien_invasion.请务必将
- 本文实例讲述了Python基于递归算法求最小公倍数和最大公约数。分享给大家供大家参考,具体如下:# 最小公倍数def lcm(a, b, c