Serviço para outros produtos (Documento no Brasil, CBRdoc, …) manipularem PDFs por HTTP. Tudo em /api/v1, autenticado por API key.
Cada serviço recebe uma chave. Envie no header:
Authorization: Bearer pdfi_live_xxxxxxxx...
Chaves são criadas pelo administrador (npm run apikey create "CBRdoc") e guardadas com hash — o valor em claro aparece uma única vez.
Todas as operações são POST multipart/form-data e respondem com o arquivo binário resultante. Exemplo (unir 2 PDFs):
curl -X POST https://SEU_HOST/api/v1/merge \ -H "Authorization: Bearer $PDFI_KEY" \ -F "files=@a.pdf" -F "files=@b.pdf" \ -o merged.pdf
Ou com o SDK:
import { PdfInteligente } from "@pdf-inteligente/sdk";
const client = new PdfInteligente({ apiKey: process.env.PDFI_KEY!, baseUrl: "https://SEU_HOST" });
const merged = await client.merge([a, b]); // Uint8Array
const filled = await client.edit(req, elements); // preencher requerimento
const clean = await client.redact(doc, rects); // remoção realSpec OpenAPI: /api/v1/openapi.json
A API síncrona do app tem limite de ~4,5 MB por requisição. Para arquivos grandes use o worker (sem limite) — mesmas operações e autenticação:
const client = new PdfInteligente({
apiKey: process.env.PDFI_KEY!,
baseUrl: "https://SEU_HOST", // app (síncrono, pequeno)
workerUrl: "https://SEU_WORKER", // worker (grande / assíncrono)
});
const out = await client.callLarge("compress", { file: [bigPdf] }, { level: "ebook" });Operações longas (OCR, arquivos grandes): submeta um job e acompanhe.
// submeter + aguardar (polling automático)
const pdf = await client.process("ocr", { file: [scan] }, { lang: "por" });
// ou com webhook
const { jobId } = await client.submit("ocr", { file: [scan] }, {}, {
webhookUrl: "https://seu-app/webhooks/pdfi",
});
// seu endpoint recebe POST { jobId, op, status, downloadUrl }
// com header X-PDFI-Signature (HMAC do corpo).O resultado fica em URL temporária assinada (TTL) e depois é apagado.
Embuta o editor (preencher / editar / censura) no seu produto. Comunicação por postMessage:
<iframe id="pdfi" src="https://SEU_HOST/embed/editor"
style="width:100%;height:80vh;border:0"></iframe>
<script>
const f = document.getElementById("pdfi");
addEventListener("message", (e) => {
if (e.data?.type === "pdfi:ready")
f.contentWindow.postMessage({ type: "pdfi:load", pdf: arrayBuffer, fileName: "req.pdf" }, "*");
if (e.data?.type === "pdfi:result")
new Blob([e.data.pdf], { type: "application/pdf" }); // PDF final
});
</script>| Endpoint | O que faz | Parâmetros | Onde |
|---|---|---|---|
| POST /api/v1/merge | Une vários PDFs em um, na ordem enviada. | files* (files) 2+ PDFs | servidor |
| POST /api/v1/split | Extrai páginas em um único PDF. | file* (file) PDF ranges (string) Intervalos, ex.: "1-3,7,10-12" pages (string) Páginas, ex.: "1,3,5" (1-based) | servidor |
| POST /api/v1/pages | Editor de páginas: remover, extrair, reordenar ou girar. | file* (file) PDF action* (string) remove | extract | reorder | rotate pages (string) 1-based; lista/permutação conforme a ação rotation (int) graus (rotate), múltiplo de 90 | servidor |
| POST /api/v1/edit | Carimba texto e tarjas visuais (preencher requerimento / editar). | file* (file) PDF elements* (json) Array de elementos (text/rect) com coords relativas 0..1. Ver docs. | servidor |
| POST /api/v1/redact | Remoção REAL: apaga o conteúdo sob as áreas (não recuperável). | file* (file) PDF rects* (json) Array {page,leftPct,topPct,widthPct,heightPct,color} | worker |
| POST /api/v1/office-to-pdf | Converte Office (docx/xlsx/pptx/odt…) em PDF. | file* (file) Arquivo Office ext* (string) Extensão, ex.: "docx" | worker |
| POST /api/v1/pdf-to-office | Converte PDF em Word/Excel. | file* (file) PDF target (string) docx (padrão) | xlsx | worker |
| POST /api/v1/image-to-pdf | Converte uma ou mais imagens em um PDF. | files* (files) Imagens (jpg/png) | worker |
| POST /api/v1/ocr | OCR: PDF escaneado → PDF/A pesquisável. | file* (file) PDF escaneado lang (string) Idioma Tesseract, padrão "por" | worker |
| POST /api/v1/compress | Comprime/otimiza o PDF. | file* (file) PDF level (string) screen | ebook (padrão) | printer | prepress | worker |
| POST /api/v1/unlock | Remove senha/restrições do PDF. | file* (file) PDF password (string) Senha (se houver) | worker |
| POST /api/v1/repair | Repara PDF corrompido. | file* (file) PDF | worker |
| POST /api/v1/heic-to-jpg | Converte foto HEIC em JPG. | file* (file) HEIC/HEIF | worker |
| POST /api/v1/heic-to-pdf | Converte uma ou mais fotos HEIC em um PDF. | files* (files) HEIC/HEIF | worker |
* obrigatório