Cette page peut contenir du texte traduit automatiquement.
Fonctionnalités HTML vers PDF
Vous pouvez convertir du HTML en PDF à l'aide de la bibliothèque Docotic.Pdf. Consultez les ressources mentionnées sur cette page pour découvrir comment créer de magnifiques PDF à partir de vos données.
Vous auriez besoin du module complémentaire HTML vers PDF pour les conversions HTML en PDF. Il s'agit d'un module complémentaire gratuit pour la bibliothèque Docotic.Pdf. Le module complémentaire est également disponible dans le fichier zip avec les binaires de la bibliothèque.
9.5.17664-dev 9.5.17664-dev14,820 réussis Téléchargements totaux de NuGet 4,998,853
Référence API
Sur notre site, nous fournissons la référence API pour le module complémentaire HTML vers PDF.
Des articles
Lisez ce qui suit pour en savoir plus sur la conversion HTML en PDF en code C# et VB.NET.
Convertir HTML en PDF en C# et VB.NET
Contient le code de conversion C# HTML en PDF qui montre comment générer un PDF en C# et VB.NET à partir de code HTML avec des styles CSS.Convertir du HTML en PDF dans Azure Functions
Comment convertir du HTML en PDF dans Azure Functions et Azure App Services avec .NET Core sous Windows et Linux.
Exemple de code
La conversion HTML en PDF est le terme qui peut décrire la variété des tâches associées. Les sections suivantes décrivent ces tâches plus en détail.
Conversion HTML en PDF en C#
Vous devez commencer par installer le module complémentaire. Utilisez le gestionnaire de packages pour installer le module complémentaire HTML vers PDF à partir de NuGet.
Install-Package BitMiracle.Docotic.Pdf.HtmlToPdf
Le module complémentaire fournit une API uniquement asynchrone. Nous l'avons conçu pour fonctionner avec des gestionnaires d'événements asynchrones et des méthodes asynchrones. Vous pouvez utiliser le module complémentaire dans les applications Windows Forms, WPF, ASP.NET et console.
Le code C# HTML vers PDF ressemble à ceci :
using var converter = await HtmlConverter.CreateAsync();
var uri = new Uri("https://bitmiracle.com/pdf-library/html-pdf/");
using var pdf = await converter.CreatePdfAsync(uri);
pdf.Save("out.pdf");
Le code crée une instance du convertisseur HTML en PDF. Le code utilise ensuite l'instance pour créer un PDF à partir de HTML. Vous pouvez continuer à travailler avec la fonction PDF document, mais l'exemple de code enregistre simplement le document.
Si votre application de console utilise une ancienne version de C# et que vous n'avez pas de main asynchrone, ne vous inquiétez pas. Vous pouvez toujours utiliser le module complémentaire dans votre application.
Le code suivant montre comment convertir une URL en PDF selon une méthode synchrone standard :
Task.Run(async () =>
{
using var converter = await HtmlConverter.CreateAsync();
var uri = new Uri("https://bitmiracle.com/pdf-library/html-pdf/");
using var pdf = await converter.CreatePdfAsync(uri);
pdf.Save("out.pdf");
}).GetAwaiter().GetResult();
Les applications VB.NET utilisent un code similaire. Voici un extrait qui montre comment convertir du HTML en PDF dans VB.NET.
Task.Run(
Async Function()
Using converter = Await HtmlConverter.CreateAsync()
Dim uri = New Uri("https://bitmiracle.com/pdf-library/html-pdf/")
Using pdf = Await converter.CreatePdfAsync(uri)
pdf.Save("out.pdf")
End Using
End Using
End Function
).GetAwaiter().GetResult()
Téléchargez des projets de test complets depuis notre référentiel GitHub :
Convertir une chaîne HTML en PDF en C#
L'une des tâches courantes consiste à générer un PDF à partir de HTML dans une application C# ou VB.NET. Le processus peut commencer par un modèle que l'application remplit avec des données provenant d'une base de données. Il n'est pas rare qu'un utilisateur d'un site Web crée le modèle, les données ou les deux.
Le code HTML généré ou téléchargé automatiquement peut prendre la forme d'un fichier ou d'une chaîne avec le code. Le module complémentaire fournit une méthode qui accepte un chemin de fichier. Utilisez la méthode pour convertir un fichier HTML en PDF dans le code C#. Le code suivant est destiné au cas où vous avez une chaîne.
using var converter = await HtmlConverter.CreateAsync();
var html = "<body><br><br><br><h1>Hello, World</h1></body>";
using var pdf = await converter.CreatePdfFromStringAsync(html);
pdf.Save("out.pdf");
Le code HTML peut contenir des références relatives à des images, des scripts et des fichiers CSS. Pour convertir correctement ce code, vous devez utiliser des options de conversion. Voici comment spécifier une URL de base à l'aide des options :
using var converter = await HtmlConverter.CreateAsync();
var incompleteHtml = "<img src=\"/images/team.svg\"></img>";
var options = new HtmlConversionOptions();
options.Load.BaseUri = new Uri("https://bitmiracle.com/");
using var pdf = await converter.CreatePdfFromStringAsync(incompleteHtml, options);
pdf.Save("out.pdf");
Notre référentiel GitHub contient le projet de test complet.
Exécuter JavaScript avant la conversion
L'API complémentaire permet d'exécuter un code JS avant la conversion. Le code peut générer ou modifier dynamiquement le contenu HTML. Par exemple, il peut basculer entre les éléments ou effectuer un chargement dynamique du contenu.
Le code suivant montre comment retarder la conversion HTML en PDF jusqu'à ce que JavaScript soit terminé.
using var converter = await HtmlConverter.CreateAsync();
var options = new HtmlConversionOptions();
var js = @"document.body.style.backgroundColor = 'green';";
options.Start.SetStartAfterScriptRun(js);
var url = new Uri("https://google.com");
using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");
L'extrait ci-dessus utilise un code très simple juste pour illustrer l'approche. Pour un exemple plus concret, consultez l'exemple d'application correspondant dans notre dépôt GitHub. L'application montre comment gérer une page qui charge dynamiquement son contenu. Le code JavaScript de l'application fait défiler la page jusqu'à ce qu'il n'y ait plus de nouveau contenu. Après cela, la conversion au format PDF a lieu.
Ignorer les erreurs SSL
Lors de l'envoi de requêtes sécurisées pour charger du HTML, le module complémentaire vérifie si le certificat SSL qui authentifie l'identité d'un site Web et permet une connexion cryptée est valide et fiable.
Par défaut, le module complémentaire génère une exception si le convertisseur HTML en PDF ne fait pas confiance au certificat pour une raison quelconque. Si vous comprenez le risque d'accepter un certificat non fiable, vous pouvez demander au module complémentaire de contourner les vérifications.
var engineOptions = new HtmlEngineOptions
{
IgnoreSslErrors = true
};
using var converter = await HtmlConverter.CreateAsync(engineOptions);
var url = new Uri("https://self-signed.badssl.com/");
using var pdf = await converter.CreatePdfAsync(url);
pdf.Save("out.pdf");
Pour le code complet, rendez-vous sur le référentiel d'exemples Docotic.Pdf.
Fournir un mot de passe pour les pages protégées
Certaines pages Web nécessitent une authentification pour y accéder. Lorsque vous accédez à une URL sécurisée qui nécessite une authentification HTTP, le navigateur vous demande de fournir un nom d'utilisateur et un mot de passe.
À l’aide des options de conversion, vous pouvez demander à l’API de fournir des informations d’identification pour les pages Web qui nécessitent une connexion.
Ce code C# montre comment convertir un code HTML protégé par mot de passe en PDF
using var converter = await HtmlConverter.CreateAsync();
var url = new Uri("http://httpbin.org/basic-auth/foo/bar");
var options = new HtmlConversionOptions();
options.Authentication.SetCredentials("foo", "bar");
using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");
Recherchez l'échantillon de travail complet dans le référentiel d'échantillons.
Attendre avant la conversion
Il peut être utile de retarder la conversion HTML en PDF si la page continue à se mettre à jour pendant un certain temps après son chargement. C'est souvent le cas lorsqu'il s'agit de contenu dynamique généré par des appels JavaScript ou AJAX.
Le test Acid 3 est un parfait exemple de page qui bénéficierait d'un délai avant conversion. Le test exécute le nombre de vérifications permettant d'évaluer la capacité d'un navigateur à restituer correctement des pages Web complexes. Ces vérifications prennent du temps. Essayez de modifier le temps d'attente dans le code suivant pour voir comment cela affecte les résultats de la conversion.
var options = new HtmlConversionOptions();
options.Start.SetStartAfterDelay(10 * 1000);
using var converter = await HtmlConverter.CreateAsync();
var url = new Uri("http://acid3.acidtests.org/");
using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");
Le code ci-dessus montre comment convertir du HTML en PDF avec un délai. Bien que le temps supplémentaire aide à obtenir de meilleurs résultats, veuillez noter que l'ajout de délais peut affecter les performances. Des délais insuffisants peuvent affecter négativement la qualité de la conversion. Une approche alternative à l'utilisation d'un délai consiste à utiliser un script qui s'exécuterait jusqu'à ce que la page soit prête.
Vous pouvez obtenir le projet de test complet dans le référentiel d'exemples Docotic.Pdf.
Ajouter un en-tête et un pied de page
L'API HTML vers PDF peut ajouter des blocs de pied de page/en-tête répétables sur les pages générées. Converter crée les blocs à partir des modèles HTML spécifiés dans les options de conversion. Nous vous recommandons d'utiliser des styles en ligne et des URI de données pour les images à l'intérieur des modèles.
Le convertisseur place les en-têtes et les pieds de page à l'intérieur des marges de la page. Étant donné que les marges de la page sont petites, le contenu de l'en-tête et du pied de page peut ne pas être visible. Nous vous recommandons de spécifier explicitement les marges supérieure et inférieure. La taille doit correspondre à la taille de l'en-tête et du pied de page, respectivement.
Découvrez comment convertir HTML en PDF et ajouter un en-tête et un pied de page
using var converter = await HtmlConverter.CreateAsync();
var options = new HtmlConversionOptions();
options.Page.HeaderTemplate = File.ReadAllText("header-template.html");
options.Page.MarginTop = 50;
options.Page.FooterTemplate = File.ReadAllText("footer-template.html");
options.Page.MarginBottom = 50;
var url = new Uri("https://www.iana.org/numbers");
using var pdf = await converter.CreatePdfAsync(url, options);
pdf.Save("out.pdf");
Le convertisseur peut insérer des valeurs telles que la date de conversion et le titre du document à des emplacements prédéfinis dans les modèles. Consultez la description des propriétés HeaderTemplate et FooterTemplate pour plus d'informations.
Le projet de test complet et le code du modèle se trouvent dans le référentiel d'exemples Docotic.Pdf.
Contenu de l'échelle
Lorsque vous travaillez sur des pages Web avec des mises en page larges, vous pouvez soit augmenter la taille du PDF de sortie, soit réduire le contenu pour l'adapter à la page PDF. Pour mieux positionner le contenu mis à l'échelle, vous pouvez également définir des marges.
Un PDF bien dimensionné offre une meilleure expérience de lecture, car ses lecteurs n'auront pas besoin de zoomer ou de dézoomer pour visualiser correctement le contenu. Si le document HTML est difficile à lire en raison d'une petite taille de police, vous pouvez agrandir le contenu.
Par défaut, l'API génère des PDF avec une taille de page égale à A4. Il n'y a pas de marges ni d'agrandissement. À l'aide des options de conversion, vous pouvez modifier ces paramètres.
Découvrez comment configurer le facteur d'échelle et les marges lors de la génération d'un PDF à partir de HTML
using var converter = await HtmlConverter.CreateAsync();
var html = "<html><head><style>body { background-color: coral; margin-top: 100px;}</style></head>" +
"<body><h1>Did you notice the margins and the scale?</h1></body></html>";
var options = new HtmlConversionOptions();
options.Page.MarginLeft = 10;
options.Page.MarginTop = 20;
options.Page.MarginRight = 30;
options.Page.MarginBottom = 40;
options.Page.Scale = 1.5;
using var pdf = await converter.CreatePdfFromStringAsync(html, options);
pdf.Save("out.pdf");
Le référentiel d'exemples Docotic.Pdf contient le projet complet.
Superposer du HTML sur un PDF existant
Il existe des cas où vous souhaitez utiliser un PDF existant comme arrière-plan pour le résultat de la conversion. Ceci est possible avec Docotic.Pdf et le module complémentaire.
Cette méthode consiste à créer un nouveau PDF à partir du HTML (le contenu de la superposition) puis à le fusionner avec le PDF existant. Le document final comprendra à la fois le contenu d'origine et la nouvelle superposition. Voici le code qui illustre la méthode.
using var converter = await HtmlConverter.CreateAsync();
var options = new HtmlConversionOptions();
options.Page.SetSizeInches(4.13, 5.83);
string htmlCode =
"<div style=\"position: absolute; top: 270px; right: 100px;\">" +
"I would like to put this here</div>";
using var htmlPdf = await converter.CreatePdfFromStringAsync(htmlCode, options);
using var pdf = new PdfDocument("pdf-to-merge-with.pdf");
var xObj = pdf.CreateXObject(htmlPdf.Pages[0]);
pdf.Pages[0].Canvas.DrawXObject(xObj, 0, 0);
pdf.Save("out.pdf");
Il est important de spécifier une taille de page pour la superposition. En général, la taille doit être égale à la taille de la page que vous souhaitez superposer. Vous devrez ensuite produire le nouveau PDF avec le contenu de la superposition. Veuillez noter que l'arrière-plan est transparent par défaut. Vous pouvez modifier l'arrière-plan en exécutant un script avant la conversion si nécessaire.
Il est temps d'ouvrir le PDF existant. Ce document doit créer un XObject à partir d'une page du PDF généré. Le code dessine ensuite le XObject au-dessus de la page existante.
Le projet de test complet avec un exemple de source PDF se trouve dans le référentiel d'exemples Docotic.Pdf.
Convertir SVG en PDF en C#
Utilisez le convertisseur HTML vers PDF pour créer un PDF à partir d'images avec des graphiques vectoriels évolutifs. Le code suivant montre la manière la plus simple d'effectuer la conversion :
using var converter = await HtmlConverter.CreateAsync();
var uri = new Uri("https://bitmiracle.com/images/team.svg");
using var pdf = await converter.CreatePdfAsync(uri);
pdf.Save("out.pdf");
Le convertisseur utilise la largeur et/ou la hauteur spécifiées dans l'image SVG pour produire une sortie de haute qualité de la taille correcte.
Vous pouvez produire une sortie d'une taille différente en utilisant les options de personnalisation. Il est possible d'ajouter l'image convertie à un autre PDF.
Découvrez le projet de test complet sur GitHub.