Core operations: - Compress PDF (3 presets: screen, ebook, printer, prepress) - PDF/A detection and conversion to regular PDF - Compress while preserving PDF/A structure - Merge multiple PDFs - Split/extract pages by range - Rotate pages - Extract text and images Interface: - Streamlit web GUI (app.py) - FastAPI REST API with auto OpenAPI docs (api.py) Docs: - README.md, ARCHITECTURE.md, API.md - Unit tests (15/15 passing)
3.8 KiB
API do pdf-toolkit
Documentação interativa disponível em:
- Swagger UI: http://localhost:8555/docs
- Redoc: http://localhost:8555/redoc
Base URL
http://localhost:8555
Endpoints
GET /
Raiz informativa.
Resposta:
{
"app": "pdf-toolkit API",
"version": "1.0.0",
"docs": "/docs",
"redoc": "/redoc"
}
GET /health
Health check.
Resposta:
{"status": "ok", "version": "1.0.0"}
POST /inspect
Inspeciona metadados de um PDF.
Parâmetros:
| Nome | Tipo | Obrigatório |
|---|---|---|
file |
arquivo PDF | ✅ |
Resposta:
{
"valid": true,
"pages": 42,
"error": "",
"is_pdfa": false,
"file_size_mb": 2.34,
"filename": "relatorio.pdf",
"level": null,
"method": "none",
"confidence": 0.0
}
POST /compress
Comprime um PDF re-amostrando imagens.
Parâmetros:
| Nome | Tipo | Padrão | Obrigatório |
|---|---|---|---|
file |
arquivo | — | ✅ |
preset |
string | "ebook" |
❌ |
Presets válidos: screen, ebook, printer, prepress
Resposta: PDF comprimido (download)
POST /pdfa-to-regular
Remove restrições PDF/A gerando PDF comum.
Parâmetros:
| Nome | Tipo | Obrigatório |
|---|---|---|
file |
arquivo PDF | ✅ |
Resposta: PDF comum (download)
POST /compress-pdfa
Comprime imagens mantendo a estrutura PDF/A.
Parâmetros:
| Nome | Tipo | Padrão | Obrigatório |
|---|---|---|---|
file |
arquivo | — | ✅ |
quality |
int (10-100) | 60 | ❌ |
Resposta: PDF otimizado (download)
POST /merge
Junta múltiplos PDFs em um único arquivo.
Parâmetros:
| Nome | Tipo | Obrigatório |
|---|---|---|
files |
lista de arquivos | ✅ (mín: 2) |
Resposta: PDF mesclado (download)
POST /split
Divide um PDF em múltiplos arquivos por intervalos de páginas.
Parâmetros:
| Nome | Tipo | Obrigatório |
|---|---|---|
file |
arquivo PDF | ✅ |
ranges |
string | ✅ |
Exemplo de ranges: "1-3,5,7-9" (1-indexado)
Resposta: ZIP com os PDFs extraídos
POST /extract-pages
Extrai páginas específicas em ordem para um único PDF.
Parâmetros:
| Nome | Tipo | Obrigatório |
|---|---|---|
file |
arquivo PDF | ✅ |
pages |
string | ✅ |
Exemplo de pages: "1,3,5" (1-indexado)
Resposta: PDF com as páginas selecionadas (download)
POST /rotate
Rotaciona páginas de um PDF.
Parâmetros:
| Nome | Tipo | Padrão | Obrigatório |
|---|---|---|---|
file |
arquivo | — | ✅ |
pages |
string | — | ✅ |
angle |
int | 90 | ❌ |
Exemplo de pages: "1,3,5" ou "todas"
Resposta: PDF rotacionado (download)
POST /extract-text
Extrai texto de todas as páginas do PDF.
Parâmetros:
| Nome | Tipo | Obrigatório |
|---|---|---|
file |
arquivo PDF | ✅ |
Resposta: arquivo .txt (download)
POST /extract-images
Extrai todas as imagens embutidas no PDF.
Parâmetros:
| Nome | Tipo | Obrigatório |
|---|---|---|
file |
arquivo PDF | ✅ |
Resposta: ZIP com as imagens extraídas
Exemplos com curl
Comprimir
curl -X POST http://localhost:8555/compress \
-F "file=@documento.pdf" \
-F "preset=ebook" \
-o comprimido.pdf
Merge
curl -X POST http://localhost:8555/merge \
-F "files=@parte1.pdf" \
-F "files=@parte2.pdf" \
-o merged.pdf
Split
curl -X POST http://localhost:8555/split \
-F "file=@documento.pdf" \
-F "ranges=1-3,5,7-9" \
-o split.zip
Inspect
curl -s -X POST http://localhost:8555/inspect \
-F "file=@documento.pdf" | jq .
Extract text
curl -X POST http://localhost:8555/extract-text \
-F "file=@documento.pdf" \
-o texto.txt