Comment convertir XML en PDF en utilisant C#

Comment convertir un XML en PDF dans IronPDF C

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

IronPDF convertit XML en PDF en C# en exécutant une transformation XSLT qui transforme le XML en HTML, puis en rendant ce HTML avec ChromePdfRenderer.RenderHtmlAsPdf. IronPDF n'a pas de moteur XML natif, donc le chemin pris en charge est toujours XML à XSLT/HTML en PDF.

Le XML contient des données structurées sans mise en page visuelle, il ne peut donc pas être dessiné sur une page par lui-même. Une feuille de style XSLT fournit cette présentation : elle associe chaque élément XML à un balisage HTML, et ce HTML contient les polices, les tableaux et le style que le PDF affichera. Pour en savoir plus sur la transformation sous-jacente, consultez le guide de Microsoft sur la classe XslCompiledTransform.

Démarrage rapide : Convertir du XML en PDF avec IronPDF

Chargez une feuille de style XSLT avec XslCompiledTransform, transformez votre fichier XML en une chaîne HTML, puis passez cette chaîne à IronPDF. La conversion passe par le moteur HTML en PDF d'IronPDF, qui rend la mise en page définie par la feuille de style.

  1. Installez IronPDF avec le Gestionnaire de Packages NuGet

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

    var transform = new System.Xml.Xsl.XslCompiledTransform();
    transform.Load("catalog.xslt");
    var html = new System.IO.StringWriter();
    transform.Transform("catalog.xml", null, html);
    new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(html.ToString()).SaveAs("output.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


Comment convertir un fichier XML en PDF en C# ?

Convertissez un fichier XML en enchaînant trois étapes : chargez une feuille de style XSLT avec XslCompiledTransform, transformez le XML en HTML, puis appelez RenderHtmlAsPdf sur le résultat. La feuille de style décide de l'apparence de chaque élément XML, et IronPDF rend le HTML produit à travers le moteur Chromium.

La transformation écrit son HTML dans un StringBuilder via un XmlWriter, ce qui maintient tout le document en mémoire et évite un fichier temporaire sur le disque. Cette chaîne HTML est ce que vous passez au moteur de rendu. Une fois que vous détenez le PdfDocument résultant, vous pouvez continuer à travailler dessus, comme rendre une chaîne HTML pour d'autres parties du même rapport.

À quoi ressemble l'entrée XML ?

L'exemple ci-dessous est un catalogue de produits. Téléchargez le fichier exemple catalog.xml et la feuille de style correspondante catalog.xslt pour suivre.

Entrée

Quel code est nécessaire pour convertir un fichier XML ?

:path=/static-assets/pdf/content-code-examples/how-to/xml-to-pdf-from-file.cs
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using IronPdf;

// Load the XSLT stylesheet that maps the XML schema onto HTML
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("catalog.xslt");

// Apply the transform to the XML file and capture the HTML output
StringBuilder htmlBuilder = new StringBuilder();
XmlWriterSettings settings = new XmlWriterSettings { OmitXmlDeclaration = true, Indent = true };

using (XmlReader reader = XmlReader.Create("catalog.xml"))
using (XmlWriter writer = XmlWriter.Create(htmlBuilder, settings))
{
    transform.Transform(reader, null, writer);
}

string html = htmlBuilder.ToString();

// Render the resulting HTML as a PDF with IronPDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("xml-to-pdf.pdf");
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Xsl
Imports IronPdf

' Load the XSLT stylesheet that maps the XML schema onto HTML
Dim transform As New XslCompiledTransform()
transform.Load("catalog.xslt")

' Apply the transform to the XML file and capture the HTML output
Dim htmlBuilder As New StringBuilder()
Dim settings As New XmlWriterSettings With {.OmitXmlDeclaration = True, .Indent = True}

Using reader As XmlReader = XmlReader.Create("catalog.xml")
    Using writer As XmlWriter = XmlWriter.Create(htmlBuilder, settings)
        transform.Transform(reader, Nothing, writer)
    End Using
End Using

Dim html As String = htmlBuilder.ToString()

' Render the resulting HTML as a PDF with IronPDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("xml-to-pdf.pdf")
$vbLabelText   $csharpLabel

Sortie

Comment puis-je contrôler la mise en page PDF et les paramètres de page ?

Définissez le RenderingOptions du moteur de rendu avant d'appeler RenderHtmlAsPdf pour contrôler les marges, l'orientation, les en-têtes et les pieds de page. Ces options s'appliquent au HTML produit par la feuille de style, donc les préoccupations au niveau de la page restent en C# tandis que le style au niveau de l'élément reste dans le XSLT et son CSS.

L'exemple ci-dessous maintient l'orientation portrait, réduit les marges supérieures et inférieures, et ajoute un en-tête courant et un pied de page avec numéro de page. Pour l'ensemble complet des bascules, voir le guide sur les options de rendu, et pour ajouter une numérotation par page, consultez numéros de page.

:path=/static-assets/pdf/content-code-examples/how-to/xml-to-pdf-advanced.cs
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using IronPdf;
using IronPdf.Rendering;

// Transform the XML into HTML using the XSLT stylesheet
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("catalog.xslt");

StringBuilder htmlBuilder = new StringBuilder();
using (XmlReader reader = XmlReader.Create("catalog.xml"))
using (XmlWriter writer = XmlWriter.Create(htmlBuilder, new XmlWriterSettings { OmitXmlDeclaration = true }))
{
    transform.Transform(reader, null, writer);
}

// Configure rendering options before generating the PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Spring Product Catalog",
    FontSize = 12
};
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    RightText = "Page {page} of {total-pages}",
    FontSize = 10
};

PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
pdf.SaveAs("xml-to-pdf-advanced.pdf");
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Xsl
Imports IronPdf
Imports IronPdf.Rendering

' Transform the XML into HTML using the XSLT stylesheet
Dim transform As New XslCompiledTransform()
transform.Load("catalog.xslt")

Dim htmlBuilder As New StringBuilder()
Using reader As XmlReader = XmlReader.Create("catalog.xml")
    Using writer As XmlWriter = XmlWriter.Create(htmlBuilder, New XmlWriterSettings With {.OmitXmlDeclaration = True})
        transform.Transform(reader, Nothing, writer)
    End Using
End Using

' Configure rendering options before generating the PDF
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
    .CenterText = "Spring Product Catalog",
    .FontSize = 12
}
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
    .RightText = "Page {page} of {total-pages}",
    .FontSize = 10
}

Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
pdf.SaveAs("xml-to-pdf-advanced.pdf")
$vbLabelText   $csharpLabel

Sortie

Icon Quote related to Sortie

Ma bibliothèque préférée de ce genre est IronPDF. Elle permet une manipulation rapide et efficace des fichiers PDF. Elle dispose également de nombreuses fonctionnalités précieuses, comme l'exportation au format PDF/A et la signature numérique des documents PDF.

Milan Jovanovic related to Sortie

Milan Jovanovic

Microsoft MVP

Voir l'étude de cas
Icon Quote related to Sortie

IronOCR signifie que nous pouvons économiser 40 000 $ par an grâce au traitement manuel, tout en améliorant la productivité et en libérant des ressources pour des tâches à fort impact. Je le recommande vivement.

Brent Matzelle related to Sortie

Brent Matzelle

Directeur technique, OPYN

Voir l'étude de cas
Icon Quote related to Sortie

Iron Suite joue un rôle crucial dans nos opérations. Ce sont des outils qui augmentent l'efficacité de l'entreprise, y compris la création de plans d'étage et l'amélioration de la gestion des stocks.

David Jones related to Sortie

David Jones

Ingénieur logiciel principal, Agorus Build

Voir l'étude de cas

Comment gérer des schémas XML complexes ?

Passez des valeurs d'exécution dans la feuille de style avec un XsltArgumentList lorsque le schéma XML nécessite un format conditionnel ou des données se trouvant en dehors du document. La feuille de style lit chaque valeur à travers un <!-- xsl:param>, donc le même modèle peut signaler un stock faible, tamponner une date de rapport ou bifurquer sur les valeurs des éléments sans aucun changement dans le code C#.

Ce modèle maintient la logique de transformation dans le XSLT, où les éléments imbriqués, les attributs et les branches de <xsl:choose> gèrent la structure. Téléchargez la feuille de style catalog-params.xslt pour voir les paramètres et le balisage conditionnel qu'elle utilise.

:path=/static-assets/pdf/content-code-examples/how-to/xml-to-pdf-parameters.cs
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Xsl;
using IronPdf;

// Pass runtime values into the stylesheet with an XsltArgumentList
XsltArgumentList xsltArgs = new XsltArgumentList();
xsltArgs.AddParam("reportDate", "", DateTime.Now.ToString("MMMM d, yyyy"));
xsltArgs.AddParam("minStock", "", 50);

// Load a parameterized stylesheet that reads <xsl:param> values
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("catalog-params.xslt");

StringBuilder htmlBuilder = new StringBuilder();
using (XmlReader reader = XmlReader.Create("catalog.xml"))
using (XmlWriter writer = XmlWriter.Create(htmlBuilder, new XmlWriterSettings { OmitXmlDeclaration = true }))
{
    transform.Transform(reader, xsltArgs, writer);
}

// Render the parameterized HTML as a PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlBuilder.ToString());
pdf.SaveAs("xml-to-pdf-parameters.pdf");
Imports System
Imports System.IO
Imports System.Text
Imports System.Xml
Imports System.Xml.Xsl
Imports IronPdf

' Pass runtime values into the stylesheet with an XsltArgumentList
Dim xsltArgs As New XsltArgumentList()
xsltArgs.AddParam("reportDate", "", DateTime.Now.ToString("MMMM d, yyyy"))
xsltArgs.AddParam("minStock", "", 50)

' Load a parameterized stylesheet that reads <xsl:param> values
Dim transform As New XslCompiledTransform()
transform.Load("catalog-params.xslt")

Dim htmlBuilder As New StringBuilder()
Using reader As XmlReader = XmlReader.Create("catalog.xml")
    Using writer As XmlWriter = XmlWriter.Create(htmlBuilder, New XmlWriterSettings With {.OmitXmlDeclaration = True})
        transform.Transform(reader, xsltArgs, writer)
    End Using
End Using

' Render the parameterized HTML as a PDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlBuilder.ToString())
pdf.SaveAs("xml-to-pdf-parameters.pdf")
$vbLabelText   $csharpLabel

Sortie


Infographie

Transformation de XML en HTML à l'aide de XSLT montrant les données du catalogue converties en format tabulaire

Conclusion

Vous avez converti XML en PDF en le transformant en HTML avec XslCompiledTransform, puis en rendant ce HTML via IronPDF, et vous avez vu comment RenderingOptions et XsltArgumentList étendent le résultat pour le contrôle de mise en page et le formatage piloté par le schéma. Étant donné que la sortie est un HTML ordinaire, les mêmes options de rendu qui dirigent les en-têtes, pieds de page, et tailles de papier ailleurs dans IronPDF s'appliquent directement à votre catalogue. Un projet échantillon exécutable de conversion de XML en PDF est disponible pour le téléchargement comme point de départ.

Questions Fréquemment Posées

Comment convertir du XML en PDF en C# ?

IronPDF n'a pas de moteur XML natif, donc le chemin pris en charge est XML en XSLT/HTML vers PDF. Chargez une feuille de style XSLT avec XslCompiledTransform, transformez votre XML en une chaîne HTML, puis appelez RenderHtmlAsPdf sur le ChromePdfRenderer d'IronPDF pour produire le document PDF final.

Pourquoi devrais-je utiliser XSLT pour la conversion de XML en PDF ?

XSLT constitue l'approche la plus flexible pour la conversion de XML en PDF, car il agit comme un traducteur personnalisé de XML en HTML. Combinée au moteur de rendu Chrome d'IronPDF, cette méthode garantit une conversion parfaite au pixel près tout en conservant un contrôle total sur la façon dont vos données XML sont formatées dans le document PDF final.

Quelles sont les étapes de la conversion de XML en PDF ?

La mise en œuvre comporte 5 étapes : 1) Installer la bibliothèque C# d'IronPDF, 2) Charger votre modèle XSLT à l'aide de la méthode Load, 3) Transformer le XML en HTML à l'aide de la méthode Transform, 4) Rendre le HTML en PDF à l'aide des options de rendu personnalisées d'IronPDF, et 5) Exporter le document PDF à l'emplacement de votre choix.

Puis-je appliquer un style personnalisé à ma conversion XML en PDF ?

Oui, vous pouvez appliquer un style CSS personnalisé pour améliorer la présentation visuelle de votre fichier PDF. IronPDF prend en charge le style CSS réactif, ce qui vous permet de créer des PDF formatés de manière professionnelle à partir de vos données XML, avec un contrôle total sur les polices, les mises en page et les éléments visuels.

Est-il possible de convertir du XML en PDF en une seule ligne de code ?

Oui, IronPDF permet la conversion XML vers PDF en une seule ligne en enchaînant les méthodes : new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf(XslCompiledTransform.Load("template.xslt").Transform(XmlReader.Create("data.xml"), new StringWriter()).ToString()).SaveAs("output.pdf") ;

Quel est le moteur de rendu utilisé pour la conversion de XML en PDF ?

IronPDF rend le HTML produit par votre transformation XSLT en utilisant un moteur de rendu Chromium, offrant une sortie pixel-parfaite et une compatibilité avec les standards web modernes. XML lui-même n'est jamais rendu directement ; c'est le HTML transformé qui devient le PDF.

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 20,296,129 | Version : 2026.7 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.