Guia do produto e da API

Recursos

Enviar um recurso

Logotipos, assinaturas e fontes são enviados uma vez e depois referenciados por ID. A solicitação é multipart; o arquivo vai em um campo chamado file, e altText é opcional.

Solicitação
curl -X POST https://api.pdfgine.com/api/v1/assets \
  -H "X-PDFgine-Key: $PDFGINE_KEY" \
  -F "file=@logo.png" \
  -F "altText=Logotipo da empresa"
HTTP 201
{
  "assetId": "ast_985f87e2b22d486db2d6d8bacd29288e",
  "fileName": "logo.png",
  "contentType": "image/png",
  "length": 20184,
  "altText": "Logotipo da empresa",
  "createdAt": "2026-09-26T15:29:44.8420041+00:00",
  "expiresAt": null,
  "fontEmbedding": null
}

O tipo é lido pelos primeiros bytes do arquivo, não pelo Content-Type enviado: um .png que na verdade é PDF é recusado. PNG, JPEG, WebP, TTF e OTF são aceitos, até 10 MB por arquivo.

Usar em um documento

Envie o ID onde o modelo espera uma imagem. O mesmo campo também aceita uma URI data:, mas um recurso enviado ocupa menos na transmissão e pode ser reutilizado.

Solicitação
curl -X POST https://api.pdfgine.com/api/v1/render \
  -H "X-PDFgine-Key: $PDFGINE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "templateCode": "invoice",
        "format": "pdf",
        "data": { "logo": "ast_985f87e2b22d486db2d6d8bacd29288e" }
      }'

Recursos temporários, listagem e exclusão

Uma imagem necessária para um único documento não precisa ser removida manualmente: defina expiresInMinutes entre 1 e 10080 (sete dias), e o recurso se removerá automaticamente.

Solicitação
curl -X POST https://api.pdfgine.com/api/v1/assets \
  -H "X-PDFgine-Key: $PDFGINE_KEY" \
  -F "file=@signature.png" \
  -F "expiresInMinutes=60"

# Listagem, conteúdo de um recurso e exclusão
curl https://api.pdfgine.com/api/v1/assets -H "X-PDFgine-Key: $PDFGINE_KEY"
curl https://api.pdfgine.com/api/v1/assets/ast_985f87e2b22d486db2d6d8bacd29288e/content \
  -H "X-PDFgine-Key: $PDFGINE_KEY" -o logo.png
curl -X DELETE https://api.pdfgine.com/api/v1/assets/ast_985f87e2b22d486db2d6d8bacd29288e \
  -H "X-PDFgine-Key: $PDFGINE_KEY"

Fontes e permissões de incorporação

O arquivo da fonte declara em seus bits fsType o que um documento pode fazer com ela. O PDFgine lê isso no envio e responde com fontEmbedding, para você saber antes de produzir o documento, não depois de abri-lo.

fontEmbedding O que o documento pode fazer
installableSem restrições; incorporada em PDF e Word.
editableIncorporada em PDF e Word.
preview-printIncorporada no PDF. Não incorporada no Word, porque um documento Word pode ser editado; o Word substitui a fonte.
restrictedNão incorporada em nenhum formato. O documento ainda é produzido e usa a fonte do próprio leitor.
bitmap-onlyApenas a incorporação bitmap é permitida, o que um documento não pode usar. Não incorporada.
unstatedO arquivo não declara permissão. É tratado como incorporável, conforme exige a especificação OpenType.

WOFF e WOFF2 são recusados no envio. Eles não podem ser incorporados em um documento Word; o mesmo modelo ficaria correto em PDF e incorreto no Word, uma diferença que você só perceberia depois de enviar o documento.

Fontes integradas

Estas famílias acompanham o produto; use-as pelo nome em style.fontFamily e page.defaultFont. A mesma fonte é usada no PDF, no Word e no editor. Um peso ausente não é recusado; a fonte mais próxima é usada.

Família Grupo Pesos Sistemas de escrita
Inter sans 100, 200, 300, 400, 500, 600, 700, 800, 900 latin, latin-ext, greek, cyrillic, vietnamese
Roboto sans 100, 200, 300, 400, 500, 600, 700, 800, 900 latin, latin-ext, greek, cyrillic, vietnamese
Montserrat sans 100, 200, 300, 400, 500, 600, 700, 800, 900 latin, latin-ext, cyrillic, vietnamese
Poppins sans 100, 200, 300, 400, 500, 600, 700, 800, 900 latin
DM Sans sans 100, 200, 300, 400, 500, 600, 700, 800, 900 latin
Nunito sans 200, 300, 400, 500, 600, 700, 800, 900 latin, cyrillic, vietnamese
Manrope sans 200, 300, 400, 500, 600, 700, 800 latin, greek, cyrillic, vietnamese
Noto Sans sans 100, 200, 300, 400, 500, 600, 700, 800, 900 latin, latin-ext, greek, cyrillic, vietnamese
Plus Jakarta Sans sans 200, 300, 400, 500, 600, 700, 800 latin, vietnamese
Work Sans sans 100, 200, 300, 400, 500, 600, 700, 800, 900 latin, latin-ext, vietnamese
Roboto Condensed condensed 100, 200, 300, 400, 500, 600, 700, 800, 900 latin, latin-ext, greek, cyrillic, vietnamese
Oswald condensed 200, 300, 400, 500, 600, 700 latin, latin-ext, cyrillic, vietnamese
Noto Serif serif 100, 200, 300, 400, 500, 600, 700, 800, 900 latin, latin-ext, greek, cyrillic, vietnamese
EB Garamond serif 400, 500, 600, 700, 800 latin, latin-ext, greek, cyrillic, vietnamese
Newsreader serif 200, 300, 400, 500, 600, 700, 800 latin, vietnamese
Literata serif 200, 300, 400, 500, 600, 700, 800, 900 latin, greek, cyrillic, vietnamese
Tinos serif 400, 700 latin, latin-ext, greek, cyrillic, vietnamese
Rokkitt serif 100, 200, 300, 400, 500, 600, 700, 800, 900 latin, vietnamese
Inconsolata mono 200, 300, 400, 500, 600, 700, 800, 900 latin, vietnamese
Noto Sans Mono mono 100, 200, 300, 400, 500, 600, 700, 800, 900 latin, latin-ext, greek, cyrillic, vietnamese
Arial system 400, 700
Georgia system 400, 700

Quando um envio é recusado

Cada recusa retorna 400 com o motivo em errors.file. Mostre essa frase à pessoa que envia o arquivo; ela já indica o que fazer.

HTTP 400
{
  "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": {
    "file": ["Envie uma fonte TTF ou OTF para que a saída Word possa usá-la. Arquivos WOFF e WOFF2 não podem ser incorporados em um documento Word."]
  },
  "correlationId": "505aac87e234a7b4669e6203ac7ffcd5"
}
Erros →

Os problemas mais comuns

  • O tipo é lido pelos primeiros bytes, não pelo nome. Renomear um PDF para .png não o transforma em imagem; o envio é recusado.
  • WOFF e WOFF2 são recusados de propósito. Não podem ser incorporados no Word e o mesmo modelo ficaria correto em PDF e incorreto no Word; envie TTF ou OTF.
  • O envio retorna fontEmbedding. Ignorá-lo significa descobrir a substituição da fonte depois que o documento já foi enviado.
  • Uma URI data: acompanha cada solicitação. Para um logotipo presente em todos os documentos, envie uma vez e informe o ID.
  • Uma imagem necessária para um documento não exige limpeza manual. Informe expiresInMinutes e ela será removida automaticamente.