#!/usr/bin/env python#-*- coding: utf-8 -*-#Frederico Winter#importações de módulosimport sys, os, tempfilefrom pdfrw import PdfReader, PdfWriter#função de usodef uso():print("""fwDividePDF - Divide PDFs para o tamanho do PJe-JTAutor: Frederico WinterUso: %s <ArquivoPDF>""" % sys.argv[0])#função de preparar o PDFdef preparapdf(arq, p):global pags, parte, destino, tempwhile p < pags:if checatam(temp, arq, p):if p != pags - 1:temp.addpage(arq[p])destino = tempb.progresso(p, pags - 1)p += 1preparapdf(arq, p)breakelse:destino.addpage(arq[p])gravapdf(destino)b.progresso(p, pags - 1)os.remove(tempfile.gettempdir() + os.sep + r'fwDividePDF.pdf')p += 1breakelse:gravapdf(destino)destino = PdfWriter()temp = PdfWriter()b.progresso(p, pags - 1)p += 1preparapdf(arq, p)break#função que verifica o tamanhodef checatam(t, arq, p):limite = 1400000t.addpage(arq[p])nome = tempfile.gettempdir() + os.sep + r'fwDividePDF.pdf't.write(nome)if os.path.getsize(nome) < limite:os.remove(tempfile.gettempdir() + os.sep + r'fwDividePDF.pdf')return Trueelse:os.remove(tempfile.gettempdir() + os.sep + r'fwDividePDF.pdf')return False#função de gravar a parte do PDFdef gravapdf(arq):global partenome = os.path.basename(sys.argv[1])[:-4] + ' - Parte %d.pdf' % partearq.write(nome)parte += 1#barra de progressoclass BarraProgresso:def __init__(self):self.porcentagem = 0self.tamanho = 20self.espaco = ' ' * self.tamanhodef cria(self):sys.stdout.write("\rProgresso: [{0}] {1}%".format(self.espaco, self.porcentagem))sys.stdout.flush()def progresso(self, i, progresso):porcentagem = float(i) / progressosimbolos = '#' * int(round(porcentagem * self.tamanho))espacos = ' ' * (self.tamanho - len(simbolos))sys.stdout.write("\rProgresso: [{0}] {1}%".format(simbolos + espacos, int(round(porcentagem * 100))))sys.stdout.flush()if i == progresso:#definições de variáveis e início do programaarquivo = PdfReader(sys.argv[1])pags = len(arquivo.pages)parte = 1destino = PdfWriter()temp = PdfWriter()b = BarraProgresso()uso()if len(sys.argv) != 2:print('[!] ERRO: parâmetros incorretos!')elif os.path.getsize(sys.argv[1]) < 1500000:print('O arquivo já é menor do que 1,5mb.')else:b.cria()preparapdf(arquivo.pages, 0)