Comment exporter un PDF en C# | IronPDF

C&#35 ; Tutoriel d'exemple de code d'exportation au format PDF

This article was translated from English: Does it need improvement?
Translated
View the article in English

Utilisez IronPDF pour exporter du contenu HTML vers PDF en C# avec des méthodes simples comme SaveAs(), Stream et BinaryData. Cette bibliothèque PDF C# permet aux développeurs de convertir de manière programmatique des documents HTML en PDF et de les servir aux navigateurs web ou de les enregistrer sur le disque.

IronPDF est une Bibliothèque PDF C# qui vous permet d'utiliser C# pour enregistrer votre HTML en tant que PDF. Cela permet également aux développeurs C# / VB d'éditer des documents PDF par programmation. Qu'il s'agisse de générer des rapports, de créer des factures ou de convertir des pages web, IronPDF constitue une solution robuste pour la génération de PDF dans les applications C#.

Démarrage rapide : Exporter du HTML vers PDF en C# avec IronPDF

Exportez votre contenu HTML au format PDF en C# à l'aide d'IronPDF. Ce guide vous montre comment convertir du HTML en un document PDF et l'enregistrer avec seulement quelques lignes de code. IronPDF simplifie la génération de PDF, permettant aux développeurs d'intégrer la fonctionnalité d'exportation de PDF dans leurs applications.

  1. Installez IronPDF avec le Gestionnaire de Packages NuGet

    PM > Install-Package IronPdf
  2. Copiez et exécutez cet extrait de code.

    new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>HelloPDF</h1>").SaveAs("myExportedFile.pdf");
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit

    arrow pointer


Quelles sont les différentes options d'enregistrement des PDF ?

Lorsque vous travaillez avec des documents PDF en C#, IronPDF propose plusieurs options pour enregistrer et exporter vos PDF générés. Chaque méthode répond à des cas d'utilisation différents, du simple stockage de fichiers à la diffusion de PDF dans des applications web. Les sections suivantes couvrent les options disponibles pour exporter et enregistrer des PDF en C#.

Comment Enregistrer un PDF sur le Disque

Utilisez la méthode PdfDocument.SaveAs pour enregistrer votre PDF sur le disque. Il s'agit de l'approche la plus simple pour les applications de bureau ou lorsque vous devez stocker des PDF de manière permanente sur le serveur.

// Complete example for saving PDF to disk
using IronPdf;

// Initialize the Chrome PDF renderer
var renderer = new ChromePdfRenderer();

// Create HTML content with styling
string htmlContent = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        h1 { color: #333; }
        .content { line-height: 1.6; }
    </style>
</head>
<body>
    <h1>Invoice #12345</h1>
    <div class='content'>
        <p>Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
        <p>Thank you for your business!</p>
    </div>
</body>
</html>";

// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Save to disk with standard method
pdf.SaveAs("invoice_12345.pdf");

// Save with password protection for sensitive documents
pdf.Password = "secure123";
pdf.SaveAs("protected_invoice_12345.pdf");
// Complete example for saving PDF to disk
using IronPdf;

// Initialize the Chrome PDF renderer
var renderer = new ChromePdfRenderer();

// Create HTML content with styling
string htmlContent = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; margin: 40px; }
        h1 { color: #333; }
        .content { line-height: 1.6; }
    </style>
</head>
<body>
    <h1>Invoice #12345</h1>
    <div class='content'>
        <p>Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
        <p>Thank you for your business!</p>
    </div>
</body>
</html>";

// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

// Save to disk with standard method
pdf.SaveAs("invoice_12345.pdf");

// Save with password protection for sensitive documents
pdf.Password = "secure123";
pdf.SaveAs("protected_invoice_12345.pdf");
$vbLabelText   $csharpLabel

Cette méthode permet d'ajouter une protection par mot de passe. Consultez l'article suivant pour en savoir plus sur la signature numérique des PDF exportés : 'Signer numériquement un document PDF.' Pour des options de sécurité supplémentaires, consultez notre guide sur les autorisations et mots de passe pour les PDF.

Comment enregistrer un fichier PDF dans MemoryStream en C# (System.IO.MemoryStream)

La propriété IronPdf.PdfDocument.Stream enregistre le PDF en mémoire à l'aide d'un System.IO.MemoryStream. Cette approche est idéale lorsque vous devez manipuler les données PDF en mémoire ou les transmettre à d'autres méthodes sans créer de fichiers temporaires. En savoir plus sur le travail avec les flux de mémoire PDF.

// Example: Save PDF to MemoryStream
using IronPdf;
using System.IO;

var renderer = new ChromePdfRenderer();

// Render HTML content
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Monthly Report</h1><p>Sales figures...</p>");

// Get the PDF as a MemoryStream
MemoryStream stream = pdf.Stream;

// Example: Upload to cloud storage or database
// UploadToCloudStorage(stream);

// Example: Email as attachment without saving to disk
// EmailService.SendWithAttachment(stream, "report.pdf");

// Remember to dispose of the stream when done
stream.Dispose();
// Example: Save PDF to MemoryStream
using IronPdf;
using System.IO;

var renderer = new ChromePdfRenderer();

// Render HTML content
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Monthly Report</h1><p>Sales figures...</p>");

// Get the PDF as a MemoryStream
MemoryStream stream = pdf.Stream;

// Example: Upload to cloud storage or database
// UploadToCloudStorage(stream);

// Example: Email as attachment without saving to disk
// EmailService.SendWithAttachment(stream, "report.pdf");

// Remember to dispose of the stream when done
stream.Dispose();
$vbLabelText   $csharpLabel

Comment Enregistrer en Données Binaires

La propriété IronPdf.PdfDocument.BinaryData exporte le document PDF sous forme de données binaires en mémoire. Ces outils sont particulièrement utiles pour le stockage de bases de données ou pour l'intégration d'API nécessitant des tableaux d'octets.

Cela génère le PDF sous la forme d'un ByteArray, qui est exprimé en C# comme byte [].

// Example: Convert PDF to binary data
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering options for better quality
renderer.RenderingOptions = new ChromePdfRenderOptions()
{
    MarginTop = 20,
    MarginBottom = 20,
    MarginLeft = 10,
    MarginRight = 10,
    PaperSize = IronPdf.Rendering.PdfPaperSize.A4
};

// Render content to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Contract Document</h1>");

// Get binary data
byte[] binaryData = pdf.BinaryData;

// Example: Store in database
// database.StorePdfDocument(documentId, binaryData);

// Example: Send via API
// apiClient.UploadDocument(binaryData);
// Example: Convert PDF to binary data
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering options for better quality
renderer.RenderingOptions = new ChromePdfRenderOptions()
{
    MarginTop = 20,
    MarginBottom = 20,
    MarginLeft = 10,
    MarginRight = 10,
    PaperSize = IronPdf.Rendering.PdfPaperSize.A4
};

// Render content to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Contract Document</h1>");

// Get binary data
byte[] binaryData = pdf.BinaryData;

// Example: Store in database
// database.StorePdfDocument(documentId, binaryData);

// Example: Send via API
// apiClient.UploadDocument(binaryData);
$vbLabelText   $csharpLabel

Pour des scénarios plus avancés impliquant la manipulation de données binaires, consultez notre guide sur la conversion de PDF en MemoryStream.

Comment Servir depuis un Serveur Web vers un Navigateur

Pour servir un PDF sur le web, nous devons l'envoyer en tant que données binaires plutôt que HTML. Ceci est essentiel pour les applications web où les utilisateurs doivent télécharger ou visualiser des PDF directement dans leurs navigateurs. IronPDF s'intègre à la fois aux applications MVC et aux applications ASP.NET traditionnelles.

Exportation PDF MVC

Dans les applications MVC modernes, la diffusion de PDF est simple grâce à l'utilisation de FileStreamResult. Cette approche fonctionne bien avec les applications .NET Core MVC :

// MVC Controller method for PDF export
public IActionResult DownloadInvoice(int invoiceId)
{
    // Generate your HTML content
    string htmlContent = GenerateInvoiceHtml(invoiceId);

    // Create PDF using IronPDF
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

    // Get the PDF stream
    MemoryStream stream = pdf.Stream;

    // Reset stream position
    stream.Position = 0;

    // Return file to browser - will prompt download
    return new FileStreamResult(stream, "application/pdf")
    {
        FileDownloadName = $"invoice_{invoiceId}.pdf"
    };
}

// Alternative: Display PDF in browser instead of downloading
public IActionResult ViewInvoice(int invoiceId)
{
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(GenerateInvoiceHtml(invoiceId));

    // Return PDF for browser viewing
    return File(pdf.BinaryData, "application/pdf");
}
// MVC Controller method for PDF export
public IActionResult DownloadInvoice(int invoiceId)
{
    // Generate your HTML content
    string htmlContent = GenerateInvoiceHtml(invoiceId);

    // Create PDF using IronPDF
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

    // Get the PDF stream
    MemoryStream stream = pdf.Stream;

    // Reset stream position
    stream.Position = 0;

    // Return file to browser - will prompt download
    return new FileStreamResult(stream, "application/pdf")
    {
        FileDownloadName = $"invoice_{invoiceId}.pdf"
    };
}

// Alternative: Display PDF in browser instead of downloading
public IActionResult ViewInvoice(int invoiceId)
{
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(GenerateInvoiceHtml(invoiceId));

    // Return PDF for browser viewing
    return File(pdf.BinaryData, "application/pdf");
}
$vbLabelText   $csharpLabel

Exportation PDF ASP.NET

Pour les applications ASP.NET WebForms traditionnelles, vous pouvez servir les PDF directement via l'objet Response :

// ASP.NET WebForms PDF export
protected void ExportButton_Click(object sender, EventArgs e)
{
    // Create your PDF document
    var renderer = new ChromePdfRenderer();

    // Configure rendering options
    renderer.RenderingOptions = new ChromePdfRenderOptions()
    {
        PaperSize = IronPdf.Rendering.PdfPaperSize.Letter,
        PrintHtmlBackgrounds = true,
        CreatePdfFormsFromHtml = true
    };

    // Generate PDF from current page or custom HTML
    PdfDocument MyPdfDocument = renderer.RenderHtmlAsPdf(GetReportHtml());

    // Retrieves the PDF binary data
    byte[] Binary = MyPdfDocument.BinaryData;

    // Clears the existing response content
    Response.Clear();

    // Sets the response content type to 'application/octet-stream', suitable for PDF files
    Response.ContentType = "application/octet-stream";

    // Add content disposition header for download
    Response.AddHeader("Content-Disposition", 
        "attachment; filename=report_" + DateTime.Now.ToString("yyyyMMdd") + ".pdf");

    // Writes the binary data to the response output stream
    Context.Response.OutputStream.Write(Binary, 0, Binary.Length);

    // Flushes the response to send the data to the client
    Response.Flush();

    // End the response
    Response.End();
}
// ASP.NET WebForms PDF export
protected void ExportButton_Click(object sender, EventArgs e)
{
    // Create your PDF document
    var renderer = new ChromePdfRenderer();

    // Configure rendering options
    renderer.RenderingOptions = new ChromePdfRenderOptions()
    {
        PaperSize = IronPdf.Rendering.PdfPaperSize.Letter,
        PrintHtmlBackgrounds = true,
        CreatePdfFormsFromHtml = true
    };

    // Generate PDF from current page or custom HTML
    PdfDocument MyPdfDocument = renderer.RenderHtmlAsPdf(GetReportHtml());

    // Retrieves the PDF binary data
    byte[] Binary = MyPdfDocument.BinaryData;

    // Clears the existing response content
    Response.Clear();

    // Sets the response content type to 'application/octet-stream', suitable for PDF files
    Response.ContentType = "application/octet-stream";

    // Add content disposition header for download
    Response.AddHeader("Content-Disposition", 
        "attachment; filename=report_" + DateTime.Now.ToString("yyyyMMdd") + ".pdf");

    // Writes the binary data to the response output stream
    Context.Response.OutputStream.Write(Binary, 0, Binary.Length);

    // Flushes the response to send the data to the client
    Response.Flush();

    // End the response
    Response.End();
}
$vbLabelText   $csharpLabel

Scénarios d'exportation avancés

Exportation PDF par lots

Lorsque vous traitez plusieurs PDF, vous pouvez optimiser le processus d'exportation :

// Batch export multiple PDFs to a zip file
public void ExportMultiplePdfsAsZip(List<string> htmlDocuments, string zipFilePath)
{
    using (var zipArchive = ZipFile.Open(zipFilePath, ZipArchiveMode.Create))
    {
        var renderer = new ChromePdfRenderer();

        for (int i = 0; i < htmlDocuments.Count; i++)
        {
            // Render each HTML document
            PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlDocuments[i]);

            // Add to zip archive
            var entry = zipArchive.CreateEntry($"document_{i + 1}.pdf");
            using (var entryStream = entry.Open())
            {
                pdf.Stream.CopyTo(entryStream);
            }
        }
    }
}
// Batch export multiple PDFs to a zip file
public void ExportMultiplePdfsAsZip(List<string> htmlDocuments, string zipFilePath)
{
    using (var zipArchive = ZipFile.Open(zipFilePath, ZipArchiveMode.Create))
    {
        var renderer = new ChromePdfRenderer();

        for (int i = 0; i < htmlDocuments.Count; i++)
        {
            // Render each HTML document
            PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlDocuments[i]);

            // Add to zip archive
            var entry = zipArchive.CreateEntry($"document_{i + 1}.pdf");
            using (var entryStream = entry.Open())
            {
                pdf.Stream.CopyTo(entryStream);
            }
        }
    }
}
$vbLabelText   $csharpLabel

Exportation conditionnelle basée sur les autorisations de l'utilisateur

// Export with different options based on user role
public byte[] ExportPdfWithPermissions(string htmlContent, UserRole userRole)
{
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

    // Apply security based on user role
    if (userRole == UserRole.Guest)
    {
        // Restrict printing and copying for guests
        pdf.SecuritySettings.AllowUserPrinting = false;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;
    }
    else if (userRole == UserRole.Standard)
    {
        // Allow printing but not editing
        pdf.SecuritySettings.AllowUserPrinting = true;
        pdf.SecuritySettings.AllowUserEditing = false;
    }

    return pdf.BinaryData;
}
// Export with different options based on user role
public byte[] ExportPdfWithPermissions(string htmlContent, UserRole userRole)
{
    var renderer = new ChromePdfRenderer();
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);

    // Apply security based on user role
    if (userRole == UserRole.Guest)
    {
        // Restrict printing and copying for guests
        pdf.SecuritySettings.AllowUserPrinting = false;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;
    }
    else if (userRole == UserRole.Standard)
    {
        // Allow printing but not editing
        pdf.SecuritySettings.AllowUserPrinting = true;
        pdf.SecuritySettings.AllowUserEditing = false;
    }

    return pdf.BinaryData;
}
$vbLabelText   $csharpLabel

Bonnes pratiques pour l'exportation PDF

Lorsque vous exportez des PDF dans des applications de production, tenez compte de ces bonnes pratiques :

  1. Gestion de la mémoire : Pour les PDF volumineux ou les applications à fort trafic, éliminez correctement les objets et les flux PDF afin d'éviter les fuites de mémoire. Envisagez d'utiliser les méthodes async pour de meilleures performances.
  2. Gestion des erreurs : Mettez toujours en œuvre une gestion des erreurs appropriée lors de l'exportation de PDF, en particulier dans les applications web où des problèmes de réseau peuvent survenir.
  3. Compression : Pour les PDF volumineux, utilisez la compression PDF afin de réduire la taille du fichier avant de l'envoyer aux utilisateurs.
  4. Métadonnées : définissez les métadonnées PDF appropriées, notamment le titre, l'auteur et la date de création, pour une meilleure gestion des documents.
  5. Compatibilité multiplateforme : veillez à ce que votre fonctionnalité d'exportation fonctionne sur différentes plateformes. IronPDF prend en charge Windows, Linux et macOS.

Conclusion

IronPDF offre des options complètes pour l'exportation de PDF dans les applications C#, depuis les simples sauvegardes de fichiers jusqu'aux scénarios complexes de serveurs web. L'utilisation de la méthode d'exportation appropriée à votre cas d'utilisation vous permet de générer et de fournir efficacement des documents PDF à vos utilisateurs tout en respectant les normes de sécurité et de performance.

Questions Fréquemment Posées

Comment exporter du contenu HTML au format PDF en C# ?

Vous pouvez exporter du HTML au format PDF en C# à l'aide de la classe ChromePdfRenderer d'IronPDF. Il vous suffit de créer une instance de rendu, d'utiliser la méthode RenderHtmlAsPdf() pour convertir votre contenu HTML, puis de l'enregistrer à l'aide de la méthode SaveAs(). IronPDF facilite la conversion de chaînes HTML, de fichiers ou d'URL directement en documents PDF.

Quelles sont les différentes méthodes pour enregistrer un PDF à l'aide de C# ?

IronPDF propose plusieurs méthodes pour enregistrer les PDF : SaveAs() pour l'enregistrement sur disque, Stream pour servir les PDF dans les applications web sans créer de fichiers temporaires, et BinaryData pour obtenir le PDF sous la forme d'un tableau d'octets. Chaque méthode d'IronPDF répond à différents cas d'utilisation, du simple stockage de fichiers à la diffusion dynamique sur le web.

Puis-je enregistrer un PDF sur la mémoire plutôt que sur le disque ?

Oui, IronPDF vous permet d'enregistrer des PDF en mémoire à l'aide de System.IO.MemoryStream. Ceci est utile pour les applications web où vous voulez servir les PDF directement aux utilisateurs sans créer de fichiers temporaires sur le serveur. Vous pouvez utiliser la propriété Stream ou convertir le PDF en données binaires.

Comment ajouter une protection par mot de passe lors de l'enregistrement d'un PDF ?

IronPDF permet la protection par mot de passe en définissant la propriété Password sur l'objet PdfDocument avant l'enregistrement. Il suffit d'attribuer une chaîne de mots de passe à pdf.Password, puis d'utiliser SaveAs() pour créer un fichier PDF protégé dont l'ouverture nécessite le mot de passe.

Puis-je envoyer un PDF directement aux navigateurs web sans l'enregistrer sur le disque ?

Oui, IronPDF vous permet de servir des PDF directement aux navigateurs web en tant que données binaires. Vous pouvez utiliser la propriété BinaryData pour obtenir le PDF sous la forme d'un tableau d'octets et le servir par le biais du flux de réponse de votre application web, ce qui élimine le besoin de stockage de fichiers temporaires.

Quel est le moyen le plus simple de convertir et d'enregistrer HTML en PDF en une seule ligne ?

IronPDF propose une solution en une ligne : new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("Votre HTML").SaveAs("output.pdf"). Cela permet de créer un moteur de rendu, de convertir le HTML en PDF et de l'enregistrer sur le disque en une seule instruction.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Revu par
Jeff Fritz
Jeffrey T. Fritz
Responsable principal du programme - Équipe de la communauté .NET
Jeff est également responsable principal du programme pour les équipes .NET et Visual Studio. Il est le producteur exécutif de la série de conférences virtuelles .NET Conf et anime 'Fritz and Friends', une diffusion en direct pour développeurs qui est diffusée deux fois par semaine où il parle de technologie et écrit du code avec les téléspectateurs. Jeff écrit des ateliers, des présentations et prévoit du contenu pour les plus grands événements de développement Microsoft, y compris Microsoft Build, Microsoft Ignite, .NET Conf et le sommet Microsoft MVP
Prêt à commencer?
Nuget Téléchargements 17,803,474 | Version : 2026.3 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronPdf
exécuter un échantillon Regardez votre code HTML se transformer en PDF.