Guide · API REST

Convertir du HTML en DOCX en un appel d'API

La mise en page vit dans votre application sous forme de HTML. Envoyez le document à l'API et recevez un fichier Word dont les titres, paragraphes, listes et tableaux sont de vraies mises en forme Word, que vos utilisateurs peuvent continuer à modifier. Le même appel avec format=PDF renvoie la version A4 paginée.

Pourquoi ne pas construire le fichier Word dans le code

  • Une bibliothèque HTML vers Word dans votre processus vous lie à un environnement d'exécution et à un sous-ensemble HTML ; le service suivant, dans une autre pile, repart de zéro.
  • Convertir via Word sur un serveur ajoute une installation Office à votre déploiement et n'est pas pris en charge en mode non surveillé.
  • Les utilisateurs veulent modifier ce que votre application a rendu : un PDF le fige, un DOCX le leur rend.

La requête

Transport multipart : le HTML est la partie html, le format une simple valeur de formulaire ; format=DOCX renvoie le fichier Word, PDF les pages paginées. Une partie watermark optionnelle appose un texte sur chaque page. Les images et feuilles de style externes ne sont jamais chargées : intégrez les images en data URI.

TOKEN=$(curl -sS https://auth.xgenerate.io/realms/xgenerate/protocol/openid-connect/token \
  -d grant_type=client_credentials \
  -d client_id="$XGENERATE_CLIENT_ID" \
  -d client_secret="$XGENERATE_CLIENT_SECRET" | jq -r .access_token)

# The HTML body is the html part; format=DOCX returns the Word file, PDF the paginated pages.
curl -sS https://api.xgenerate.io/v2/documents/generate-from-html \
  -H "Authorization: Bearer $TOKEN" \
  -F "html=@summary.html;type=text/html" \
  -F "format=DOCX" \
  -o summary.docx

Depuis .NET

using System.Net.Http.Json;

using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new("Bearer", token);

// JSON transport: the HTML travels as text. Inline styles and <style> blocks are kept;
// external images and stylesheets are never fetched, so embed images as data URIs.
var html = """
    <style>h1 { color: #1f2937; } td { padding: 4px 8px; }</style>
    <h1>Quarterly summary</h1>
    <p>Revenue grew by <b>12 %</b> against the previous quarter.</p>
    <table>
      <tr><th>Region</th><th>Revenue</th></tr>
      <tr><td>DACH</td><td>CHF 1.2 M</td></tr>
      <tr><td>France</td><td>CHF 0.8 M</td></tr>
    </table>
    """;
var request = new { filename = "summary.html", html, format = "DOCX" };
var response = await http.PostAsJsonAsync(
    "https://api.xgenerate.io/v2/documents/generate-from-html", request);
response.EnsureSuccessStatusCode();

// result.Filename is "summary.docx": the extension follows the requested format.
var result = await response.Content.ReadFromJsonAsync<GenerateResult>();
await File.WriteAllBytesAsync(result!.Filename, Convert.FromBase64String(result.Content));

record GenerateResult(string Filename, string Content, string Format);

La réponse

L'appel multipart renvoie le DOCX avec Content-Type application/vnd.openxmlformats-officedocument.wordprocessingml.document. Le transport JSON renvoie filename, content, format et warnings, le fichier encodé en base64 dans content. Les avertissements sont des remarques de rendu, par exemple une substitution de police ou un texte de filigrane tronqué à 64 caractères ; la requête réussit dans les deux cas.

Ce que XGenerate ne fait pas

Le HTML est rendu par le moteur Word avec un sous-ensemble pris en charge : titres, paragraphes, mise en forme en ligne, listes, tableaux, attributs style en ligne et blocs style, images en data URI et sauts de page CSS au niveau du paragraphe. Les mises en page CSS complexes et le JavaScript ne sont pas interprétés, les ressources externes ne sont jamais chargées. Pour une mise en page qui doit correspondre à un document existant, le modèle Word est la voie.

Essayez-le sur votre propre modèle

Envoyez-nous un fichier Word que vous utilisez aujourd'hui. Nous le rendons avec vos données et vous renvoyons le PDF avec le modèle adapté, pour que votre évaluation ne dépende pas de nous.

Demander une démo

Guides associés