Guida · API REST
Convertire HTML in DOCX con una chiamata API
Il layout vive nella Sua applicazione come HTML. Invii il documento all'API e riceva un file Word in cui titoli, paragrafi, elenchi e tabelle sono vera formattazione Word, che i Suoi utenti possono continuare a modificare. La stessa chiamata con format=PDF restituisce la versione A4 impaginata.
Perché non costruire il file Word nel codice
- Una libreria da HTML a Word nel Suo processo La lega a un runtime e a un sottoinsieme di HTML; il servizio successivo, in un altro stack, ricomincia da capo.
- Convertire tramite Word su un server aggiunge un'installazione di Office al Suo deployment e non è supportato per l'uso non presidiato.
- Gli utenti vogliono cambiare ciò che la Sua applicazione ha renderizzato: un PDF lo congela, un DOCX glielo restituisce.
La richiesta
Trasporto multipart: l'HTML è la parte html, il formato un semplice valore di form; format=DOCX restituisce il file Word, PDF le pagine impaginate. Una parte watermark opzionale imprime un testo su ogni pagina. Immagini e fogli di stile esterni non vengono mai caricati: incorpori le immagini come 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.docxDa .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 risposta
La chiamata multipart restituisce il DOCX con Content-Type application/vnd.openxmlformats-officedocument.wordprocessingml.document. Il trasporto JSON restituisce filename, content, format e warnings, con il file codificato in base64 in content. Gli avvisi sono note di rendering, come la sostituzione dei font o un testo di filigrana troncato a 64 caratteri; la richiesta riesce in ogni caso.
Cosa XGenerate non fa
L'HTML viene renderizzato dal motore Word con un sottoinsieme supportato: titoli, paragrafi, formattazione inline, elenchi, tabelle, attributi style inline e blocchi style, immagini come data URI e interruzioni di pagina CSS a livello di paragrafo. Layout CSS complessi e JavaScript non vengono interpretati, le risorse esterne non vengono mai caricate. Per un layout che deve corrispondere a un documento esistente, il template Word è la via.
Lo provi sul Suo template
Ci invii un file Word che usa oggi. Lo renderizziamo con i Suoi dati e Le restituiamo il PDF insieme al template adattato, così la Sua valutazione non deve aspettare noi.
Richiedi una demo