Este projeto ainda está em andamento. Pode haver bugs e funcionalidades incompletas.
PDFTools é uma aplicação web feita com Flask
que permite manipular arquivos PDF diretamente no navegador, de forma simples, rápida e sem instalar programas pesados.
- 🔗 Juntar PDFs — Combine múltiplos arquivos PDF em um único documento.
- ✂️ Dividir PDFs — Separe páginas específicas de um PDF em arquivos individuais.
- 🔒 Proteger PDF com senha — Adicione senha para proteger documentos sensíveis.
- 🔓 Desbloquear PDF — Remova a senha de arquivos protegidos (quando permitido).
- 🌐 Converter HTML para PDF — Gere um PDF a partir de código ou páginas HTML.
- 🔁 Converter PDF para:
- 📄 Word (.docx)
- 📊 Excel (.xlsx)
- 📽️ PowerPoint (.pptx)
- 🧠 Aplicar OCR (Reconhecimento de Texto) — Torne PDFs escaneados pesquisáveis.
- 🖼️ Converter imagens para PDF — Transforme arquivos JPG/PNG em PDFs organizados.
- 💧 Adicionar Marca D'Água — Insira marcas d'água personalizadas em documentos PDF.
- 📉 Comprimir PDF — Reduza o tamanho do arquivo PDF mantendo a qualidade.
PDFTools/
├── app.py # Arquivo principal da aplicação Flask
├── app.wsgi # Script WSGI usado pelo servidor (ex: Apache + mod_wsgi)
├── requirements.txt # Arquivo com as dependências do projeto (pip install -r)
│
├── templates/ # Templates Jinja2 renderizados pelo Flask
│ ├── base.html # Template base (navbar, footer, etc.)
│ ├── index.html # Página inicial
│ ├── comprimido.html # Página de resultado para PDFs comprimidos
│ ├── desbloqueado.html # Resultado de PDFs desbloqueados
│ ├── download.html # Página de download de múltiplos arquivos
│ ├── download_unico.html # Página de download individual
│ ├── paginas_convertidas.html # Resultados de PDFs convertidos para imagens, etc.
│ ├── paginas_divididas.html # Resultado de divisão de PDF em páginas
│ ├── protegido.html # Resultado de PDFs protegidos
│
├── static/ # Arquivos estáticos (CSS, JS, imagens)
│ ├── css/
│ │ ├── style.css # Estilos principais globais
│ │
│ ├── js/
│ │ └── darkmode.js # Script para alternar entre modo claro e escuro
│ │
│ └── favicon/ # Ícones para aba do navegador (favicon.ico, etc.)
│
├── uploads/ # Pasta onde os arquivos enviados são armazenados temporariamente
├── results/ # Pasta com os arquivos gerados (PDFs comprimidos, convertidos, etc.)
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python app.py
Acesse em: http://localhost:5000
sudo apt update && sudo apt upgrade -y
sudo apt install apache2 libapache2-mod-wsgi-py3 python3-venv build-essential libffi-dev libpango-1.0-0 libcairo2 libgdk-pixbuf2.0-0 libxml2 libxslt1.1 tesseract-ocr poppler-utils libfreetype6-dev libjpeg-dev libgl1 ghostscript
cd /var/www/
sudo git clone https://github.com/soarespaullo/PDFTools.git
cd PDFTools
sudo python3 -m venv venv
source venv/bin/activate
sudo chown -R $USER:$USER /var/www/PDFTools/venv/
pip install -r requirements.txt
#!/usr/bin/python3
import sys
import logging
import os
# Caminho para o diretório do seu app
sys.path.insert(0, '/var/www/PDFTools')
# Configurar logging para erros
logging.basicConfig(stream=sys.stderr)
# Garante que a variável de ambiente do Flask está correta
os.environ['FLASK_ENV'] = 'production' # ou 'development' se estiver testando
# Importa o app Flask como "application" para o mod_wsgi
from app import app as application
Crie o arquivo sudo vim /etc/apache2/sites-available/PDFTools.conf
<VirtualHost *:80>
ServerName localhost
WSGIDaemonProcess PDFTools python-home=/var/www/PDFTools/venv python-path=/var/www/PDFTools
WSGIProcessGroup PDFTools
WSGIScriptAlias / /var/www/PDFTools/app.wsgi
<Directory /var/www/PDFTools>
Require all granted
</Directory>
Alias /static /var/www/PDFTools/static
<Directory /var/www/PDFTools/static/>
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/PDFTools_error.log
CustomLog ${APACHE_LOG_DIR}/PDFTools_access.log combined
</VirtualHost>
sudo a2ensite PDFTools
sudo a2dissite 000-default.conf
sudo systemctl reload apache2
sudo mkdir -p /var/www/PDFTools/{uploads,results}
sudo chown -R www-data:www-data /var/www/PDFTools/uploads /var/www/PDFTools/results
sudo chmod -R 755 /var/www/PDFTools
- Nunca use
debug=True
em produção. - Use HTTPS (Let’s Encrypt).
- Valide tipos de arquivo e tamanho.
- Gere
SECRET_KEY
real noapp.secret_key
.
Flask
PyMuPDF
pdf2docx
PyPDF2
python-pptx
Pillow
weasyprint
pdfplumber
pandas
openpyxl
pdf2image
pytesseract
reportlab
fpdf
beautifulsoup4
bleach
Este projeto é licenciado sob a licença MIT
. Veja o arquivo LICENSE para mais detalhes.
Feito com ❤️ por Paulo Soares – Pull Requests
são bem-vindos!
-
💬 @soarespaullo no Telegram
-
💻 GitHub
-
🐞 NotABug
- Recurso: Combine múltiplos PDFs em um único documento.
- Tecnologias: Python (PyPDF2, pdfrw), JavaScript (PDF-lib, pdf.js).
- Referência: PyPDF2 Documentation, PDF-lib GitHub
- Recurso: Separe páginas específicas de um PDF em arquivos individuais.
- Tecnologias: Python (PyPDF2, pikepdf), JavaScript (PDF-lib).
- Referência: pikepdf Documentation, PDF-lib GitHub
- Recurso: Adicione senha para proteger documentos sensíveis.
- Tecnologias: Python (PyPDF2), JavaScript (PDF-lib).
- Referência: PyPDF2 - Encrypt PDF, PDF-lib GitHub
- Recurso: Remova a senha de arquivos protegidos (quando permitido).
- Tecnologias: Python (PyPDF2), JavaScript (pdf.js).
- Referência: PyPDF2 Decrypt PDF, pdf.js GitHub
- Recurso: Gere um PDF a partir de código HTML ou páginas web.
- Tecnologias: Python (pdfkit, weasyprint), JavaScript (Puppeteer).
- Referência: WeasyPrint Documentation, pdfkit Documentation
- Recurso: Converta arquivos PDF para outros formatos como Word, Excel e PowerPoint.
- Tecnologias: Python (pdf2docx, xlwings), JavaScript (pdf-lib).
- Referência: pdf2docx GitHub, xlwings Documentation
- Recurso: Torne PDFs escaneados pesquisáveis.
- Tecnologias: Python (Tesseract, pytesseract), JavaScript (OCR.js).
- Referência: Tesseract OCR Documentation, OCR.js GitHub
- Recurso: Transforme arquivos JPG/PNG em PDFs organizados.
- Tecnologias: Python (Pillow, FPDF), JavaScript (jsPDF).
- Referência: Pillow Documentation, jsPDF GitHub
- Recurso: Insira marcas d'água personalizadas em documentos PDF.
- Tecnologias: Python (PyPDF2, reportlab), JavaScript (PDF-lib).
- Referência: PyPDF2 - Add Watermark, PDF-lib GitHub
- Recurso: Reduza o tamanho do arquivo PDF mantendo a qualidade.
- Tecnologias: Python (pikepdf, PyPDF2), JavaScript (pdf-lib).
- Referência: pikepdf Documentation, PyPDF2 Compress PDF