← Voltar ao site

API de Manipulação de PDF

Serviço para outros produtos (Documento no Brasil, CBRdoc, …) manipularem PDFs por HTTP. Tudo em /api/v1, autenticado por API key.

Autenticação

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.

Como chamar

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 real

Spec OpenAPI: /api/v1/openapi.json

Arquivos grandes

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" });

Assíncrono e webhooks

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.

Editor embutível (iframe)

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>

Operações

EndpointO que fazParâmetrosOnde
POST /api/v1/mergeUne vários PDFs em um, na ordem enviada.
files* (files) 2+ PDFs
servidor
POST /api/v1/splitExtrai 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/pagesEditor 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/editCarimba 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/redactRemoçã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-pdfConverte Office (docx/xlsx/pptx/odt…) em PDF.
file* (file) Arquivo Office
ext* (string) Extensão, ex.: "docx"
worker
POST /api/v1/pdf-to-officeConverte PDF em Word/Excel.
file* (file) PDF
target (string) docx (padrão) | xlsx
worker
POST /api/v1/image-to-pdfConverte uma ou mais imagens em um PDF.
files* (files) Imagens (jpg/png)
worker
POST /api/v1/ocrOCR: PDF escaneado → PDF/A pesquisável.
file* (file) PDF escaneado
lang (string) Idioma Tesseract, padrão "por"
worker
POST /api/v1/compressComprime/otimiza o PDF.
file* (file) PDF
level (string) screen | ebook (padrão) | printer | prepress
worker
POST /api/v1/unlockRemove senha/restrições do PDF.
file* (file) PDF
password (string) Senha (se houver)
worker
POST /api/v1/repairRepara PDF corrompido.
file* (file) PDF
worker
POST /api/v1/heic-to-jpgConverte foto HEIC em JPG.
file* (file) HEIC/HEIF
worker
POST /api/v1/heic-to-pdfConverte uma ou mais fotos HEIC em um PDF.
files* (files) HEIC/HEIF
worker

* obrigatório