Web2Print API

Générez des PDF à partir de HTML avec Paged.js

Introduction

L'API Web2Print permet de générer des documents PDF de haute qualité à partir de contenu HTML. Elle utilise Paged.js pour appliquer les standards CSS Paged Media, offrant un contrôle précis sur la mise en page, les sauts de page, les en-têtes, les pieds de page et bien plus.

Cette API est conçue pour être simple d'utilisation tout en offrant une grande flexibilité pour créer des documents professionnels tels que rapports, factures, catalogues ou livres.

🔐 Authentification requise

Toutes les requêtes doivent inclure un header X-API-Key avec une clé API valide. Contactez l'administrateur pour obtenir votre clé d'accès.

Endpoints

POST /generate

Génère un document PDF à partir de contenu HTML. Le HTML peut inclure des styles inline ou dans une balise <style>. CSS additionnel peut être fourni via le paramètre css.

Paramètres

Paramètre Type Requis Description
html string Requis Contenu HTML du document à convertir en PDF
css string Optionnel Styles CSS additionnels à appliquer au document
options object Optionnel Options de configuration pour la génération PDF

Headers requis

Header Valeur Description
Content-Type application/json Type de contenu de la requête
X-API-Key Votre clé API Clé d'authentification

Réponse

En cas de succès, l'API retourne le fichier PDF binaire avec le header Content-Type: application/pdf. En cas d'erreur, elle retourne un JSON avec un objet error.

Exemples de code

curl -X POST https://web2print.studio-variable.com/generate \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "html": "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><style>@page { size: A4; margin: 2cm; } body { font-family: Arial; } h1 { color: #333; }</style></head><body><h1>Mon Document</h1><p>Contenu du document.</p></body></html>"
  }' \
  --output document.pdf
const response = await fetch('https://web2print.studio-variable.com/generate', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-API-Key': 'YOUR_API_KEY'
  },
  body: JSON.stringify({
    html: `<!DOCTYPE html>
      <html>
        <head>
          <meta charset="utf-8">
          <style>
            @page { size: A4; margin: 2cm; }
            body { font-family: Arial; }
            h1 { color: #333; }
          </style>
        </head>
        <body>
          <h1>Mon Document</h1>
          <p>Contenu du document.</p>
        </body>
      </html>`
  })
});

if (response.ok) {
  const blob = await response.blob();
  const url = window.URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.href = url;
  a.download = 'document.pdf';
  a.click();
} else {
  const error = await response.json();
  console.error('Erreur:', error);
}
import requests

url = 'https://web2print.studio-variable.com/generate'
headers = {
    'Content-Type': 'application/json',
    'X-API-Key': 'YOUR_API_KEY'
}
data = {
    'html': '''<!DOCTYPE html>
      <html>
        <head>
          <meta charset="utf-8">
          <style>
            @page { size: A4; margin: 2cm; }
            body { font-family: Arial; }
            h1 { color: #333; }
          </style>
        </head>
        <body>
          <h1>Mon Document</h1>
          <p>Contenu du document.</p>
        </body>
      </html>'''
}

response = requests.post(url, headers=headers, json=data)

if response.status_code == 200:
    with open('document.pdf', 'wb') as f:
        f.write(response.content)
    print('PDF généré avec succès')
else:
    print('Erreur:', response.json())
$ch = curl_init('https://web2print.studio-variable.com/generate');

$html = '<!DOCTYPE html>
  <html>
    <head>
      <meta charset="utf-8">
      <style>
        @page { size: A4; margin: 2cm; }
        body { font-family: Arial; }
        h1 { color: #333; }
      </style>
    </head>
    <body>
      <h1>Mon Document</h1>
      <p>Contenu du document.</p>
    </body>
  </html>';

$data = json_encode(['html' => $html]);

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'X-API-Key: YOUR_API_KEY'
    ],
    CURLOPT_POSTFIELDS => $data
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
    file_put_contents('document.pdf', $response);
    echo 'PDF généré avec succès';
} else {
    $error = json_decode($response, true);
    echo 'Erreur: ' . $error['error'];
}

Codes de réponse HTTP

Code Description
200 Succès - Le PDF est retourné dans le corps de la réponse
400 Requête invalide - JSON mal formé ou paramètre manquant
401 Non autorisé - Clé API manquante ou invalide
405 Méthode non autorisée - Seul POST est accepté
413 Requête trop volumineuse - Le contenu HTML dépasse la limite
500 Erreur serveur - Erreur lors de la génération du PDF