Guida · API REST

Generare PDF da template Word, HTML o Markdown

Tre ingressi, un solo motore. Compili un template Word con JSON per i documenti che devono apparire esattamente come l'originale; invii un documento HTML quando il layout vive nella Sua applicazione; invii Markdown, se vuole su una carta intestata, per il testo che il Suo sistema scrive. Ogni chiamata restituisce il PDF finito.

Perché un'API di generazione invece di una libreria PDF

  • Una libreria PDF trasforma il layout in un compito di programmazione; un template Word lo lascia a chi è responsabile del documento.
  • I browser headless per HTML in PDF sono pesanti da gestire e cambiano tra una versione e l'altra.
  • Un testo generato, da un modello o da un flusso di lavoro, ha bisogno di un documento intorno: intestazione, font, interruzioni di pagina.

La richiesta

La prima chiamata compila un template Word da JSON; la seconda renderizza un documento HTML grezzo, parte html; l'esempio .NET invia Markdown tramite il trasporto JSON. Tutte e tre accettano format PDF o DOCX e una filigrana opzionale.

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)

# 1. Word template + JSON → PDF
curl -sS https://api.xgenerate.io/v2/documents/generate \
  -H "Authorization: Bearer $TOKEN" \
  -F "file=@report.docx" \
  -F "fields=@fields.json;type=application/json" \
  -F "format=PDF" \
  -o report.pdf

# 2. HTML body → PDF
curl -sS https://api.xgenerate.io/v2/documents/generate-from-html \
  -H "Authorization: Bearer $TOKEN" \
  -F "html=@page.html;type=text/html" \
  -F "format=PDF" \
  -o page.pdf

Da .NET

using System.Net.Http.Json;

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

// 3. Markdown over the JSON transport: the text is the document.
var request = new
{
    filename = "summary.md",
    markdown = "# Quarterly summary\n\nRevenue grew by **12 %** against the previous quarter.\n",
    format = "PDF"
};
var response = await http.PostAsJsonAsync(
    "https://api.xgenerate.io/v2/documents/generate-from-markdown", request);
response.EnsureSuccessStatusCode();

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

Byte PDF grezzi sul trasporto multipart, un oggetto JSON con filename, content, format e warnings sul trasporto JSON. Il nome file in Content-Disposition prende l'estensione del formato risolto.

Il risultato

Prima pagina della fattura di riferimento renderizzata: intestazione, blocco indirizzo, tabella delle righe e totali
La fattura di riferimento, renderizzata da un template Word con campi unione standard. Template, richiesta e PDF atteso: esempio pubblicato

Cosa XGenerate non fa

I contenuti HTML e Markdown vengono renderizzati dal motore Word; layout CSS complessi e JavaScript non vengono interpretati. Per la fedeltà al layout, 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

Guide correlate