Comment générer des fichiers PDF dans .NET Core

Convert HTML to PDF in .NET Core: End-to-End Guide for URLs, Razor Views, Security & Docker

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

Générer des PDF de haute fidélité directement à partir du HTML est une exigence courante dans les applications modernes .NET - rapports, factures et billets nécessitent tous une sortie pixel-perfect qui correspond à l'interface utilisateur du web. IronPDF simplifie ce flux de travail en exposant une API unique en C# pour rendre le HTML, les vues Razor et les sites web complets en documents PDF conformes aux normes. À la fin de ce guide, un développeur pourra convertir des URL, du HTML brut ou des vues MVC dans un projet ASP.NET Core, et déployer le même code sous Windows, Linux, Docker ou des environnements serverless.

ConseilsPour les problèmes de mise en page, IronPDF livre un débogueur Chrome sans tête qui aide à diagnostiquer les bizarreries CSS, JavaScript et media-query avant que le PDF ne soit rendu. Consultez le guide dédié HTML à PDF pixel-perfect pour des techniques approfondies.

en-tête rapide :2(Démarrage rapide : Créer un PDF à partir de HTML dans .NET Core)

Convertissez sans effort le HTML en PDF dans .NET Core en utilisant la bibliothèque IronPDF. Ce guide fournit un exemple simple pour vous permettre de commencer rapidement en rendant le contenu HTML dans un PDF de haute qualité avec un minimum de code. Idéal pour les développeurs cherchant à intégrer la création de PDF dans leurs applications avec facilité.

Nuget IconGet started making PDFs with NuGet now:

  1. Install IronPDF with NuGet Package Manager

    PM > Install-Package IronPdf

  2. Copy and run this code snippet.

    var pdf = new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>Hello World</h1>");
  3. Deploy to test on your live environment

    Start using IronPDF in your project today with a free trial
    arrow pointer
class="hsg-featured-snippet">

Flux de travail minimal (5 étapes)

  1. Installer le package NuGet IronPdf
  2. Convertir uneURLde site web avec RenderUrlAsPdf
  3. Rendre du HTML brut via RenderHtmlAsPdf
  4. Exporter une vue MVC en PDF
  5. Régler la taille du papier, les marges, les en-têtes et pieds de page
La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). ## Liste de vérification rapide 1. **Installer** – `Install-Package IronPdf` 2. **Rendre une URL** – `ChromePdfRenderer.RenderUrlAsPdf()` 3. **Rendre du HTML brut** – `ChromePdfRenderer.RenderHtmlAsPdf()` 4. **Exporter une vue Razor** – `ChromePdfRenderer.RenderHtmlAsPdfAsync()` 5. **Ajuster la sortie** – utiliser `ChromePdfRenderer.RenderingOptions` ### Ce que ce tutoriel couvre - Conversion d'URL, de chaîne HTML et de vue Razor - Configuration du papier, des marges et du type de média - Déploiement multiplateforme (Windows, Linux, Docker) - Post-traitement : fusionner, ajouter un filigrane, protéger par mot de passe et signer numériquement des PDF - Exemple de bout en bout : application MVC de réservation de billets #### Commencer avec IronPDF

Commencez à utiliser IronPDF dans votre projet aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer
--- ## Comment installer la bibliothèque PDF dans .NET Core ? Installer la bibliothèque est une simple commande dans tout projet .NET 8 et reste compatible avec la préversion de .NET 9 et la prochaine version .NET 10. Utilisez la console du gestionnaire de packages de NuGet et le gestionnaire de packages résoudra automatiquement chaque dépendance pour Windows, Linux, Docker et les cibles serverless. ```shell PM> Install-Package IronPdf # .NET 8 LTS and higher ```
Veuillez noter**Besoin de CLI ?** La même commande fonctionne avec `dotnet add package IronPdf` dans votre dossier de projet.
Une fois installé, confirmez que tout est en place en convertissant n'importe quelleURLpublique : ```csharp // Program.cs — .NET 8 LTS using IronPdf; var renderer = new ChromePdfRenderer(); // Render a live website to PDF using PdfDocument pdf = renderer.RenderUrlAsPdf("https://example.com"); // Persist to disk pdf.SaveAs("website-snapshot.pdf"); ``` ### Comment ça fonctionne - `ChromePdfRenderer` lance une instance Chromium isolée en arrière-plan - aucune installation distincte de Chrome n'est requise. - `RenderUrlAsPdf` capture le DOM entièrement rendu, y compris le contenu piloté par JavaScript, les demandes CSS media queries et les polices. - Le `PdfDocument` résultant expose des méthodes d'assistance pour fusionner, protéger par mot de passe, ou signer numériquement la sortie - capacités couvertes plus tard dans ce tutoriel. For more detail on deployment nuances (Azure App Service, AWS Lambda, on-prem Linux), see the dedicated **[installation guide](/get-started/windows/)** and the **[advanced NuGet setup](/get-started/advanced-installation-nuget/)** pages. Les conseils CI/CD internes pour Docker et les clusters K8s sont abordés dans **[les meilleures pratiques de déploiement Docker](/get-started/ironpdf-docker/)**. --- ## Comment un service .NET Core peut-il convertir uneURLde site web en PDF ? Un simple appel à `RenderUrlAsPdf` suffit : passez n'importe quelleURLpubliquement accessible et IronPDF retourne un PDF pleinement rendu et conforme aux normes. Le code ci-dessous vise .NET 8 LTS et se compile sans modification sur la préversion .NET 9 ainsi que la prochaine version .NET 10 prévue en 2025. ### Exemple pas à pas ```csharp // Program.cs — .NET 8 LTS-compatible using IronPdf; // 1. Activate a license (or trial key) IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"; // 2. Create a reusable renderer instance var renderer = new ChromePdfRenderer { RenderingOptions = { // Force A4 portrait output and apply @media print styles PaperSize = PdfPaperSize.A4, CssMediaType = PdfCssMediaType.Print } }; // 3. Convert Microsoft Docs home page to PDF using PdfDocument pdf = renderer.RenderUrlAsPdf("https://learn.microsoft.com/"); // 4. Save the PDF or stream it from a Web API pdf.SaveAs("docs-offline-copy.pdf"); ``` ### Pourquoi ça fonctionne - `ChromePdfRenderer` lance une instance Chromium isolée - pas de dépendance systémique à Chrome, ce qui maintient les images Docker minces. - `RenderUrlAsPdf` attend la fin du DOM et du JavaScript avant de prendre un instantané, afin que les applications monopages se rendent correctement. - Définir `CssMediaType` sur **Print** informe le moteur d'utiliser des règles spécifiques à l'impression, correspondant à la sortie Save as PDF d'un navigateur. - Le `PdfDocument` résultant peut être chiffré, signé numériquement, fusionné ou transformé en image - capacités couvertes dans les sections ultérieures.
Conseils**Débogage pixel-perfect :** activez `renderer.LoggingOptions.DebugMode = true` et suivez le guide [débogage Chrome sans tête](/how-to/pixel-perfect-html-to-pdf/) pour inspecter les outils de développement en direct lors du rendu.
### Ressources connexes - Référence API – [`ChromePdfRenderer.RenderUrlAsPdf`](https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html#IronPdf_ChromePdfRenderer_RenderUrlAsPdf_System_String_) - Référence API – [`PdfDocument.SaveAs`](https://ironpdf.com/object-reference/api/IronPdf.PdfDocument.html#IronPdf_PdfDocument_SaveAs_System_String_) - Tutoriel – [Déployez IronPDF dans des conteneurs Docker](/get-started/ironpdf-docker/) --- ## Comment convertir du HTML brut en PDF dans .NET Core ? Passer une chaîne HTML — ou le balisage d'une vue Razor rendue — à `ChromePdfRenderer.RenderHtmlAsPdf` produit instantanément un PDF conforme aux normes. La méthode lance le moteur Chromium intégré d'IronPDF, donc aucune installation de navigateur externe ou dépendance WebView n'est requise. Le même code illustré ci-dessous se compile sur .NET 8 LTS aujourd'hui et reste compatible avec .NET 9 et la version .NET 10 prévue en novembre 2025. ### Exemple — générer un PDF à partir d'un fragment HTML ```csharp // Program.cs — compatible with .NET 8 and newer using IronPdf; // Sample HTML fragment (could also be read from a file, Razor view, or CMS) const string html = """ Quarterly Report
ProductRevenue ($)
IronPDF for .NET1,200,000
IronOCR for .NET890,000
IronXL for .NET610,000
"""; // 1. Create a renderer once and reuse it across conversions var renderer = new ChromePdfRenderer { RenderingOptions = { PaperSize = PdfPaperSize.A4, // ISO-standard paper size PaperOrientation = PdfPaperOrientation.Portrait, CssMediaType = PdfCssMediaType.Screen, // Respect on-screen CSS RenderDelay = 100, // Wait 100 ms for JS/animations FallbackEncoding = "utf-8" // Handle non-ASCII correctly } }; // 2. Render the HTML fragment using PdfDocument pdf = renderer.RenderHtmlAsPdf(html); // 3. Persist to disk or return via ASP.NET Core FileStreamResult pdf.SaveAs("q2-report.pdf"); ``` ### Ce que le code démontre - **Embedded Chromium** -- IronPDF bundles the [Chromium engine](/object-reference/api/IronPdf.Rendering.PdfRenderingEngine.html), guaranteeing [HTML5, CSS3, and JavaScript parity](/product-updates/milestones-stability-performance/) with modern browsers. - **Dépendance unique** -- Une [installation NuGet légère](https://nuget.org/packages/IronPdf.Slim) couvre Windows, Linux, Docker, et Azure/AWS sans bibliothèques système supplémentaires. - **Options de rendu** -- `PaperSize`, `CssMediaType`, et `RenderDelay` reflètent les paramètres d'impression du navigateur pour que les PDFs correspondent aux mises en page à l'écran. - **Ciblage à l'épreuve du futur** -- L'API est la même sur .NET 8, .NET 9 STS, et la prochaine version .NET 10, donc [l'entretien à long terme est minimal](https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core). - **Hooks de post-traitement** -- `PdfDocument` expose des assistants pour la fusion, la protection par mot de passe et [les signatures numériques](/examples/digitally-sign-a-pdf/) – chacune couverte plus tard dans ce guide. **Further reading:** see the step-by-step [HTML-string-to-PDF tutorial](/how-to/html-string-to-pdf/) and the full [`ChromePdfRenderer` API documentation](https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html). --- ## Comment une vue ASP .NET Core MVC peut-elle être exportée en PDF ? IronPDF rend une vue Razor entièrement traitée ( `.cshtml` ) de la même manière qu'un navigateur le ferait et diffuse le résultat sous forme de `PdfDocument`. Le flux de travail ci-dessous garde la logique du contrôleur propre, ne nécessite aucun plugin de navigateur et fonctionne sur .NET 8 LTS, .NET 9 preview et la version .NET 10 prévue en novembre 2025. ### Exemple de contrôleur de bout en bout ```csharp // TicketsController.cs — .NET 8 LTS / MVC using IronPdf; using Microsoft.AspNetCore.Mvc; using YourApp.Models; // TicketViewModel public class TicketsController : Controller { private readonly ChromePdfRenderer _renderer; public TicketsController() { _renderer = new ChromePdfRenderer { RenderingOptions = { PaperSize = PdfPaperSize.A5, // Compact ticket size PaperOrientation = PdfPaperOrientation.Portrait, FitToPaperWidth = true, CssMediaType = PdfCssMediaType.Print, Margins = new PdfMargins(5, 10, 5, 10) // mm } }; } // GET /Tickets/Print/42 public async Task Print(int id) { TicketViewModel vm = await _service.GetTicketAsync(id); // 1. Render the Razor view to an HTML string string html = await RazorTemplateEngine.RenderViewAsync( HttpContext, "~/Views/Tickets/Print.cshtml", vm); // 2. Convert HTML → PDF using PdfDocument pdf = _renderer.RenderHtmlAsPdf(html); // 3. Stream back as a file return File(pdf.BinaryData, "application/pdf", $"ticket-{id}.pdf"); } } ``` #### Ce que ce code illustre - **No temporary files** -- the Razor view is rendered in-memory, then passed directly to [`RenderHtmlAsPdf`](/object-reference/api/IronPdf.ChromePdfRenderer.html), avoiding disk I/O and temp-folder [race conditions](/examples/async/). - **Sortie de taille de billet** -- `PaperSize = A5` et des marges étroites gardent les billets à imprimer à domicile compacts. - **Styles d'impression cohérents** -- `CssMediaType = Print` applique les mêmes règles CSS `@media print` que les navigateurs utilisent. - **Diffusion binaire** -- `pdf.BinaryData` diffuse le document sans toucher au système de fichiers ; idéal pour les points de terminaison API et les fonctions Lambda. - **Renderer réutilisable** -- `ChromePdfRenderer` est instancié une fois par contrôleur, puis réutilisé, minimisant les frais généraux de spawn de processus.
id="pdfOptionsAcc">
class="accordion-item">

id="optPaper">

data-bs-parent="#pdfOptionsAcc">
class="accordion-body">

PaperSize, PaperOrientation, FitToPaperWidth

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0).
class="accordion-item">

id="optMargins">

data-bs-parent="#pdfOptionsAcc">
class="accordion-body">

Margins, Header, Footer, Watermark

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). **Next step:** add encryption, digital signatures, or merge multiple tickets into a single file. See the [merge example](/examples/merge-pdfs/) and the [digital-signature how-to](/examples/digitally-sign-a-pdf/). --- ## Comment ajuster la taille du papier, les marges, les en-têtes, les filigranes et la sécurité avant le rendu ? IronPDF expose un objet unique `ChromePdfRenderOptions` qui contrôle chaque aspect de la sortie – dimensions du papier, orientation, en-têtes et pieds de page, minutage JavaScript, filigranes, chiffrement et signatures numériques – le tout sans plugins de navigateur supplémentaires. ### Exemple de code — appliquer plusieurs options à la fois ```csharp // AdvancedOptions.cs — .NET 8 compatible using IronPdf; var renderer = new ChromePdfRenderer(); // Configure everything in one place renderer.RenderingOptions = new ChromePdfRenderOptions { // 1. Page layout PaperSize = PdfPaperSize.A4, // ISO size PaperOrientation = PdfPaperOrientation.Portrait, Margins = new PdfMargins { Top = 20, Bottom = 25, Left = 15, Right = 15 }, // mm // 2. Timing & media CssMediaType = PdfCssMediaType.Print, // Respect @media print EnableJavaScript = true, RenderDelay = 200, // Wait 200 ms for animations // 3. Headers & footers (HTML gives full design freedom) HtmlHeader = "
Invoice — {{date}}
", HtmlFooter = "
Page {{page}} / {{total-pages}}
", // 4. Watermark Watermark = new HtmlStamp { HtmlTemplate = "
CONFIDENTIALLa clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0).", VerticalAlignment = VerticalAlignment.Center, HorizontalAlignment = HorizontalAlignment.Center }, // 5. Security SecurityOptions = new PdfSecurityOptions { OwnerPassword = "StrongOwnerPwd!", UserPassword = "ReadOnly", AllowUserPrinting = false, AllowUserCopyPasteContent = false } }; // Render any HTML using PdfDocument pdf = renderer.RenderHtmlAsPdf(""); // Digitally sign with a PFX certificate (optional) pdf.SignAndStamp("./certs/company.pfx", "Iron Software", "Bangkok", "Approval"); // Save pdf.SaveAs("advanced-options-demo.pdf"); ``` ### Pourquoi ces options comptent - **`PaperSize`, `Margins` et `CssMediaType`** reflètent la boîte de dialogue d'impression d'un navigateur afin que les mises en page à l'écran et le PDF restent identiques sur Windows, Linux et Docker. - **En-têtes et pieds de page HTML** supportent les jetons Razor, le CSS et le JavaScript – pratique pour les numéros de page dynamiques ou le branding. - **`HtmlStamp`** permet de créer une [marque d'eau personnalisée](/how-to/custom-watermark/) avec un contrôle complet HTML + CSS en une seule ligne. - **[Options de sécurité](/object-reference/api/IronPdf.Security.PdfSecuritySettings.html)** permettent un chiffrement AES 128 bits, des mots de passe propriétaire/utilisateur et des permissions granulaires sans outils tiers. - **[Signatures numériques](/examples/digitally-sign-a-pdf/)** ajoutent un sceau cryptographique directement dans le code, maintenant l'authenticité légale et la preuve de falsification. - Les assistants d'extraction tels que `ExtractAllText` et `ExtractAllImages` inversent le processus lorsque l'analyse est requise. ### Référence rapide — Paramètres populaires
id="advRenderAcc">
class="accordion-item"> ## id="layHead">
data-bs-parent="#advRenderAcc">
class="accordion-body">

`PaperSize`, `PaperOrientation`, `Margins`, `CssMediaType`, `RenderDelay`

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0).
class="accordion-item">

id="headFoot">

data-bs-parent="#advRenderAcc">
class="accordion-body">

HtmlHeader, HtmlFooter, marqueurs dynamiques Razor, jetons de numéro de page

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). **Prochaines tâches :** fusionner plusieurs PDF, extraire du texte et des images, et déployer sur Docker ou serverless.
class="accordion-item"> ## id="wmHead">
data-bs-parent="#advRenderAcc">
class="accordion-body">

`Watermark`, `HtmlStamp`, opacité, alignement

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0).
class="accordion-item">

id="secHead">

data-bs-parent="#advRenderAcc">
class="accordion-body">

SecurityOptions, SignAndStamp, mots de passe propriétaire / utilisateur, AES 128 bits, cachets de certificat

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). **Prochaines tâches :** fusionner plusieurs PDF, extraire du texte et des images, et déployer sur Docker ou serverless. Passez à la section déploiement pour assurer la parité multi-plateformes. ## Comment puis-je déployer du code de génération de PDF sur Docker sous Linux et Windows ? IronPDF est livré en tant que package NuGet autonome, donc la mise en conteneur d'une application ASP.NET Core (ou console) est simple sur Windows et Linux. La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). ### Dockerfile multi-étagé (Ubuntu 22.04)
Veuillez noter**Pourquoi multi-étagé ?** L'image SDK (étape 1) compile le projet ; --- l'image de runtime finale (étape 2) reste légère—< 120 MB — car les outils de build sont rejetés.
Veuillez noter**Conteneurs Windows ?** Remplacez la deuxième étape par `mcr.microsoft.com/dotnet/aspnet:8.0-windowsservercore-ltsc2022` — aucun package supplémentaire n’est requis car les DLL Chromium sont intégrées.
### Script de validation de bout en bout - L'action API appelle en interne `ChromePdfRenderer.RenderUrlAsPdf` de la même manière que dans la section2. - IronPDF démarre son processus Chromium isolé à l'intérieur du conteneur – aucun serveur X n'est requis car il rend sans tête. - L'empreinte mémoire reste sous 200 MB même pendant les rendus lourds. ```dockerfile ####### ---------- stage 1 ---------- FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY ["MyPdfApp.csproj", "."] RUN dotnet restore COPY . . RUN dotnet publish -c Release -o /app/publish ####### ---------- stage 2 ---------- FROM mcr.microsoft.com/dotnet/aspnet:8.0-jammy ######## Install two native libs required by Chromium RUN apt-get update && \ apt-get install -y --no-install-recommends libnss3 libatk1.0-0 && \ rm -rf /var/lib/apt/lists/* WORKDIR /app COPY --from=build /app/publish . ENTRYPOINT ["dotnet", "MyPdfApp.dll"] ```
Conseils**Conseil de dépannage :** Si les journaux du conteneur affichent une erreur **"libnss3.so not found"**, confirmez que `libnss3` et `libatk1.0-0` sont présents. Les images Alpine ne sont *pas* supportées car la bibliothèque musl C manque de symboles requis.
```bash docker build -t pdf-demo . docker run --rm -p 8080:80 pdf-demo ######### ↳ Navigate to http://localhost:8080/api/pdf?url=https://example.com ``` ### Ressources internes - Comment faire – [Exécuter IronPDF sur Azure App Service Linux](/get-started/azure/) - Référence API – [`ChromePdfRenderer` classe](https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderer.html) ## Comment puis-je ouvrir, fusionner, ajouter un filigrane et extraire du contenu de PDF existants dans .NET Core ? IronPDF traite chaque PDF — qu'il soit généré par IronPDF, Adobe® Acrobat ou des outils tiers — comme un objet `PdfDocument` de premier ordre qui peut être ouvert, édité, sécurisé et ré-enregistré sans perte de qualité. La même surface d'API fonctionne sur .NET 8 LTS aujourd'hui et se compile sans modification sur la préversion .NET 9 et la prochaine version .NET 10. - Tutoriel – [Déployez IronPDF dans des conteneurs Docker](/get-started/ironpdf-docker/) ### Exemple unifié — open → merge → watermark → extract ### Pourquoi cela compte --- - **Ouvrir et fusionner** – `PdfDocument.FromFile` charge n'importe quel PDF conforme aux normes, y compris les fichiers chiffrés, tandis que `PdfDocument.Merge` concatène un nombre arbitraire de documents en un seul appel. - **[Ajouter un filigrane](/examples/pdf-watermarking/)** – `ApplyStamp` (alias `HtmlStamp`) intègre des superpositions HTML/CSS entièrement stylisées – logo, code QR, ou texte en diagonale – sur des pages sélectionnées sans tramage. - **Extraction de contenu** – `ExtractAllText` et `ExtractAllImages` extraient du texte brut UTF-8 ou des flux d'images binaires pour l'archivage en aval ou les pipelines IA. - **Prêt pour les signatures numériques** – la même instance de `PdfDocument` peut être scellée avec `SignAndStamp`, produisant des hachages conformes à la RFC 3161 alignés avec les [exigences de signature numérique ISO 32000-2](https://www.iso.org/obp/ui/en/). ```csharp // ManipulateExistingPdf.cs — .NET 8 LTS compatible using IronPdf; using System.Linq; // Step 1: Open two existing files (password-protected PDFs are supported) PdfDocument invoice = PdfDocument.FromFile("invoice.pdf", "ReadOnly"); // open with user pwd PdfDocument tAndCs = PdfDocument.FromFile("terms.pdf"); // no pwd required // Step 2: Merge them (invoice pages first, then T&Cs) PdfDocument mergedPdf = PdfDocument.Merge(invoice, tAndCs); // 1-liner merge // Step 3: Apply a diagonal CONFIDENTIAL watermark to every page mergedPdf.ApplyStamp( "
CONFIDENTIALLa clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0).", verticalAlignment : VerticalAlignment.Center, horizontalAlignment : HorizontalAlignment.Center); // Step 4: Extract all text and the first image for audit purposes string fullText = mergedPdf.ExtractAllText(); var image = mergedPdf.ExtractAllImages().FirstOrDefault(); // Step 5: Save or stream mergedPdf.SaveAs("invoice-with-terms.pdf"); ``` - **Conformité aux normes ouvertes** – IronPDF préserve la structure originale du PDF (polices, couches, métadonnées XMP) afin que la sortie reste compatible avec Adobe® Reader et autres [visualiseurs ISO 32000-1](https://www.iso.org/standard/51502.html). - **À l'épreuve du futur** – L'API évite les assemblées d'intéropérabilité et les appels Win32 GDI, donc le code fonctionne sans modification sur Windows, Linux, Docker, et les futures versions serverless de .NET 10. **Besoin de diviser, faire pivoter ou supprimer des pages ?** Consultez le [tutoriel d'édition page à page](/tutorials/csharp-edit-pdf-complete-tutorial/) pour des opérations granulaires. ## Comment les PDF peuvent-ils être chiffrés et signés numériquement dans .NET Core ? IronPDF sécurise un document en deux étapes : **chiffrement basé sur AES** (mots de passe utilisateur/propriétaire + permissions granulaires) et **signatures numériques X.509** qui scellent le fichier avec un hachage cryptographique. Les deux API se trouvent sur le même objet `PdfDocument`, donc le flux de travail est identique sur .NET 8 LTS aujourd'hui et se compile sans modification sur la préversion .NET 9 et la prochaine version .NET 10. ### Exemple — appliquer AES 256 bits, verrouiller les droits d'impression et ajouter une signature visible ### Dans les coulisses --- - **Chiffrement AES 256** -- IronPDF enveloppe la charge utile avec des [clés AES approuvées par le NIST](/blog/net-help/csharp-aes-encryption/), bloquant l'ouverture non autorisée, l'impression ou le copier-coller. - **Granularité des permissions** -- des propriétés telles que [`AllowUserPrinting` et `AllowUserFormData`](/object-reference/api/IronPdf.Security.PdfSecuritySettings.html) activent ou désactivent les droits par action ; un mot de passe propriétaire est requis pour que toute restriction prenne effet. - **Signatures numériques** -- `SignAndStamp` intègre un horodatage et une chaîne de certificats RFC 3161, créant des hachages manifestant des traces de falsification reconnues par Adobe® Acrobat et d'autres visualiseurs ISO 32000-2. ```csharp // SecureAndSign.cs — .NET 8 LTS compatible using IronPdf; // Step 1: Load an existing PDF (or produce one with RenderHtmlAsPdf) PdfDocument pdf = PdfDocument.FromFile("financial-report.pdf"); // Step 2: Configure AES-256 encryption & permissions pdf.SecuritySettings = new PdfSecuritySettings { EncryptionAlgorithm = PdfEncryptionAlgorithm.AES256Bit, OwnerPassword = "IronAdmin!2025", UserPassword = "ReadOnly", AllowUserPrinting = PdfPrintSecurity.Disabled, AllowUserCopyPasteContent = false, AllowUserAnnotations = false }; // Step 3: Digitally sign with a PFX certificate pdf.SignAndStamp( certificatePath : "./certs/ironsoftware.pfx", authority : "Iron Software Ltd.", location : "Chicago, IL", reason : "Final approval" ); // Step 4: Persist or stream pdf.SaveAs("financial-report-secured-signed.pdf"); ``` - **API unique** -- le chiffrement et la signature modifient la même instance `PdfDocument`, évitant plusieurs passages de fichier et préservant les polices internes, les couches et les métadonnées.
Conseils**Conseil de dépannage :** si Adobe Reader signale « signature invalide », assurez-vous que le PFX contient un certificat racine de confiance et que les chaînes `reason` / `location` sont propres ASCII.
### Paramètres de sécurité de base
id="secAcc">
class="accordion-item"> ## id="encHead">
data-bs-parent="#secAcc">
class="accordion-body">

`PdfSecuritySettings` → `OwnerPassword`, `UserPassword`, `EncryptionAlgorithm`, `AllowUserPrinting`

class="accordion-item"> ## id="sigHead">
data-bs-parent="#secAcc">
class="accordion-body">

`PdfDocument.SignAndStamp` — chemin PFX, autorité, emplacement, raison, horodatage

### Ressources internes pour un approfondissement - **Tutoriel** – [Protéger un PDF par mot de passe](/blog/pdf-tools/how-to-password-protect-pdf-free/) - ExempleSigner numériquement un PDF - **Référence API** – [`PdfSecuritySettings`](/object-reference/api/IronPdf.Security.PdfSecuritySettings.html)

PdfSecuritySettingsOwnerPassword, UserPassword, EncryptionAlgorithm, AllowUserPrinting

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). Le moteur Chromium d'IronPDF rend déjà la plupart des pages en < 1 s sur du matériel moderne, mais le débit peut être multiplié en **regroupant les rendus, en activant le multithreading et en réduisant les frais généraux de Chrome sans tête**.

PdfDocument.SignAndStamp — PFX path, authority, location, reason, timestamp

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La même surface d'API fonctionne sur .NET 8 LTS aujourd'hui et se compile sans modification sur la préversion .NET 9 et la prochaine version .NET 10. for deeper dives - `ChromePdfRenderer` est **[thread-safe](/examples/threading/)**; une instance unique peut desservir des dizaines de tâches concurrentes sans deadlocks. - `Parallel.ForEach` sature chaque cœur de CPU ; --- les serveurs typiques voient 4–6× augmentation du débit par rapport à une boucle unithread. - Si les demandes ASP.NET s'accumulent, [déplacer les rendus lourds vers un service en arrière-plan hébergé ou une file de messages](https://stackoverflow.com/questions/65237160/ironpdf-deadlocks-when-running-in-parallel) pour garder les temps de réponse bas. ### 2. Réduire le coût de démarrage de Chrome sans tête IronPDF livre sa propre version Chrome, mais chaque rendu entraîne une petite taxe de démarrage. ```csharp // BatchRender.cs — Thread-safe on .NET 8+ using IronPdf; using System.Threading.Tasks; var htmlSources = Directory.GetFiles("./html", "*.html"); var renderer = new ChromePdfRenderer(); // reuse 1 instance Parallel.ForEach(htmlSources, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount }, file => { string html = File.ReadAllText(file); using PdfDocument pdf = renderer.RenderHtmlAsPdf(html); pdf.SaveAs(Path.ChangeExtension(file, ".pdf")); }); ``` Pooling aide, et **les conteneurs Linux** doivent inclure deux libs natives : L'absence de l'une ou l'autre bibliothèque se manifeste par une ["`libnss3.so not found`" erreur](https://stackoverflow.com/questions/50701824/limit-chrome-headless-cpu-and-memory-usage) dans les journaux Docker. [problèmes de mémoire et d'utilisateur root](https://issues.chromium.org/40527919) dans les conteneurs. typical servers see 4–6× throughput gains compared with a single-thread loop. - If ASP.NET requests queue up, [move heavy renders to a hosted background service or message queue](https://stackoverflow.com/questions/65237160/ironpdf-deadlocks-when-running-in-parallel) to keep response times low. ### 2. Trim headless-Chrome startup cost IronPDF ships its own Chromium build, but each render incurs a small startup tax. Pooling helps, and **Linux containers** must include two native libs: ```dockerfile RUN apt-get update && \ apt-get install -y --no-install-recommends libnss3 libatk1.0-0 ``` Missing either library manifests as a [“`libnss3.so not found`” error](https://stackoverflow.com/questions/50701824/limit-chrome-headless-cpu-and-memory-usage) in Docker logs. [Recommended Chrome flags (automatically applied by IronPDF)](https://stackoverflow.com/questions/66947545/chrome-headless-not-working-as-root-with-no-sandbox) include `--disable-gpu` and `--no-sandbox` to reduce [memory and root-user issues](https://issues.chromium.org/40527919) in containers. ### 3. Attendez le JavaScript tardif avec `RenderDelay` ou `WaitFor` Les pages qui animent les compteurs ou récupèrent des données après `DOMContentLoaded` peuvent nécessiter un court délai : ```csharp renderer.RenderingOptions.RenderDelay = 200; // ms // OR: renderer.RenderingOptions.JavaScript = "WaitFor('window.doneLoading')"; ``` Voir le **[tutoriel WaitFor](/how-to/waitfor/)** pour des promesses personnalisées et le sondage de DOM. ### 4. Activez la journalisation de débogage pour une demande ```csharp renderer.LoggingOptions.DebugMode = true; renderer.LoggingOptions.LogsToConsole = true; renderer.LoggingOptions.LogFilePath = "./logs/ironpdf-debug.log"; ``` Les traces Live DevTools exposent les polices manquantes, les images en 404 et les événements de timing sans recompilation du code. ### 5. Réutilisez les PDF modèles au lieu de les re-rendre Pour les séries de factures, [créez un **PDF modèle** avec des espaces réservés](/troubleshooting/ironpdf-performance-assistance/) comme `[[name]]` et effectuez un remplacement de texte au lieu de reconstruire un HTML complexe. C'est 10× plus rapide et léger en mémoire. ### Liste de vérification d'ajustement rapide

Parallel.ForEach, async/await, reuse a single ChromePdfRenderer

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0).

Use aspnet:8.0-jammy; install libnss3 + libatk1.0-0; flags --no-sandbox, --disable-gpu

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0).

RenderDelay, WaitFor(), log DevTools timeline for slow SPA hydrations

La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). La clé est de copier les binaires publiés dans une image de runtime légère et, sous Linux, d'ajouter les deux bibliothèques natives requises par IronPDF (libnss3 et libatk1.0-0). ### Lectures complémentaires - Comment faire – [Générer des PDF avec async / multithreading](/how-to/async/) - Dépannage – [Centre d'assistance à la performance](/troubleshooting/ironpdf-performance-assistance/) - Exemple – [Démo de rendu en threads](/examples/threading/) --- ## Où puis-je télécharger un essai gratuit, choisir une licence et trouver un support expert ? {#anchor-10-resources} A [30-day **trial key**](trial-license) is issued instantly from the [_Start Free Trial_](trial-license) form and unlocks every feature—including HTML-to-PDF, digital signatures, and encryption—without watermarking. Après avoir évalué la bibliothèque, choisissez une licence **développeur**, **de déploiement** ou **entreprise** perpétuelle ; chaque plan inclut des mises à jour mineures gratuites, des droits d'utilisation en dev/staging/production, et une garantie de remboursement de 30 jours. L'application de la clé est une seule ligne de code (`IronPdf.License.LicenseKey = "YOUR-KEY";`) et peut être automatisée dans les pipelines CI/CD. Comprehensive [**documentation**—quick-start guides](/docs/), [API reference](/object-reference/api/), and [tutorial videos](/blog/videos/)—lives at the docs portal and is updated for every .NET release. Engineering questions receive one-business-day responses via [live chat](#live-chat), [email](mailto:support@ironsoftware.com), or phone from the Chicago-based support team. Les questions fréquentes sur l'optimisation des performances et le déploiement sont agrégées dans le Centre d'assistance à la performance. ### Liens rapides |Ressource|URL|Pourquoi cela est important| |----------|-----|----------------| |Obtenez une clé d'essai de 30 jours|[`https://ironpdf.com/demos/`](https://ironpdf.com/demos/)|Débloque chaque fonctionnalité sans filigranes| |Licences & tarification|[`https://ironpdf.com/licensing/`](https://ironpdf.com/licensing/)|Plans perpétuels ou par abonnement; Iron Suite regroupe 10 bibliothèques| |Référence API|[`https://ironpdf.com/object-reference/api/`](https://ironpdf.com/object-reference/api/index.html)|Documentation complète des classes, par exemple `ChromePdfRenderer`| |Portail des docs|[`https://ironpdf.com/docs/`](https://ironpdf.com/docs/)|Guides, tutoriels, projets d'exemple| |Assistance à la performance|[`https://ironpdf.com/troubleshooting/ironpdf-performance-assistance/`](https://ironpdf.com/troubleshooting/ironpdf-performance-assistance/)|Conseils d'optimisation et de mise à l'échelle| |Contacter le support|[`https://ironsoftware.com/contact-us/`](https://ironsoftware.com/contact-us/)|Chat en direct, e-mail, support téléphonique | ### Prochaines étapes 1. **[Clonez le repo d'exemple](https://github.com/iron-software/IronPdf.Examples/tree/main/tutorials/dotnet-core-pdf-generating)** qui démontre chaque fonctionnalité majeure, de la restitution du MVC au cryptage AES-256. 2. **[Brancher la clé d'essai](trial-license)** dans une solution existante et exécutez les tests unitaires pour valider la compatibilité multiplateforme. 3. **[Réservez une démo en direct](https://ironpdf.com/#booking-demo)** avec l'équipe d'ingénierie pour des recommandations spécifiques au projet. Avec ces ressources en main, toute équipe .NET peut expédier des PDF parfaits en production — sur site, dans Docker ou sans serveur — en une seule itération.

Questions Fréquemment Posées

Comment puis-je convertir du HTML en PDF dans .NET Core ?

Vous pouvez convertir du HTML en PDF dans .NET Core en utilisant la bibliothèque IronPDF. Tout d'abord, installez le package NuGet IronPDF, puis créez une instance de ChromePdfRenderer. Utilisez la méthode RenderHtmlAsPdf pour convertir les chaînes HTML en PDFs.

Comment convertir une URL de site web en document PDF ?

Pour convertir une URL de site web en document PDF, installez le package NuGet IronPDF, créez une instance de ChromePdfRenderer, et utilisez la méthode RenderUrlAsPdf pour rendre l'URL en PDF. Le résultat peut être enregistré en utilisant la méthode SaveAs.

Quelle est la meilleure façon de convertir des vues Razor en PDFs ?

La meilleure façon de convertir des vues Razor en PDFs est d'utiliser IronPDF. D'abord, rendez la vue Razor en une chaîne HTML, puis passez cette chaîne à la méthode RenderHtmlAsPdf pour créer un document PDF.

Comment puis-je améliorer la sécurité de mes documents PDF ?

Améliorez la sécurité des PDFs en utilisant IronPDF en appliquant le chiffrement AES-256, en définissant des mots de passe et en contrôlant les autorisations des utilisateurs. Configurez ces paramètres via la propriété SecuritySettings pour restreindre des actions telles que l'impression et la modification.

Quelles options sont disponibles pour personnaliser le rendu des PDF ?

IronPDF fournit diverses options de rendu via la classe ChromePdfRenderOptions, y compris la définition de la taille du papier, de l'orientation, des marges, et l'application des types de médias CSS. Vous pouvez également ajouter des en-têtes, pieds de page, et filigranes pour une sortie de document personnalisée.

Comment déployer une application de génération de PDF dans un conteneur Docker ?

Pour déployer une application de génération de PDF dans un conteneur Docker, configurez les dépendances Linux dans votre Dockerfile et définissez les permissions de l'utilisateur. Utilisez IronPdf.Installation.LinuxAndDockerDependenciesAutoConfig pour la gestion automatique des dépendances.

Comment puis-je ajouter des filigranes à un PDF en utilisant C# ?

Vous pouvez ajouter des filigranes aux PDFs en utilisant IronPDF en utilisant la propriété Watermark avec des objets HtmlStamp. Pour des options avancées, la classe HtmlStamper permet des positionnements et effets de transparence personnalisés.

Puis-je ajouter des signatures numériques aux documents PDF ?

Oui, vous pouvez ajouter des signatures numériques aux PDFs en utilisant la classe PdfSignature d'IronPDF. Utilisez la méthode Sign sur un PdfDocument et fournissez un fichier de certificat pour assurer l'intégrité et l'authenticité du document.

Comment puis-je optimiser les performances de génération de PDF dans .NET Core ?

Optimisez les performances de génération de PDF en réutilisant une instance de ChromePdfRenderer sûre pour les threads, en activant le multithreading, et en supprimant les flags de démarrage de Chrome sans tête inutiles. Ces pratiques aident à améliorer l'efficacité de votre application.

L'exemple HTML vers PDF en .NET Core de ce tutoriel fonctionne-t-il également avec .NET 10 ?

Oui. IronPDF est entièrement compatible avec .NET 10, vous pouvez donc utiliser l'exemple ChromePdfRenderer HTML-vers-PDF de ce tutoriel dans des projets .NET 10 sans modifier le code principal. La principale différence est que vous ciblez .NET 10 lors de la création du projet, puis installez le dernier package IronPdf depuis NuGet pour générer des PDFs parfaits à partir de HTML, de vues Razor ou d'URLs.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur technique chez Iron Software et un ingénieur visionnaire pionnier dans la technologie des PDF en C#. En tant que développeur original derrière la base de code principale d'Iron Software, il a façonné l'architecture du produit de l'entreprise depuis sa création, ...

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 16,154,058 | Version : 2025.11 vient de sortir