Wymored Login

script para reduzir o tamanho de arquivos pdf de uma pasta

15 de fevereiro de 2019 por Alexandre Miguel de Andrade Souza

O script usa o comando gs e foi testado apenas no linux (Ubuntu 18.04)

1) crie um arquivo comprimirpdf.py na pasta acima do diretório com os arquivos pdf

2) cole o código abaixo:

#convertepdf

import argparse

parser = argparse.ArgumentParser(description='Reduz o tamanho dos pdfs de uma pasta')
parser.add_argument('pasta', metavar='p', help='pasta de origem dos pdfs')
args = parser.parse_args()

import os

here = os.path.dirname(os.path.abspath(__file__))
origem = os.path.join(here,args.pasta)
saida = os.path.join(here,'saidapdf')
import shutil
shutil.rmtree(saida)
os.mkdir(saida)
destino = os.path.join(here,'saidapdf')
n = sum([len(files) for r, d, files in os.walk(origem)])
d = sum([len(d) for r, d, files in os.walk(origem)])
print('{} files in {} and subdirectories'.format(n, origem))
print('{} directories  in {} and subdirectories'.format(d,origem))
print(os.system('du -hs '+origem))

for r, d, files in os.walk(origem):
    for f in files: 
        path = os.path.join(r,f)
        rpath = r.replace(args.pasta, 'saidapdf/')
        compressed = rpath+'/'+f

        print(r, rpath)

        if not os.path.isdir(rpath):
            os.makedirs(rpath)
        print(path)
        os.system('gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -sOutputFile={} {}'.format(compressed, path))
        print(compressed)

3) Ajuste a qualidade de compressão (/screen, /ebook, /print) na penúltima linha de código acima

4) chame o script na linha de comando:

python comprimirpdf.py pastapdf

5) o script criará uma pasta saidapdf, e subpastas correspondentes se houver com os arquivos pdf comprimidos.