Passer au contenu du pied de page
UTILISATION DE IRONPDF

Comment générer un PDF dans .NET Core avec IronPDF

Pour générer des fichiers PDF dans .NET Core, utilisez le ChromePdfRenderer d'IronPDF pour convertir des chaînes HTML, des pages web ou des vues Razor en documents PDF avec seulement quelques lignes de code, en préservant tous les styles CSS et toutes les fonctionnalités JavaScript.

La création de documents PDF dans les applications .NET Core est une exigence courante lors de la création d'applications Web qui doivent générer des factures, des rapports et d'autres documents commerciaux. IronPDF est une bibliothèque PDF complète qui simplifie la génération de PDF dans ASP.NET Core grâce à son moteur de rendu Chrome, garantissant des PDF d'une qualité irréprochable. Ce guide vous explique comment gérer différentes tâches de génération de PDF dans l'environnement .NET 10, des simples conversions HTML à la génération de rapports complexes à l'aide d'instructions C# de haut niveau.

Comment .NET Core génère-t-il des fichiers PDF ?

IronPDF utilise un moteur de rendu basé sur Chrome pour convertir le contenu HTML en fichiers PDF. Cette approche vous permet d'utiliser vos connaissances existantes en HTML et CSS pour créer des PDF sans avoir à apprendre des API PDF complexes et de bas niveau ni à faire face à une courbe d'apprentissage abrupte. La bibliothèque gère la conversion automatique des pages web, prenant en charge l'exécution de JavaScript et les mises en page CSS réactives.

L'API de la bibliothèque vous permet de générer des documents PDF à partir de chaînes HTML, d'URL ou de fichiers HTML locaux. Lors de la conversion de HTML en PDF, IronPDF préserve les mises en page complexes, le style CSS, l'exécution JavaScript et le contenu Web dynamique. Cela en fait un choix pratique pour les développeurs .NET qui ont besoin de capacités de conversion PDF fiables dans leurs applications.

Le processus de rendu utilise la même technologie que celle qui alimente Google Chrome, garantissant ainsi que les conversions HTML vers PDF correspondent à ce que les utilisateurs voient dans les navigateurs modernes. Cela inclut la prise en charge des fonctionnalités CSS3, des polices web, des graphiques SVG et des systèmes de mise en page modernes comme Flexbox et CSS Grid. Le moteur de rendu étant basé sur Chrome, le résultat est prévisible et cohérent dans les environnements de développement, de préproduction et de production.

Comment installer IronPDF dans un projet .NET 10 ?

Pour commencer, une seule installation via le gestionnaire de packages NuGet est nécessaire. Vous avez deux options selon votre flux de travail.

Option 1 : Console du gestionnaire de packages dans Visual Studio

Install-Package IronPdf
Install-Package IronPdf
SHELL

Option 2 : Interface de ligne de commande .NET

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

Pour une description de l'installation étape par étape, voir le guide d'installation de NuGet.

Pour les déploiements Docker ou les environnements Linux, des dépendances système supplémentaires peuvent être nécessaires. IronPDF prend en charge macOS, Windows, Linux, Azure et AWS Lambda, ce qui le rend adaptable à différents scénarios d'hébergement. Après l'installation, ajoutez une clé de licence d'essai pour débloquer l'ensemble des fonctionnalités pendant le développement. L'essai est gratuit et ne nécessite pas de carte de crédit, vous permettant ainsi d'évaluer pleinement la bibliothèque avant d'acheter une licence commerciale.

Comment générer un PDF à partir d'une chaîne HTML ?

La méthode la plus directe pour créer un PDF consiste à convertir du contenu HTML. Voici un exemple minimal utilisant des instructions de niveau supérieur C# :

using IronPdf;

// Instantiate the renderer
var renderer = new ChromePdfRenderer();

// Convert an HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>");

// Save to disk
pdf.SaveAs("hello.pdf");
using IronPdf;

// Instantiate the renderer
var renderer = new ChromePdfRenderer();

// Convert an HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>");

// Save to disk
pdf.SaveAs("hello.pdf");
Imports IronPdf

' Instantiate the renderer
Dim renderer As New ChromePdfRenderer()

' Convert an HTML string to PDF
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1><p>This is a PDF generated from HTML.</p>")

' Save to disk
pdf.SaveAs("hello.pdf")
$vbLabelText   $csharpLabel

La classe ChromePdfRenderer gère le processus de conversion. L'objet PdfDocument retourné vous donne accès aux données binaires, au nombre de pages et aux options de sortie telles que l'enregistrement dans un fichier ou un flux de mémoire. Vous pouvez également joindre des métadonnées telles que le titre, l'auteur et les mots-clés du sujet au fichier de sortie.

Le moteur de rendu prend en charge un large éventail d'options de rendu. Vous pouvez configurer des marges personnalisées, définir les formats de papier, contrôler l'orientation de la page et ajuster les dimensions de la fenêtre d'affichage. Ces options garantissent que le fichier PDF généré répond aux exigences de mise en forme spécifiques aux documents Professional .

Comment créer une facture PDF avec du style CSS ?

Voici, à titre d'exemple plus réaliste, comment générer un document de facture stylisé avec du balisage HTML et du CSS :

using IronPdf;

var html = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; font-size: 14px; }
        .invoice-header {
            background-color: #2c3e50;
            color: white;
            padding: 20px;
        }
        .invoice-details { margin: 20px 0; }
        table { width: 100%; border-collapse: collapse; }
        th, td {
            padding: 12px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .total {
            font-size: 1.2em;
            font-weight: bold;
            text-align: right;
        }
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #2026-001</h1>
        <p>Date: February 28, 2026</p>
    </div>
    <div class='invoice-details'>
        <h3>Bill To: Jane Smith</h3>
        <table>
            <tr>
                <th>Item</th>
                <th>Quantity</th>
                <th>Price</th>
            </tr>
            <tr>
                <td>Professional License</td>
                <td>1</td>
                <td>$749.00</td>
            </tr>
        </table>
        <p class='total'>Total: $749.00</p>
    </div>
</body>
</html>";

var renderer = new ChromePdfRenderer();

// Apply custom margins
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
using IronPdf;

var html = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; font-size: 14px; }
        .invoice-header {
            background-color: #2c3e50;
            color: white;
            padding: 20px;
        }
        .invoice-details { margin: 20px 0; }
        table { width: 100%; border-collapse: collapse; }
        th, td {
            padding: 12px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .total {
            font-size: 1.2em;
            font-weight: bold;
            text-align: right;
        }
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #2026-001</h1>
        <p>Date: February 28, 2026</p>
    </div>
    <div class='invoice-details'>
        <h3>Bill To: Jane Smith</h3>
        <table>
            <tr>
                <th>Item</th>
                <th>Quantity</th>
                <th>Price</th>
            </tr>
            <tr>
                <td>Professional License</td>
                <td>1</td>
                <td>$749.00</td>
            </tr>
        </table>
        <p class='total'>Total: $749.00</p>
    </div>
</body>
</html>";

var renderer = new ChromePdfRenderer();

// Apply custom margins
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");
Imports IronPdf

Dim html As String = "
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; font-size: 14px; }
        .invoice-header {
            background-color: #2c3e50;
            color: white;
            padding: 20px;
        }
        .invoice-details { margin: 20px 0; }
        table { width: 100%; border-collapse: collapse; }
        th, td {
            padding: 12px;
            text-align: left;
            border-bottom: 1px solid #ddd;
        }
        .total {
            font-size: 1.2em;
            font-weight: bold;
            text-align: right;
        }
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #2026-001</h1>
        <p>Date: February 28, 2026</p>
    </div>
    <div class='invoice-details'>
        <h3>Bill To: Jane Smith</h3>
        <table>
            <tr>
                <th>Item</th>
                <th>Quantity</th>
                <th>Price</th>
            </tr>
            <tr>
                <td>Professional License</td>
                <td>1</td>
                <td>$749.00</td>
            </tr>
        </table>
        <p class='total'>Total: $749.00</p>
    </div>
</body>
</html>"

Dim renderer As New ChromePdfRenderer()

' Apply custom margins
renderer.RenderingOptions.MarginTop = 10
renderer.RenderingOptions.MarginBottom = 10

Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
$vbLabelText   $csharpLabel

Cet exemple illustre la capacité d'IronPDF à gérer des mises en page complexes avec style CSS, notamment les paramètres de police, les couleurs d'arrière-plan et la mise en forme des tableaux. La bibliothèque traite le balisage HTML et produit un PDF dont l'apparence visuelle correspond à celle du document source.

Pour une typographie améliorée, IronPDF prend en charge Google Fonts et les polices d'icônes Web, vous permettant de créer des PDF visuellement soignés. La bibliothèque gère également les conceptions de documents multicouches. Vous pouvez ajouter des filigranes personnalisés ou apposer un tampon sur du contenu sur des PDF existants.

À quoi ressemble la facture PDF générée ?

![Facture PDF affichant la facture n° 2026-001 datée du 28 février 2026, montrant un achat de licence Professional pour 749,00 $ avec une section d'en-tête bleu foncé. La facture illustre la conservation du style CSS, notamment les polices personnalisées, les couleurs et la mise en forme du tableau générées lors de la conversion HTML vers PDF.

Comment convertir l'URL d'une page web en PDF?

IronPDF peut générer des PDF à partir de pages web en direct en transmettant une URL au moteur de rendu. Ceci est utile lorsque vous avez besoin de capturer du contenu Web de manière dynamique ou d'archiver une page publique :

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure viewport and JavaScript settings
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
renderer.RenderingOptions.WaitFor.RenderDelay(1500); // Allow dynamic content to load

// Render the URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://example.com");

// Save to disk
pdf.SaveAs("webpage.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure viewport and JavaScript settings
renderer.RenderingOptions.ViewPortWidth = 1920;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
renderer.RenderingOptions.WaitFor.RenderDelay(1500); // Allow dynamic content to load

// Render the URL to PDF
var pdf = renderer.RenderUrlAsPdf("https://example.com");

// Save to disk
pdf.SaveAs("webpage.pdf");
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

' Configure viewport and JavaScript settings
renderer.RenderingOptions.ViewPortWidth = 1920
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
renderer.RenderingOptions.WaitFor.RenderDelay(1500) ' Allow dynamic content to load

' Render the URL to PDF
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")

' Save to disk
pdf.SaveAs("webpage.pdf")
$vbLabelText   $csharpLabel

Le paramètre RenderDelay garantit que le contenu piloté par JavaScript (graphiques, images chargées paresseusement, tableaux dynamiques) termine le rendu avant que le PDF ne soit capturé. Vous pouvez également configurer les conditions WaitFor pour attendre que des éléments DOM ou des requêtes réseau spécifiques se terminent. Pour les pages nécessitant une authentification, la bibliothèque prend en charge les en-têtes de requêtes HTTP et les cookies personnalisés.

Pour les applications monopages complexes construites avec Angular ou React, des conditions d'attente supplémentaires permettent de garantir que tout le rendu côté client est terminé avant la prise de la capture d'écran PDF.

![Comparaison en écran partagé montrant une page Web rendue dans un navigateur à gauche et sa conversion PDF à droite à l'aide IronPDF dans .NET Core. La version PDF conserve l'intégralité de la mise en forme, des images et de la structure de la page, démontrant ainsi une conversion HTML vers PDF de haute fidélité.

Comment intégrer la génération de PDF dans un contrôleur ASP.NET Core ?

Générer des fichiers PDF au sein d'une API Web ASP.NET Core est simple. L'exemple suivant illustre une action de contrôleur qui génère un rapport HTML et le renvoie sous forme de fichier à télécharger :

using Microsoft.AspNetCore.Mvc;
using IronPdf;

[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate-report")]
    public IActionResult GenerateReport()
    {
        var html = @"
            <h1>Monthly Sales Report</h1>
            <p>Generated on: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
            <table>
                <tr><th>Product</th><th>Sales</th></tr>
                <tr><td>Product A</td><td>$5,000</td></tr>
                <tr><td>Product B</td><td>$3,500</td></tr>
            </table>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);

        // Return the PDF bytes as a downloadable file
        return File(pdf.BinaryData, "application/pdf", "monthly-report.pdf");
    }
}
using Microsoft.AspNetCore.Mvc;
using IronPdf;

[ApiController]
[Route("api/[controller]")]
public class PdfController : ControllerBase
{
    [HttpGet("generate-report")]
    public IActionResult GenerateReport()
    {
        var html = @"
            <h1>Monthly Sales Report</h1>
            <p>Generated on: " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
            <table>
                <tr><th>Product</th><th>Sales</th></tr>
                <tr><td>Product A</td><td>$5,000</td></tr>
                <tr><td>Product B</td><td>$3,500</td></tr>
            </table>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(html);

        // Return the PDF bytes as a downloadable file
        return File(pdf.BinaryData, "application/pdf", "monthly-report.pdf");
    }
}
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf

<ApiController>
<Route("api/[controller]")>
Public Class PdfController
    Inherits ControllerBase

    <HttpGet("generate-report")>
    Public Function GenerateReport() As IActionResult
        Dim html As String = "
            <h1>Monthly Sales Report</h1>
            <p>Generated on: " & DateTime.Now.ToString("MMMM dd, yyyy") & "</p>
            <table>
                <tr><th>Product</th><th>Sales</th></tr>
                <tr><td>Product A</td><td>$5,000</td></tr>
                <tr><td>Product B</td><td>$3,500</td></tr>
            </table>"

        Dim renderer As New ChromePdfRenderer()
        Dim pdf = renderer.RenderHtmlAsPdf(html)

        ' Return the PDF bytes as a downloadable file
        Return File(pdf.BinaryData, "application/pdf", "monthly-report.pdf")
    End Function
End Class
$vbLabelText   $csharpLabel

Le type de retour File() indique à ASP.NET Core de diffuser les octets PDF bruts vers le navigateur client avec le type MIME correct. Le client reçoit un PDF téléchargeable sans aucun fichier intermédiaire sur le disque. Vous pouvez ajouter des en-têtes et des pieds de page à chaque page, ou appliquer des filigranes aux documents brouillons ou confidentiels.

Pour les applications de production, envisagez d'utiliser la génération PDF asynchrone afin de maintenir le pipeline de requêtes non bloquant, en particulier lors de la génération de documents volumineux ou complexes.

Comment générer un PDF à partir d'une vue Razor dans MVC ?

Pour les applications MVC, vous pouvez générer une vue Razor sous forme de chaîne HTML, puis la convertir en PDF. Ce modèle conserve vos modèles de documents dans des fichiers .cshtml standard :

[HttpGet]
public async Task<IActionResult> DownloadInvoice(int id)
{
    // Fetch invoice data from the database
    var model = await GetInvoiceData(id);

    // Render the Razor view to an HTML string
    var html = await RenderViewToString("Invoice", model);

    // Convert the rendered HTML en PDF
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Return the file to the browser
    return File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf");
}
[HttpGet]
public async Task<IActionResult> DownloadInvoice(int id)
{
    // Fetch invoice data from the database
    var model = await GetInvoiceData(id);

    // Render the Razor view to an HTML string
    var html = await RenderViewToString("Invoice", model);

    // Convert the rendered HTML en PDF
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(html);

    // Return the file to the browser
    return File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf");
}
Imports System.Threading.Tasks
Imports Microsoft.AspNetCore.Mvc

<HttpGet>
Public Async Function DownloadInvoice(id As Integer) As Task(Of IActionResult)
    ' Fetch invoice data from the database
    Dim model = Await GetInvoiceData(id)

    ' Render the Razor view to an HTML string
    Dim html = Await RenderViewToString("Invoice", model)

    ' Convert the rendered HTML to PDF
    Dim renderer = New ChromePdfRenderer()
    Dim pdf = renderer.RenderHtmlAsPdf(html)

    ' Return the file to the browser
    Return File(pdf.BinaryData, "application/pdf", $"invoice-{id}.pdf")
End Function
$vbLabelText   $csharpLabel

Cette approche vous permet de conserver vos modèles de factures ou de rapports sous forme de vues Razor ordinaires, en utilisant la liaison de modèles et les vues partielles. La méthode d'aide RenderViewToString (un utilitaire courant dans les projets MVC) convertit la vue en une chaîne HTML simple qu'IronPDF traite ensuite. Des modèles similaires s'appliquent aux projets Razor Pages ou Blazor Server.

![Visionneuse PDF affichant un rapport des ventes mensuelles avec les chiffres de vente du produit A (5 000 $) et du produit B (3 500 $). Le rapport illustre une mise en forme de tableau claire et une présentation Professional générées par une action de contrôleur ASP.NET Core .

Quelles sont les fonctionnalités PDF avancées prises en charge par IronPDF ?

Au-delà de la simple conversion HTML vers PDF, IronPDF offre un large éventail de fonctionnalités de manipulation de documents :

Pour les charges de travail critiques en termes de performances, IronPDF propose des méthodes asynchrones et une prise en charge du multithreading. La bibliothèque gère également la conversion d'images en PDF, la compression PDF et la linéarisation pour un affichage web plus rapide.

Présentation des fonctionnalités principales IronPDF
Caractéristique Description du projet Cas d'utilisation typique
HTML en PDF Convertit les chaînes HTML, les fichiers ou les URL en PDF Factures, rapports, archivage de pages web
Razor vers PDF Convertit les vues Razor (.cshtml) en PDF Applications MVC et Razor Pages
Fusionner / Diviser Combine ou divise des documents PDF Regroupement de documents, extraction de pages
Signatures numériques S'applique aux signatures de certificats X.509 Documents juridiques, flux de travail contractuels
Extraction de texte Lit le contenu textuel des fichiers PDF existants Indexation de la recherche, migration des données
Formulaires PDF Crée et remplit des champs de formulaire interactifs Collecte automatisée de données
En-têtes et pieds de page Ajoute des numéros de page, des dates et du texte personnalisé Mise en forme Professional de documents

Comment débuter avec IronPDF dans .NET 10 ?

IronPDF simplifie la génération de PDF dans .NET Core . Son moteur de rendu Chrome garantit une fidélité optimale lors de la création de PDF à partir de contenu HTML, tandis que la conception de l'API élimine la complexité généralement associée à la manipulation des PDF. La bibliothèque fournit une documentation complète pour toutes les fonctionnalités et prend en charge le déploiement sur Windows, Linux, macOS, Azure Functions, AWS Lambda et les conteneurs Docker.

Que vous créiez des factures, des rapports ou des outils de gestion de documents, IronPDF vous fournit les outils nécessaires à la création de PDF Professional . Consultez la liste complète des fonctionnalités pour comprendre toute l'étendue des capacités de la bibliothèque, ou vérifiez les options de licence adaptées aux développeurs individuels et aux équipes Enterprise .

Démarrez un essai gratuit dès aujourd'hui pour tester IronPDF dans votre propre projet .NET 10. La licence d'essai couvre l'ensemble des fonctionnalités, ce qui vous permet d'évaluer la génération de PDF, la fusion, la signature, le remplissage de formulaires et l'extraction de texte avant de souscrire à une licence.

Pour plus de contexte, consultez la documentation IronPDF pour accéder aux références API, aux guides de la plateforme et aux exemples de code couvrant les scénarios PDF .NET courants.


Références externes :

Questions Fréquemment Posées

Comment puis-je générer des documents PDF dans .NET Core?

Vous pouvez générer des documents PDF dans .NET Core avec IronPDF, ce qui vous permet de créer des PDFs à partir de HTML, d'URLs et de vues Razor en utilisant son moteur de rendu Chrome avancé.

Quels sont les avantages d'utiliser IronPDF pour la génération de PDF?

IronPDF offre plusieurs avantages, y compris la facilité d'intégration, le support pour le rendu pixel parfait, et la capacité de créer des PDFs à partir de diverses sources comme HTML et URLs, le rendant idéal pour construire des applications web nécessitant la génération de PDF.

IronPDF peut-il gérer des tâches complexes de génération de PDF ?

Oui, IronPDF est conçu pour gérer des tâches complexes de génération de PDF dans l'environnement .NET, fournissant aux développeurs les outils nécessaires pour créer des documents PDF détaillés et précis.

Quel est le rôle du moteur de rendu Chrome dans IronPDF?

Le moteur de rendu Chrome dans IronPDF assure que les PDFs générés sont d'une précision parfaite, maintenant la fidélité du contenu HTML ou web d'origine.

IronPDF est-il adapté pour générer des documents commerciaux comme des factures et des rapports?

Absolument, IronPDF est bien adapté pour générer des documents commerciaux tels que des factures et des rapports, offrant un rendu précis et le support de divers formats de documents.

Quels types d'entrée IronPDF peut-il convertir en PDF?

IronPDF peut convertir des entrées telles que HTML, URLs et vues Razor en documents PDF, offrant une flexibilité dans la création de contenu.

IronPDF prend-il en charge les applications ASP.NET Core?

Oui, IronPDF est entièrement compatible avec les applications ASP.NET Core, permettant aux développeurs d'intégrer sans souci les fonctionnalités de génération de PDF dans leurs projets web.

Quels sont les cas d'utilisation courants d'IronPDF dans les applications web?

Les cas d'utilisation courants d'IronPDF incluent la génération de PDFs pour des factures, des rapports, et tout autre document commercial requis par les applications web.

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

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi