Files
pdf-toolkit/docs/API.md
CM Consultor 84d4a1eab5 feat: initial release — pdf-toolkit v1.0.0
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)
2026-08-09 02:15:22 +00:00

3.8 KiB

API do pdf-toolkit

Documentação interativa disponível em:


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