吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2695|回复: 9
收起左侧

[Python 转载] 简单PDF分割小脚本

[复制链接]
NoNone 发表于 2021-1-22 16:32
站里大佬写好的程序自己的环境运行不了,所以就用python写了个简单的小黑框脚本

import sys
import os
from PyPDF2 import PdfFileReader,PdfFileWriter

def shuzhu(path,name,nums): #使用分割点页码进行分割
    for j in range(0,len(nums)-1,1):
        begin = int(nums[j])-1
        end = int(nums[j+1])-1
        splite(path,name,begin,end)

def configs(path,name,nums): #使用配置文件进行分割
    for num in nums:
        begin = int(num.split('-')[0])-1
        end = int(num.split('-')[1])
        if begin > end:
            z = begin
            begin = end
            end = z
        splite(path,name,begin,end)

def split_arv(path,name,num):  #使用固定页数进行分割
    long = path.getNumPages()
    for i in range(0,long,num):
        bengin = i
        end = i+num
        if end > long:
            end = long
        splite(path,name,bengin,end)

def splite(path,name,begin,end):#分割函数
    pdf_writer = PdfFileWriter()
    print("程序开始分割{}到{}".format(begin+1, end))
    output = f'./{name}/{name}-{begin+1}-{end}.pdf'
    for i in range(int(begin), int(end)):
        page1 = path.getPage(i)
        pdf_writer.addPage(page1)
    with open(output, 'wb') as output_pdf:
        pdf_writer.write(output_pdf)
    print("程序分割完成{}到{}".format(begin+1, end))

if __name__=='__main__':
    filename = sys.argv[1]
    named=filename.split('.')[0]
    os.mkdir(named)
    read = open(filename,'rb')
    pdffile = PdfFileReader(read)

    if sys.argv[2] == '-f' :  # 使用配置文件configs 进行分割
        config = sys.argv[3]
        split_nums = []
        with open(config, 'r') as config_txt:
            text_split = config_txt.readlines()
            for text in text_split:
                text=text.strip()
                split_nums.append(text)
        print("准备开始使用配置文件进行分割")
        configs(pdffile, named, split_nums)

    elif sys.argv[2] == '-i':  #使用固定间距进行分割
        split_num = sys.argv[3]
        print("准备开始使用固定间距进行分割")
        split_arv(pdffile, named, int(split_num))

    elif sys.argv[2] == '-s':
        split_nums = []
        txt = sys.argv[3]
        txt_num = txt.split(',')
        print("准备开始使用分割点进行分割")
        shuzhu(pdffile,named,txt_num)

    else:
        print("===========PDF_splite===========")
        print("请输入合适得参数")
        print("-f filename  使用配置文件进行分割")
        print("-i num       使用固定间距进行分割")
        print("-s n1,n2,n3  使用分割点进行分割")
        print("==========by_liushui============")
    read.close()

使用方法:
使用方法
1、使用配置文件进行分割
        eg:
        python pdf_splite.py  pdf_name.pdf -f conf_name.txt
2、使用固定页数进行分割
        eg:
        python pdf_splite.py pdf_name.pdf -i conf_name.txt
3、使用指定分割点进行分割
        eg:
        python pdf_splite.py pdf_name.pdf -s 1,5,10,15,30
注意
1、配置文件内容需使用指定格式,如下:
1-5
10-15
20-30
2、使用指定分割点分割,必须以1开头,以总页数量结尾
3、文件夹下不能有与PDF同名文件夹

使用

使用

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

FANGWJ 发表于 2021-1-22 16:56
进来学习一下
hfxiang 发表于 2021-1-22 17:00
用作学习python就还行,只能等分,其实用性不高
是星星呀 发表于 2021-1-22 17:06
 楼主| NoNone 发表于 2021-1-22 17:27
hfxiang 发表于 2021-1-22 17:00
用作学习python就还行,只能等分,其实用性不高

使用配置文件(-f)和分割点分割(-s)不是等分哦,可以自己定义的。示例里随手输入数字是顺手啦
sd952202 发表于 2021-1-22 17:40
谢谢分享,这个可以用在分享部分文件上
wxbb979 发表于 2021-1-22 17:51
前来学习 感谢分享
penghjfy 发表于 2021-1-22 17:58
谢谢分享
whaiyang 发表于 2021-1-22 19:02
谢谢分享,看看看看
cfanlane 发表于 2021-1-22 19:53
好东西,,漂亮
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 20:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表