使用python进行pdf文件分割
Python代码
import os
from pyPdf import PdfFileWriter, PdfFileReader
def split(pdf_file, delta, output_dir):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
if not os.path.exists(pdf_file):
return print('----------参数信息---------------')
print('File:' + pdf_file)
print('PageNums:' + str(delta))
print('Dest:' + output_dir)
print('-----------pdf开始切分-----------')
file_name = pdf_file.split('/')[-1].split('.')[0]
output_dir = os.path.join(out_dir, file_name)
if not os.path.exists(output_dir):
os.mkdir(output_dir)
input_stream = file(pdf_file, 'rb')
pdf_input = PdfFileReader(input_stream)
page_count = pdf_input.getNumPages()
sum_page_count = int(page_count / (delta * 1.0))
remind_page = page_count % delta
for i in range(0, sum_page_count + 1):
start = i * delta
end = (i + 1) * delta
pdf_out = PdfFileWriter()
file_path = os.path.join(output_dir, os.path.split(pdf_file)[1]) #
if i < sum_page_count:
full_file_name = file_name + str(start + 1) + '-' + str(end) + ".pdf"
file_path = os.path.join(output_dir, full_file_name)
print(full_file_name + '切分完成')
for j in range(start, end):
page = pdf_input.getPage(j)
pdf_out.addPage(page)
else:
full_file_name = file_name + str(start + 1) + '-' + str(start + remind_page) + ".pdf"
file_path = os.path.join(output_dir, full_file_name)
print(full_file_name + '切分完成')
for j in range(delta * (sum_page_count), page_count):
page = pdf_input.getPage(j)
pdf_out.addPage(page)
out_stream = file(file_path, 'wb')
pdf_out.write(out_stream)
out_stream.close()
input_stream.close()
print('-----------pdf切分完成-----------') if __name__ == '__main__':
import sys
#python splitPdf.py /Users/xxxxx/Downloads/UNIX网络编程卷1:套接字联网API(第3版).pdf 180 /Users/xxxxx/Documents/output try:
pdf_path = sys.argv[1]
page_count = int(sys.argv[2])
out_dir = sys.argv[3]
split(pdf_path, page_count, out_dir)
except:
pass
使用方法
$ python splitPdf.py /Users/xxxxx/Downloads/UNIX网络编程卷1:套接字联网API(第3版).pdf 180 /Users/xxxxx/Documents/output
----------参数信息---------------
File:/Users/xxxxx/Downloads/UNIX网络编程卷1:套接字联网API(第3版).pdf
PageNums:180
Dest:/Users/xxxxx/Documents/output
-----------pdf开始切分-----------
UNIX网络编程卷1:套接字联网API(第3版)1-180.pdf切分完成
UNIX网络编程卷1:套接字联网API(第3版)181-360.pdf切分完成
UNIX网络编程卷1:套接字联网API(第3版)361-540.pdf切分完成
UNIX网络编程卷1:套接字联网API(第3版)541-720.pdf切分完成
UNIX网络编程卷1:套接字联网API(第3版)721-823.pdf切分完成
-----------pdf切分完成-----------
使用python进行pdf文件分割的更多相关文章
- Python绘制PDF文件~超简单的小程序
Python绘制PDF文件 项目简介 这次项目很简单,本次项目课,代码不超过40行,主要是使用 urllib和reportlab模块,来生成一个pdf文件. reportlab官方文档 http:// ...
- 使用Python从PDF文件中提取数据
前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都应该了 ...
- Python | 实现pdf文件分页
不知道大家有没有遇到过这么一种情况,就比如一个pdf格式的电子书,我们经常浏览的是其中的一部分,而这电子书的页数很大,每当需要浏览时,就需要翻到对应的页码,就有点儿繁琐. 还有一些情况,比如,我们想分 ...
- PDF文件分割和合并
今天自己用C#实现了下PDF文件的分割和合并,大家可以试用一下. 代码和使用说明在这里:https://github.com/cserspring/pdf_split_merge 有什么意见,大家可以 ...
- python学习——大文件分割与合并
在平常的生活中,我们会遇到下面这样的情况: 你下载了一个比较大型的游戏(假设有10G),现在想跟你的同学一起玩,你需要把这个游戏拷贝给他. 然后现在有一个问题是文件太大(我们不考虑你有移动硬盘什么的情 ...
- 记一次为解决Python读取PDF文件的Shell操作
目录 一.背景 二.问题 三.解决 四.一顿分析及 Shell 操作 五.后续 一.背景 本想将 PDF 文件转换为 Word 文档,然后网上搜索了一下发现有挺多转换的软件.有的是免费的.收费,咱也不 ...
- Python实现PDF文件截取
python3截取PDF文件中的一部分. from PyPDF2 import PdfFileWriter, PdfFileReader # 开始页 start_page = 0 # 截止页 end_ ...
- windows下用Python把pdf文件转化为图片
依赖:PyMuPDF(pip install pymupdf) # -*- coding: utf-8 -*- """ 1.安装库 pip install pymupdf ...
- 用Python实现大文件分割
python代码如下: import sys,os kilobytes = 1024 megabytes = kilobytes*1000 chunksize = int(200*megabytes) ...
随机推荐
- node-sass 安装失败 win32-x64-57_binding.node
安装npm install环境的时候我遇到一个问题就是 缺少node-sass文件 用这行命令: node -p "[process.platform, process.arch, pro ...
- grep命令和tail命令
写在前面的话: 最近参与了新项目开发,周期短,与自己负责的主要业务对接.业务复杂,时常出现bug,然额对于菜鸟的我,更是无从下手.其实最好的帮助就是 学会查看日志,关键是之前查看日志真是太少了,菜鸟一 ...
- nodejs本版问题
接到一个新项目,前端用的是VUE,这就需要安装nodejs.记得之前安装的是V6.X,在npm install加载依赖库node_modules的时候ant-design-vue总是报错.看到同事用n ...
- spring mvc路径匹配原则
Ant path 匹配原则 在Spring MVC中经常要用到拦截器,在配置需要要拦截的路径时经常用到<mvc:mapping/>子标签,其有一个path属性,它就是用来指定需要拦截的路径 ...
- python programming作业10(仍有一点点小bug)
# -*- coding: utf-8 -*- import os import platform import sys from PyQt5.QtCore import * from PyQt5.Q ...
- 奶牛渡河(dp)
奶牛渡河 时间限制: 1 Sec 内存限制: 128 MB提交: 36 解决: 27[提交][状态][讨论版][命题人:外部导入][Edit] [TestData] [同步数据] 题目描述 Far ...
- ANSI C遍历二维数组指针地址
#include <stdio.h> int main() { ][] = {,,,}; //等价于{{1,2},{3,4}}; ; i < ; i++) { ; j < ; ...
- MySQL乱码的原因和设置UTF8数据格式
https://segmentfault.com/a/1190000018662023 MySQL使用时,有一件很痛苦的事情肯定是结果乱码.将编码格式都设置为UTF8可以解决这个问题,我们今天来说下为 ...
- DESC加密解密算法
using System; using System.Text; using System.Windows.Forms; using System.Security.Cryptography; usi ...
- 乌班图18.04 LTS 版LAMP环境配置记录
-- 2018.06.07 -- liujunhang lamp 环境包括:Apache服务器.php.Mysql数据库,linux服务器架构在虚拟机中.Tip:在进行环境配置之前最好进行镜像存储.1 ...