Guide du produit et de l’API

Ressources

Importer une ressource

Les logos, signatures et polices sont importés une seule fois puis référencés par ID. La requête est multipart ; le fichier est placé dans un champ nommé file et altText est facultatif.

Demande
curl -X POST https://api.pdfgine.com/api/v1/assets \
  -H "X-PDFgine-Key: $PDFGINE_KEY" \
  -F "file=@logo.png" \
  -F "altText=Logo de l’entreprise"
HTTP 201
{
  "assetId": "ast_985f87e2b22d486db2d6d8bacd29288e",
  "fileName": "logo.png",
  "contentType": "image/png",
  "length": 20184,
  "altText": "Logo de l’entreprise",
  "createdAt": "2026-09-26T15:29:44.8420041+00:00",
  "expiresAt": null,
  "fontEmbedding": null
}

Le type est lu à partir des premiers octets du fichier, pas du Content-Type envoyé : un .png qui est en réalité un PDF est refusé. Les formats PNG, JPEG, WebP, TTF et OTF sont acceptés, jusqu’à 10 MB par fichier.

Utilisation dans un document

Envoyez l’ID à l’endroit où le modèle attend une image. Le même champ accepte aussi une URI data:, mais une ressource importée est plus légère à transmettre et peut être réutilisée.

Demande
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" }
      }'

Ressources temporaires, liste et suppression

Une image nécessaire à un seul document n’a pas besoin d’être supprimée manuellement : indiquez expiresInMinutes entre 1 et 10080 (sept jours), et la ressource se supprimera automatiquement.

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

# Liste, contenu d’une ressource et suppression
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"

Polices et autorisations d’incorporation

Le fichier de police indique dans ses bits fsType les usages autorisés dans un document. PDFgine les lit à l’importation et répond avec fontEmbedding ; vous connaissez ainsi les autorisations avant de produire le document plutôt qu’après son ouverture.

fontEmbedding Usages autorisés dans le document
installableAucune restriction ; incorporée dans le PDF et dans Word.
editableIncorporée dans le PDF et dans Word.
preview-printIncorporée dans le PDF. Non incorporée dans Word, car un document Word peut être modifié ; Word remplace la police.
restrictedNon incorporée, quel que soit le format. Le document est tout de même produit et utilise une police disponible chez le lecteur.
bitmap-onlySeule l’incorporation bitmap est autorisée, ce qu’un document ne peut pas utiliser. Non incorporée.
unstatedLe fichier ne déclare aucune autorisation. Il est considéré comme incorporable, conformément à la spécification OpenType.

WOFF et WOFF2 sont refusés à l’importation. Ils ne peuvent pas être incorporés dans un document Word ; le même modèle serait alors correct en PDF et incorrect dans Word, une différence que vous ne remarqueriez qu’après l’envoi du document.

Polices intégrées

Ces familles sont fournies avec le produit ; utilisez leur nom dans style.fontFamily et page.defaultFont. La même police est utilisée dans le PDF, dans Word et dans l’éditeur. Une graisse absente n’est pas refusée ; la variante la plus proche est utilisée.

Famille Groupe Graisses Systèmes d’écriture
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

Cas de refus d’une importation

Chaque refus renvoie une réponse 400 avec le motif dans errors.file. Affichez cette phrase à la personne qui importe le fichier ; elle indique déjà la marche à suivre.

HTTP 400
{
  "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": {
    "file": ["Importez une police TTF ou OTF pour qu’elle puisse être utilisée dans la sortie Word. Les fichiers WOFF et WOFF2 ne peuvent pas être incorporés dans un document Word."]
  },
  "correlationId": "505aac87e234a7b4669e6203ac7ffcd5"
}
Erreurs →

Les problèmes les plus courants

  • Le type est lu dans les premiers octets, pas dans le nom. Renommer un PDF en .png n’en fait pas une image ; l’importation est refusée.
  • WOFF et WOFF2 sont volontairement refusés. Ils ne peuvent pas être incorporés dans Word ; le même modèle serait correct en PDF et incorrect dans Word. Importez TTF ou OTF.
  • La réponse d’importation contient fontEmbedding. L’ignorer revient à découvrir le remplacement de la police après l’envoi du document.
  • Une URI data: accompagne chaque requête. Pour un logo présent sur chaque document, importez-le une seule fois et envoyez son ID.
  • Une image nécessaire à un document n’a pas besoin de nettoyage manuel. Indiquez expiresInMinutes et elle se supprimera automatiquement.