Skip to content

JoaoPedro8807/aspose-compress-pdf

Repository files navigation

Projeto de Compressão de PDF

Projeto para compressão de arquivos PDF, visando reduzir o tamanho dos arquivos sem comprometer a qualidade do conteúdo. O objetivo é comprimir de maneira profunda, rápida e gratuita. Muitos compressores não conseguem comprimir arquivos pequenos para menos de 100/200 kbs, e os que conseguem, são pagos. Então resolvi fazer esse projeto utilizando Aspose

Funcionalidades

  • Compressão de arquivos PDF.
  • Opções de configuração para diferentes níveis de compressão.
  • Suporte a multiplas compressões de uma vez. (o que em muitos compressores essa funcionalidade é paga)

Tecnologias Utilizadas

  • Python
  • Bibliotecas:
    • Aspose Manipulação de páginas e imagens do pdf.

    • Pytest Testes funcionais com pytest.

Pré-requisitos

Antes de começar, você precisará ter o Python instalado em sua máquina. Você pode baixá-lo aqui.

Instalação das Dependências

Clone este repositório e instale as dependências necessárias:

git clone https://github.com/seu_usuario/seu_repositorio.git
cd compress-pdf
pip install -r requirements.txt

Após instalar as dependecias, você pode já pode começar a comprimir seus pdfs, para isso siga os exemplos abaixo:

from .main import PDFCompression
from pathlib import Path

my_path = Path(__file__).parent.joinpath('pdfs')
my_file = my_path / 'pdf-teste.pdf'

with PDFCompression() as compressor:
    compressor.build(  #make compress with params
        file=my_file,
        quality=30,
        name='my-file-otmized',
        dir_to_save=my_path / 'results',
        max_width=1500, 
        max_heigth=1500
    )
    print(compressor.get_compartives) # get comparatives params

Com o compressor instanciado, você pode passar:

  • o arquivo e a qualidade das imagens da página do pdf (de 1 a 100)
  • o nome e o diretório em que será salvo.
  • e setar um máximo de largura e altura das imagens.

Ouput do build:

Output do build

PDF original antes:

resultado do build

PDF depois:

resultado completo

Para fazer o build de arquivos em fila (de uma só vez), a lógica é a mesma, basta usar o método build_all e passar o diretório onde se encontra os arquivos. Não se preocupe, o compressor irá pegar apenas os arquivos pdf.

with PDFCompression() as compressor:
    compressor.build_all(  #build_all take all pdf files
        files_dir=my_path,
        quality_per_image=30,
        dir_to_save=my_path / 'results',
        max_width=1500, 
        max_heigth=1500
    )
    print(compressor.get_compartives) # get comparatives params

pdfs originais

com o build all, o compressor pega os 3 pdfs e salva em /results também.

pdfs originais

Por enquanto ainda não vou publicar como pacote, porém ainda vou fazer um app web que possa servir o builder para comprimir vários pdfs em filas e de graça, diferentemente dos outros como Adobe, Smallpdf que além de não conseguir comprimir para tamanho abaixo de 200/100 kb, são pagos e ainda é necessário comprimir 1 por vez.

About

compress length and quality of a pdf file

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages