La conversion de pages HTML riches en fichiers DOCX modifiables est un besoin fréquent pour les flux de travail de reporting et d’automatisation de documents. Le GroupDocs.Conversion Cloud SDK for Node.js permet aux développeurs d’effectuer cette conversion entièrement via une bibliothèque basée sur REST. Dans ce tutoriel, vous verrez comment configurer le SDK, écrire du code Node.JS qui réalise la conversion HTML vers DOCX dans Node.JS, utiliser cURL pour appeler l’API et appliquer des options de configuration pour des résultats optimaux.

Prérequis et configuration

Avant de commencer, assurez-vous d’avoir ce qui suit :

  • Node.js 14 ou version ultérieure installé sur votre machine de développement.
  • Un compte actif GroupDocs.Conversion Cloud (vous pouvez vous inscrire pour un essai gratuit sur la page du produit).
  • Votre Client ID et Client Secret du tableau de bord GroupDocs Cloud.
  • Connectivité Internet pour appeler l’API REST du cloud.

Installez le SDK via npm :

npm install groupdocs-conversion-cloud

Téléchargez le dernier package et consultez le code source sur GitHub si vous devez explorer le code :

Télécharger GroupDocs.Conversion Cloud SDK for Node.js

Avec le SDK installé et les informations d’identification prêtes, vous pouvez passer à l’implémentation.

Conversion de HTML en DOCX avec Node.JS : Guide étape par étape

Voici un guide concis qui montre chaque étape logique. Le code source complet est fourni plus tard.

Étape 1 : Initialiser le client de l’API de conversion

Créez une instance de ConversionApi et configurez l’authentification.

const { ConversionApi, Configuration } = require('groupdocs-conversion-cloud');

const config = new Configuration({
    clientId: 'YOUR_CLIENT_ID',
    clientSecret: 'YOUR_CLIENT_SECRET'
});

const conversionApi = new ConversionApi(config);

Étape 2 : Télécharger le fichier source HTML

Téléchargez le fichier HTML que vous souhaitez convertir. L’API renvoie un identifiant de fichier que vous utiliserez pour la conversion.

const fs = require('fs');
const path = require('path');

const htmlPath = path.resolve(__dirname, 'sample.html');
const fileBytes = fs.readFileSync(htmlPath);

const uploadResponse = await conversionApi.uploadFile({
    file: fileBytes,
    fileName: 'sample.html'
});
const sourceFileId = uploadResponse.id;

Étape 3 : Définir les options de conversion

Configurez toutes les options spécifiques à DOCX, telles que l’incorporation de polices ou la définition des marges de page. Cette étape montre la personnalisation de la génération de DOCX à partir de HTML.

const convertSettings = {
    outputFormat: 'DOCX',
    options: {
        embedFonts: true,
        pageSize: 'A4',
        marginTop: 20,
        marginBottom: 20,
        marginLeft: 15,
        marginRight: 15
    }
};

Étape 4 : Exécuter la conversion

Appelez la méthode convert avec l’ID du fichier source et les paramètres définis ci‑dessus.

const convertResponse = await conversionApi.convert({
    fileId: sourceFileId,
    convertSettings: convertSettings
});
const docxFileId = convertResponse.id;

Étape 5 : Télécharger le DOCX résultant

Récupérez le fichier DOCX généré et enregistrez‑le localement.

const docxData = await conversionApi.downloadFile({ fileId: docxFileId });
fs.writeFileSync(path.resolve(__dirname, 'output.docx'), docxData);
console.log('DOCX file saved as output.docx');

Les étapes ci‑dessus illustrent un flux de travail complet conversion HTML vers DOCX dans Node.JS utilisant le GroupDocs.Conversion Cloud SDK.

Exemple complet de code : génération de DOCX à partir de contenu HTML

Le programme suivant rassemble toutes les pièces en un seul script exécutable.

// Full working example for HTML to DOCX conversion using GroupDocs.Conversion Cloud SDK for Node.js

const { ConversionApi, Configuration } = require('groupdocs-conversion-cloud');
const fs = require('fs');
const path = require('path');

async function convertHtmlToDocx() {
    // 1. Configure the API client
    const config = new Configuration({
        clientId: 'YOUR_CLIENT_ID',
        clientSecret: 'YOUR_CLIENT_SECRET'
    });
    const conversionApi = new ConversionApi(config);

// 2. Read the HTML file
    const htmlPath = path.resolve(__dirname, 'sample.html');
    const htmlBytes = fs.readFileSync(htmlPath);

// 3. Upload the HTML file
    const uploadResult = await conversionApi.uploadFile({
        file: htmlBytes,
        fileName: 'sample.html'
    });
    const sourceFileId = uploadResult.id;

// 4. Define conversion settings
    const convertSettings = {
        outputFormat: 'DOCX',
        options: {
            embedFonts: true,
            pageSize: 'A4',
            marginTop: 20,
            marginBottom: 20,
            marginLeft: 15,
            marginRight: 15
        }
    };

// 5. Perform the conversion
    const convertResult = await conversionApi.convert({
        fileId: sourceFileId,
        convertSettings: convertSettings
    });
    const docxFileId = convertResult.id;

// 6. Download the DOCX file
    const docxBytes = await conversionApi.downloadFile({ fileId: docxFileId });
    const outputPath = path.resolve(__dirname, 'output.docx');
    fs.writeFileSync(outputPath, docxBytes);
    console.log(`Conversion successful. DOCX saved to ${outputPath}`);
}

// Execute the conversion
convertHtmlToDocx().catch(err => {
    console.error('Conversion failed:', err);
});

Remarque : Cet exemple de code démontre la fonctionnalité principale. Avant de l’utiliser dans votre projet, assurez‑vous de mettre à jour les chemins de fichiers (sample.html, output.docx), vérifiez que toutes les dépendances requises sont correctement installées et testez soigneusement dans votre environnement de développement. Si vous rencontrez des problèmes, veuillez consulter la documentation officielle ou contacter l’équipe de support pour obtenir de l’aide.

Exécution de la conversion via cURL et l’API REST

Si vous préférez travailler directement avec HTTP, les commandes cURL suivantes effectuent la même conversion.

  1. Obtenir un jeton d’accès

Remplacez YOUR_CLIENT_ID et YOUR_CLIENT_SECRET par vos identifiants.

curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET"

La réponse contient access_token.

  1. Téléverser le fichier HTML
curl -X POST "https://api.groupdocs.cloud/v2.0/storage/files/sample.html" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -F "file=@sample.html"
  1. Démarrer la conversion
curl -X POST "https://api.groupdocs.cloud/v2.0/conversion/convert" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
           "sourceFilePath": "sample.html",
           "outputFilePath": "output.docx",
           "outputFormat": "DOCX",
           "options": {
               "embedFonts": true,
               "pageSize": "A4"
           }
         }'
  1. Télécharger le DOCX converti
curl -X GET "https://api.groupdocs.cloud/v2.0/storage/files/output.docx" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o output.docx

Pour une liste complète des paramètres, consultez la documentation officielle de l’API.

Configuration des options pour la conversion de contenu HTML en DOCX

Le SDK expose plusieurs propriétés qui vous permettent d’ajuster finement la sortie :

  • embedFonts - Intègre toutes les polices référencées dans le DOCX, garantissant la fidélité visuelle.
  • pageSize - Définit la taille de la page (A4, Letter, etc.).
  • marginTop / marginBottom / marginLeft / marginRight - Ajuste les marges de la page en points.

Exemple d’application de ces options :

const convertSettings = {
    outputFormat: 'DOCX',
    options: {
        embedFonts: true,
        pageSize: 'Letter',
        marginTop: 30,
        marginBottom: 30,
        marginLeft: 20,
        marginRight: 20
    }
};

Consultez la classe ConversionOptions pour la liste complète.

Considérations de performance pour la conversion de contenu HTML en DOCX

Lors de la conversion de documents HTML volumineux ou complexes, gardez ces conseils à l’esprit :

  1. Réutiliser le client API - Créer une nouvelle instance ConversionApi pour chaque fichier ajoute une surcharge.
  2. Diffuser les gros fichiers HTML - Au lieu de charger le fichier complet en mémoire, utilisez des flux (fs.createReadStream) et la méthode uploadFileStream du SDK.
  3. Limiter les ressources intégrées - Supprimez les images ou scripts inutiles du HTML avant le téléchargement afin de réduire le temps de traitement.
  4. Conversions par lots - Traitez les fichiers séquentiellement dans une boucle, mais respectez les limites de débit de l’API pour éviter le throttling.

Appliquer ces pratiques aide à maintenir une faible latence et une consommation de mémoire modeste.

Conclusion

La conversion HTML vers DOCX en Node.JS devient simple avec le GroupDocs.Conversion Cloud SDK for Node.js. En suivant les étapes ci‑dessus, vous pouvez intégrer une génération fiable de DOCX à partir de HTML dans n’importe quelle application côté serveur, personnaliser la sortie et optimiser les performances pour de lourdes charges de travail. N’oubliez pas d’obtenir une licence appropriée pour une utilisation en production ; vous pouvez acheter un abonnement ou obtenir une licence temporaire depuis la page de licence temporaire. Bon codage!

FAQ

Comment démarrer une conversion HTML en DOCX dans Node.JS ?

Utilisez le SDK pour créer un client ConversionApi, téléchargez votre fichier HTML, définissez les options de conversion souhaitées et appelez la méthode convert. Le processus est entièrement asynchrone et renvoie l’identifiant du fichier DOCX pour le téléchargement.

Quelles options puis-je ajuster pour la génération de DOCX à partir de HTML?

L’objet ConversionOptions vous permet d’incorporer des polices, de choisir la taille de la page, de définir les marges et de contrôler la gestion des images. Consultez la référence API pour tous les paramètres disponibles.

Puis-je convertir du HTML contenant du CSS externe ou des images ?

Oui. Téléchargez toutes les ressources référencées (CSS, images) dans le même dossier de stockage avant de commencer la conversion, et le SDK résoudra les liens pendant le traitement.

Ai‑je besoin d’une licence pour les déploiements en production ?

Une licence valide est requise pour la production. Vous pouvez obtenir une licence temporaire pour les tests depuis la page de licence temporaire et acheter un abonnement complet lorsque vous êtes prêt à mettre en production.

En savoir plus