NoNone 发表于 2021-1-22 16:32

简单PDF分割小脚本

站里大佬写好的程序自己的环境运行不了,所以就用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)-1
      end = int(nums)-1
      splite(path,name,begin,end)


def configs(path,name,nums): #使用配置文件进行分割
    for num in nums:
      begin = int(num.split('-'))-1
      end = int(num.split('-'))
      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
    named=filename.split('.')
    os.mkdir(named)
    read = open(filename,'rb')
    pdffile = PdfFileReader(read)

    if sys.argv == '-f' :# 使用配置文件configs 进行分割
      config = sys.argv
      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 == '-i':#使用固定间距进行分割
      split_num = sys.argv
      print("准备开始使用固定间距进行分割")
      split_arv(pdffile, named, int(split_num))

    elif sys.argv == '-s':
      split_nums = []
      txt = sys.argv
      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.pypdf_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

进来学习一下{:301_998:}

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)不是等分哦,可以自己定义的。示例里随手输入数字是顺手啦:lol

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

好东西,,漂亮
页: [1]
查看完整版本: 简单PDF分割小脚本