Pular para o conteúdo

Gerar com HTML direto

Envie o HTML na requisição quando você mesmo o produz, quando ele vem de outro sistema, ou quando quer um documento avulso e nada para manter no portal.

Janela do terminal
curl -X POST https://api.example.com/v1/render \
-H "Authorization: Bearer $RUSTEDF_KEY" \
-H "Content-Type: application/json" \
-d '{
"html": "<h1>Olá {{ name }}</h1><p>{{ total | currency(code=\"BRL\") }}</p>",
"data": { "name": "Mundo", "total": "1234.50" },
"locale": "pt-BR"
}' \
-o ola.pdf

O campo html é um template, como um salvo: {{ }}, {% %} e os filtros de formatação funcionam (veja Templates). Se o seu HTML já está pronto, sem campos, envie-o como está e omita data.

Não cole dados dentro da string de HTML; passe-os em data, para serem escapados. Em Node.js:

const response = await fetch('https://api.example.com/v1/render', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.RUSTEDF_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
html: '<h1>{{ title }}</h1><ul>{% for i in items %}<li>{{ i }}</li>{% endfor %}</ul>',
data: { title: 'Lista de compras', items: ['Pão', 'Leite'] },
}),
});
  • Envie html ou template_id, nunca os dois e nunca nenhum: isso é um 400.
  • Nada é salvo. Não há versão nem pré-visualização no portal; o HTML é enviado de novo a cada requisição, e o limite de tamanho do seu plano vale para ele.
  • As imagens precisam ser imagens enviadas (asset:<id>) ou URLs data:; veja Imagens.
  • Use /v1/validate com o mesmo corpo para conferir o documento sem gastar crédito.

Quando o mesmo layout é gerado com frequência, um template salvo é mais fácil de manter. A requisição e a resposta estão em Gerar um PDF.