HOWTO · Csharp

HTML en PDF en C#

Convertissez une chaîne HTML en PDF A4 en C# avec HtmlRenderer.PdfSharp.

Sur cette page

Utilisez HtmlRenderer.PdfSharp dans un projet C# pour rendre une chaîne HTML en pages PDF, puis enregistrez le document dans un chemin accessible en écriture. Le package relie un moteur de rendu HTML à PdfSharp. Les styles de base peuvent être rendus, tandis que les mises en page complexes et le CSS avancé peuvent différer du rendu d’un navigateur.

Prise en main de HtmlRenderer.PdfSharp

Installez HtmlRenderer.PdfSharp avec le gestionnaire de packages NuGet de Visual Studio, ou exécutez dotnet add package HtmlRenderer.PdfSharp depuis le répertoire contenant le fichier de votre projet. NuGet sélectionne une version de package compatible. Si votre projet nécessite une version épinglée, vérifiez les frameworks cibles de cette version par rapport à votre projet avant de la choisir.

La conversion basée sur le package nécessite les assemblys NuGet dans le projet de votre application. Son API utilise PdfGenerator de TheArtOfDev.HtmlRenderer.PdfSharp, PdfDocument de PdfSharp.Pdf et PageSize.A4 de PdfSharp. Conservez ces références de package dans le projet qui compile le convertisseur.

Convertir une chaîne HTML en PDF

Le programme C# autonome suivant effectue la conversion avec le package installé : il crée un PdfDocument, transmet la chaîne HTML à PdfGenerator.AddPdfPages avec PageSize.A4, enregistre le document dans le chemin de sortie et libère le document.

using System;
using PdfSharp;
using PdfSharp.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

class Program
{
    static void Main()
    {
        string html = "<html><body><h1>Monthly report</h1><p>Revenue increased this month.</p></body></html>";
        string outputPath = "monthly-report.pdf";
        using (PdfDocument document = new PdfDocument())
        {
            PdfGenerator.AddPdfPages(document, html, PageSize.A4);
            document.Save(outputPath);
        }
        Console.WriteLine("Saved " + outputPath);
    }
}
Saved monthly-report.pdf

Exécutez ce programme dans le projet où HtmlRenderer.PdfSharp est installé. Dans votre application, utilisez une destination dans laquelle le processus peut écrire ; un nom de fichier relatif est résolu à partir du répertoire de travail actuel. Utilisez un chemin absolu lorsque vous avez besoin d’une destination fixe.

Rendre du HTML avec CSS et images

Incluez un bloc <style> et des éléments d’image dans la chaîne HTML avant de la transmettre au générateur. HtmlRenderer.PdfSharp peut rendre du CSS de base, mais son rendu n’est pas garanti de correspondre à celui d’un navigateur. Vérifiez les documents qui utilisent des sélecteurs avancés, des polices personnalisées ou un positionnement complexe.

Une source d’image doit être disponible pour l’application pendant la conversion. Les URL d’images externes nécessitent un accès réseau depuis ce processus. Pour les images locales, utilisez un format de source et un chemin pris en charge par la version du package de votre projet, et assurez-vous que le processus peut la lire. Si une image est manquante, vérifiez que sa source est correcte et accessible. La capture d’écran disponible n’a pas pu être confirmée par rapport à cet exemple, elle est donc omise.

Limites et dépannage

Le rendu HTML vers PDF diffère de l’ouverture de la même page dans un navigateur. Gardez le balisage bien formé, utilisez des styles pris en charge par le moteur de rendu et inspectez le PDF généré pour détecter les changements de mise en page. Les mises en page complexes et le CSS avancé peuvent ne pas être rendus comme prévu.

Si le PDF est manquant, vérifiez le chemin de sortie et l’accès en écriture de l’application à son répertoire. Si des styles sont manquants, réduisez le HTML et rajoutez le CSS par étapes. Si une image est manquante, confirmez que son URL ou sa source locale est disponible pendant la conversion. Ces vérifications aident à distinguer un problème de chemin ou d’accès aux ressources d’une différence de rendu.

FAQ

  1. Que fait HtmlRenderer.PdfSharp ? Il rend le contenu HTML en pages PDF à l’aide de PdfSharp, ce qui permet à une application C# d’enregistrer des documents générés à partir de balisage.
  2. Puis-je utiliser du CSS ? Le CSS de base est pris en charge. Le CSS avancé et les mises en page complexes peuvent avoir un aspect différent de celui d’un navigateur, vérifiez donc le PDF obtenu.
  3. Comment fonctionnent les images ? La source de l’image doit être disponible pour le moteur de rendu pendant la conversion. Les URL externes nécessitent un accès réseau depuis l’application ; les sources locales nécessitent un chemin que le processus peut lire.
  4. Puis-je personnaliser le PDF ? Définissez la taille de page via l’API de génération de PDF et ajustez le HTML et les styles pris en charge. Consultez l’API pour d’autres options dans votre version installée.
  5. À quoi dois-je m’attendre avec du HTML complexe ? Le moteur de rendu prend en charge un sous-ensemble de HTML et de CSS. Testez votre document réel et simplifiez ou ajustez le balisage lorsque son apparence diffère de votre intention.