using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Le tutoriel suivant vous guidera à travers le processus d'utilisation de IronPDF comme générateur de PDF en C#. Il couvre les bases ainsi que de nombreux sujets avancés de C# PDF.
HTML vers PDF C#
Télécharger la bibliothèque C# pour convertir HTML en PDF
La démonstration se compose des exemples Hello World, RenderHtmlAsPdf et RenderUrlAsPdf. Tous les exemples peuvent être trouvés dans les projets correspondants de la solution IronPDF Demo.
Étape 1 : Installation
Vous pouvez installer IronPDF soit via NuGet. Le nom du package est IronPDF NuGet Package.
Une fois IronPDF installé et référencé dans votre projet, vous pouvez commencer à l'utiliser immédiatement en tapant quelques chaînes de caractères :
var ChromePdfRenderer = new ChromePdfRenderer(); // new instance of ChromePdfRenderer
var ChromePdfRenderer = new ChromePdfRenderer(); // new instance of ChromePdfRenderer
Dim ChromePdfRenderer As New ChromePdfRenderer() ' new instance of ChromePdfRenderer
$vbLabelText $csharpLabel
puis si vous devez transformer du HTML en PDF
// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
// html to turn into pdf
var html = @"<h1>Hello World!</h1><br><p>This is IronPdf.</p>";
// turn html to pdf
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"));
' html to turn into pdf
Dim html = "<h1>Hello World!</h1><br><p>This is IronPdf.</p>"
' turn html to pdf
Dim pdf = ChromePdfRenderer.RenderHtmlAsPdf(html)
' save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRenderer.Pdf"))
$vbLabelText $csharpLabel
ou si vous voulez transformer une page web en fichier PDF
// uri of the page to turn into pdf
var uri = new Uri("http://www.google.com/ncr");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
// uri of the page to turn into pdf
var uri = new Uri("http://www.google.com/ncr");
// turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri);
// save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"));
' uri of the page to turn into pdf
Dim uri As New Uri("http://www.google.com/ncr")
' turn page into pdf
pdf = ChromePdfRenderer.RenderUrlAsPdf(uri)
' save resulting pdf into file
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdf.Pdf"))
$vbLabelText $csharpLabel
Et c'est tout !
Les résultats correspondants sont les suivants :
Le résultat de la conversion du HTML en PDF**
Le résultat de la conversion d'une page web en PDF
L'exemple de code se trouve dans le projet IronPDFDemo.HelloWorld.
Étape 3 : RenderHtmlAsPdf
Exemple 1
Pour évaluer un exemple plus concret, imaginons une facture HTML qui doit être transformée en PDF. Voici le code qui permet de le faire.
Remarque : Vous pouvez trouver le fichier HTML de la facture dans le projet IronPDFDemo.DemoWebSite (~/Static/TestInvoice1.html). Veuillez noter que la facture comporte une feuille de style CSS personnalisée pour le type de média "impression".
La facture source se présente comme suit dans le navigateur :
Pour transformer ce fichier en fichier PDF, on utilise des codes similaires à ceux de l'exemple HelloWorld ci-dessus, la différence étant le fichier HTML source.
// read html from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var ChromePdfRenderer = new ChromePdfRenderer();
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
// read html from file
var html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"));
var ChromePdfRenderer = new ChromePdfRenderer();
using var pdf = ChromePdfRenderer.RenderHtmlAsPdf(html);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"));
' read html from file
Dim html = File.ReadAllText(Path.Combine(Directory.GetCurrentDirectory(), "TestInvoice1.html"))
Dim ChromePdfRenderer As New ChromePdfRenderer()
Dim pdf = ChromePdfRenderer.RenderHtmlAsPdf(html)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "ChromePdfRendererExample1.Pdf"))
$vbLabelText $csharpLabel
Le résultat est le suivant :
Générer un fichier PDF à partir de HTML
Ça a l'air super ! Vous trouverez l'exemple de code dans le projet IronPDFDemo.RenderHtmlAdPdfDemo.
Cette section permettra de personnaliser le PDF résultant de l'exemple 1. Par exemple, elle ajoutera des marges personnalisées, un en-tête avec le titre du document, un pied de page avec la date de création et les numéros de page, ainsi que des feuilles de style CSS personnalisées pour le type de média "impression" d'une facture standard. Pour ce faire, une instance de ChromePdfRenderOptions est initialisée et passée dans le constructeur ChromePdfRenderer.
var pdfRenderingOptions= new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
var pdfRenderingOptions= new ChromePdfRenderOptions()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
};
var chromePdfRenderer = new ChromePdfRenderer(pdfRenderingOptions);
Dim pdfRenderingOptions= New ChromePdfRenderOptions() With {
.MarginTop = 50,
.MarginBottom = 50,
.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
},
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
}
Dim chromePdfRenderer As New ChromePdfRenderer(pdfRenderingOptions)
$vbLabelText $csharpLabel
Astuce : Au lieu de passer des options en tant que paramètre dans le constructeur, vous pouvez définir le champ correspondant pour une instance de ChromePdfRenderer :
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
var chromePdfRenderer = new ChromePdfRenderer();
chromePdfRenderer.RenderingOptions = pdfRenderingOptions;
Dim chromePdfRenderer As New ChromePdfRenderer()
chromePdfRenderer.RenderingOptions = pdfRenderingOptions
$vbLabelText $csharpLabel
Note : Les fonctionnalités d'en-tête et de pied de page prennent en charge la fusion, ce qui signifie que tous les champs de fusion ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}) peuvent être remplis avec les données correspondantes.
Le reste du code est identique à celui de l'exemple 1. Le résultat est le suivant :
Générer une facture avec en-tête et pied de page
Les marges personnalisées, les en-têtes, les pieds de page et les feuilles de style CSS pour le type de média "impression" sont maintenant en place. Vous trouverez l'exemple de code dans le projet IronPDFDemo.RenderHtmlAdPdfDemo. Plus de paramètres peuvent être trouvés dans la référence de l'API IronPDF.
Étape 4 : RenderUrlAsPdf
Mise en place
Pour exécuter les échantillons de cette section, vous devez héberger localement le site IronPDFDemo.DemoWebSite. Pour ce faire, dans IIS Express :
Naviguer vers DemoWebSite
Clic droit > Définir comme projet de démarrage
Démarrer sans débogage (Ctrl+F5)
Accédez à votre {baseurl}/Static/TestInvoice1.html pour vous assurer qu'il fonctionne. Ceci est l'URL http://localhost:51169/Static/TestInvoice1.html (sera la même pour vous si vous ne modifiez pas les paramètres du projet correspondants).
Exemple 1
Dans cette section, la facture hébergée de DemoWebSite est convertie en PDF en utilisant le même code que celui de l'exemple HelloWorld. La différence réside dans l'URL hébergée :
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
var uri = new Uri("http://localhost:51169/Static/TestInvoice1.html");
var urlToPdf = new ChromePdfRenderer();
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"));
Dim uri As New Uri("http://localhost:51169/Static/TestInvoice1.html")
Dim urlToPdf = New ChromePdfRenderer()
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample1.Pdf"))
$vbLabelText $csharpLabel
Le résultat est le suivant :
Générer un site web hébergé en PDF
C'est très bien et ça ressemble à ce que l'on attendait. Vous trouverez l'exemple de code dans le projet IronPDFDemo.RenderUrlAsPdfDemo.
Exemple 2
De nombreux sites web sont souvent protégés par une méthode d'authentification. Cette section utilise un nom d'utilisateur et un mot de passe fournis pendant le processus de rendu d'un fichier PDF avec quelques personnalisations : marges personnalisées, un en-tête avec le titre du document, un pied de page avec la date de création et les pages, et un CSS personnalisé pour le type de média "impression". L'URL pour la facture est http://localhost:51169/Invoice.
L'accès à http://localhost:51169/Invoice aboutit au formulaire « Authentification requise » :
Formulaire d'authentification requis
Note : Les identifiants sont "testUser"/"testPassword".
Comment contourner l'authentification ? En définissant HttpLoginCredentials :
var uri = new Uri("http://localhost:51169/Invoice");
var urlToPdf = new ChromePdfRenderer
{
PrintOptions = new ChromePdfRenderer()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
// setting login credentials to bypass basic authentication
LoginCredentials = new HttpLoginCredentials()
{
NetworkUsername = "testUser",
NetworkPassword = "testPassword"
}
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
var uri = new Uri("http://localhost:51169/Invoice");
var urlToPdf = new ChromePdfRenderer
{
PrintOptions = new ChromePdfRenderer()
{
MarginTop = 50,
MarginBottom = 50,
TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
},
TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
},
CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
// setting login credentials to bypass basic authentication
LoginCredentials = new HttpLoginCredentials()
{
NetworkUsername = "testUser",
NetworkPassword = "testPassword"
}
};
using var pdf = urlToPdf.RenderUrlAsPdf(uri);
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"));
Dim uri As New Uri("http://localhost:51169/Invoice")
Dim urlToPdf = New ChromePdfRenderer With {
.PrintOptions = New ChromePdfRenderer() With {
.MarginTop = 50,
.MarginBottom = 50,
.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
},
.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
},
.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
},
.LoginCredentials = New HttpLoginCredentials() With {
.NetworkUsername = "testUser",
.NetworkPassword = "testPassword"
}
}
Dim pdf = urlToPdf.RenderUrlAsPdf(uri)
pdf.SaveAs(Path.Combine(Directory.GetCurrentDirectory(), "UrlToPdfExample2.Pdf"))
$vbLabelText $csharpLabel
Note : La même personnalisation est utilisée que pour l'Exemple2 de ChromePdfRenderer.
Le résultat est le suivant :
Générer un site HTML avec des identifiants vers un fichier PDF
Tout est en place. Vous trouverez un exemple de code dans le projet IronPDFDemo.RenderUrlAsPdfDemo. Si vous vous demandez à quoi ressemblerait le résultat sans HttpLoginCredentials, le voici :
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier