Guia do produto e da API

Formatos de dados

Aqui você encontra o formato em que seus dados devem chegar. O PDFgine não imprime o valor enviado como está; aplica o formatador declarado pelo modelo, no idioma do documento.

Em uma frase: os dados chegam brutos e o PDFgine os formata. Envie um valor pré-formatado e o documento será lido corretamente em um idioma e incorretamente no outro.

Tipo de campo Como enviar Entrada de exemplo Saída
date ISO 8601. YYYY-MM-DD para uma data simples e um timestamp completo quando a hora importar. Não converta para um formato local. "2026-09-06" 06/09/2026
number Um número JSON. Sem separadores de milhares, espaços ou aspas; o separador decimal é um ponto. 24000 24.000,00
currency Envie o valor como um número bruto. A moeda não faz parte dele; ela fica no formatador da coluna como um código ISO 4217. 24000 24.000,00 USD
percent Uma proporção sobre cem, bruta: envie 18 para 18%. O documento adiciona o símbolo. 18 18,00%
string Impresso como recebido. Não envie uma data, um valor ou uma proporção como string; a formatação será perdida. "Northwind Trading Ltd." Northwind Trading Ltd.
boolean JSON true/false. É isso que os blocos condicionais leem. true Controla a condição; nunca é impresso como texto

Um formatador é declarado em três lugares: no campo "format" de uma coluna de tabela e de uma linha de resumo, em "dataRules.formatter" de um elemento que imprime um único valor e nas funções format_date e format_money em textos que combinam vários campos.

Dados e modelo
{
  "issueDate": "2026-09-06",
  "currency": "USD",
  "lineItems": [
    { "name": "Site corporativo", "quantity": 1, "unitPrice": 24000, "total": 24000 }
  ]
}

// No modelo:
// coluna da tabela:   "format": { "kind": "currency", "currency": "USD", "decimals": 2 }
// coluna de data:    "format": { "kind": "date", "dateStyle": "short" }
// elemento de texto:   "{{ referenceNo }} · {{ format_date issueDate }}"

IBAN, telefone e números fiscais também chegam em formato canônico: IBAN sem espaços, telefone em E.164 (+442071838750). O agrupamento é um formato de apresentação e não faz parte dos dados.

O nome com que o documento é recebido

Um documento baixado recebe o nome "{document type} - {counterparty} - {reference no}". As três partes vêm dos dados enviados: document.title, customer e referenceNo. O que estiver ausente é omitido e, se nenhuma parte gerar um nome utilizável, o documento usa sua identidade, por exemplo quote-doc_94812af2.pdf.

Cabeçalho da resposta
Content-Disposition: attachment;
  filename="Quote - Müller og Søn ApS - QUO-2026-0042.pdf";
  filename*=UTF-8''Quote%20-%20M%C3%BCller%20og%20S%C3%B8n%20ApS%20-%20QUO-2026-0042.pdf

O nome é escrito duas vezes no mesmo cabeçalho. O campo estendido preserva o idioma do documento; o clássico contém uma escrita ASCII legível para clientes que não leem o estendido. Os caracteres não aceitos por sistemas de arquivos (barra, barra invertida, dois-pontos, asterisco, interrogação, aspas, menor que, maior que, barra vertical) são removidos junto com os caracteres de controle, e o nome tem tamanho limitado para funcionar em todos os sistemas de arquivos.

Imagens

Um elemento de imagem do modelo pode ser vinculado a um campo de dados, recebendo a origem na solicitação. São aceitos o ID de um recurso enviado (ast_…, para logotipos, carimbos e assinaturas recorrentes: envio único, só o ID é transmitido) e uma imagem inline (data:image/png;base64,…, para uso único). Se o campo estiver ausente ou vazio, usa-se a imagem do modelo; se houver um valor inválido, a solicitação é rejeitada com 422 e a resposta indica o campo.

Solicitação
{
  "templateCode": "invoice",
  "format": "pdf",
  "data": {
    "logo": "ast_9f1c7b1f0f6b4f5f9f0a0d1e2c3b4a59",
    "signature": "data:image/png;base64,iVBORw0KGgo..."
  }
}

Limites: uma imagem inline deve ser PNG, JPEG ou WebP, com no máximo 2 MB por imagem e 6 MB para todas as imagens do documento. Um recurso enviado pode ter até 10 MB. Para imagens temporárias, informe expiresInMinutes no envio (1 minuto–7 dias); recursos expirados são excluídos automaticamente.

Recursos

Logotipos, assinaturas e fontes são enviados uma vez e referenciados por ID. A página própria explica o envio, os limites e as permissões das fontes.

Recursos →

Os problemas mais comuns

  • Um valor pré-formatado é impresso como chega. "1.234,56" é lido corretamente em um idioma e incorretamente em outro, e nenhum formatador consegue corrigir depois.
  • Uma data deve estar em ISO 8601. Um formato local chega como texto: não é formatado, ordenado nem traduzido.
  • A moeda não faz parte do valor. Envie o número e deixe o formatador da coluna adicionar o código ISO.
  • Uma proporção é enviada sobre cem: 18 para 18%. Enviar 0.18 imprime zero vírgula dezoito por cento.
  • Uma condição lê um booleano JSON. A string "false" é um texto não vazio e conta como presente.