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.
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"
{
"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.
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.
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 |
|---|---|
installable | Sem restrições; incorporada em PDF e Word. |
editable | Incorporada em PDF e Word. |
preview-print | Incorporada no PDF. Não incorporada no Word, porque um documento Word pode ser editado; o Word substitui a fonte. |
restricted | Não incorporada em nenhum formato. O documento ainda é produzido e usa a fonte do próprio leitor. |
bitmap-only | Apenas a incorporação bitmap é permitida, o que um documento não pode usar. Não incorporada. |
unstated | O 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.
{
"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"
}
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.