Passer au contenu du pied de page
UTILISATION DE IRONPDF

Comment imprimer des fichiers PDF par programmation en ASP.NET

Les tâches d'impression de fichiers PDF ASP .NET impliquent souvent des défis uniques auxquels les développeurs sont fréquemment confrontés. Que vous génériez des documents PDF pour des factures, des rapports ou des étiquettes d'expédition, la mise en œuvre d'une fonctionnalité d'impression fiable nécessite de naviguer dans les complexités de l'architecture serveur-client.

In this article, we'll show you how to handle PDF printing tasks using IronPDF's powerful PDF library for .NET.

Comprendre le Défi

Les applications de bureau traditionnelles peuvent accéder directement à l'imprimante par défaut, mais les applications ASP.NET Core rencontrent plusieurs obstacles lors de l'impression de documents PDF :

// This fails in ASP.NET - wrong approach
Process.Start(@"C:\Files\document.pdf"); // Works locally, crashes on server
// This fails in ASP.NET - wrong approach
Process.Start(@"C:\Files\document.pdf"); // Works locally, crashes on server
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Le code ci-dessus illustre une erreur courante. L'environnement serveur ne dispose pas d'un accès direct à l'imprimante, et le système génère des erreurs en raison de restrictions de permissions IIS. Une autre chose à garder à l'esprit est que les applications web doivent gérer efficacement les scénarios d'impression côté serveur et côté client.

Commencer avec IronPDF

IronPDF fournit une solution complète pour .NET core pour générer des documents PDF et les imprimer sans dépendances externes comme Adobe Reader. Installons le package IronPDF en utilisant NuGet :

Install-Package IronPdf

Cette bibliothèque .NET fonctionne parfaitement sur tous les systèmes d'exploitation, éliminant les problèmes de compatibilité qui affectent d'autres bibliothèques. Cet outil fonctionne bien dans les environnements Microsoft Windows et autres systèmes d'exploitation.

Créer et Imprimer des Documents PDF du Côté Serveur avec l'Imprimante par Défaut

Voici comment générer et imprimer un document PDF à partir d'un balisage HTML dans votre contrôleur ASP.NET :

using IronPdf;
using Microsoft.AspNetCore.Mvc;
using System.Drawing; 
public class PdfController : Controller
{
    public IActionResult Index()
    {
        // Initialize the renderer
        var renderer = new ChromePdfRenderer();
        // Configure print-optimized settings
        renderer.RenderingOptions.PrintHtmlBackgrounds = true;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
        // Generate PDF from HTML
        var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $749</p>");
        // Print to default printer
        pdf.Print();
        return Ok("Document sent to printer");
    }
}
using IronPdf;
using Microsoft.AspNetCore.Mvc;
using System.Drawing; 
public class PdfController : Controller
{
    public IActionResult Index()
    {
        // Initialize the renderer
        var renderer = new ChromePdfRenderer();
        // Configure print-optimized settings
        renderer.RenderingOptions.PrintHtmlBackgrounds = true;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
        // Generate PDF from HTML
        var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1><p>Total: $749</p>");
        // Print to default printer
        pdf.Print();
        return Ok("Document sent to printer");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Le ChromePdfRenderer gère la conversion tout en préservant le style CSS et le formatage des tailles de police. Cet exemple montre une impression basique à l'imprimante par défaut sans interaction utilisateur.

Sortie

Configuration de l'Imprimante Réseau

Pour les environnements d'entreprise nécessitant un routage d'imprimante spécifique :

public IActionResult PrintToNetworkPrinter(string filePath)
{
    // Load existing PDF file
    var pdfDocument = PdfDocument.FromFile(filePath);
    // Get print document for advanced settings
    var printDocument = pdfDocument.GetPrintDocument();
    // Specify network printer
    printDocument.PrinterSettings.PrinterName = @"\\server\printer";
    printDocument.PrinterSettings.Copies = 2;
    // Configure page settings
    printDocument.DefaultPageSettings.Landscape = false;
    var renderer = printDocument.PrinterSettings.PrinterResolution;
    // Execute print
    printDocument.Print();
    return Json(new { success = true });
}
public IActionResult PrintToNetworkPrinter(string filePath)
{
    // Load existing PDF file
    var pdfDocument = PdfDocument.FromFile(filePath);
    // Get print document for advanced settings
    var printDocument = pdfDocument.GetPrintDocument();
    // Specify network printer
    printDocument.PrinterSettings.PrinterName = @"\\server\printer";
    printDocument.PrinterSettings.Copies = 2;
    // Configure page settings
    printDocument.DefaultPageSettings.Landscape = false;
    var renderer = printDocument.PrinterSettings.PrinterResolution;
    // Execute print
    printDocument.Print();
    return Json(new { success = true });
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette approche offre un contrôle complet sur les paramètres de l'imprimante, y compris le format du papier et la résolution, ce qui est essentiel pour un dessin et une mise en page corrects.

Sortie

Comment Imprimer des Fichiers PDF par Programmation dans ASP.NET : Figure 2 - Impression de PDF avec impression en réseau

Confirmation d'Impression

Comment Imprimer des Fichiers PDF par Programmation dans ASP.NET : Figure 3 - Message de succès pour la tâche d'impression de PDF

Stratégie d'Impression Côté Client

Puisque les navigateurs restreignent l'accès direct à l'imprimante, implémentez une impression côté client en servant le fichier PDF pour téléchargement :

public IActionResult GetRawPrintablePdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml());
        // This header tells the browser to display the file inline.
        // We use IHeaderDictionary indexer to prevent ArgumentException.
        **HttpContext context**.Response.Headers["Content-Disposition"] = "inline; filename=invoice.pdf";
        return File(pdf.BinaryData, "application/pdf");
    }
    public IActionResult PrintUsingClientWrapper()
    {
        var printUrl = Url.Action(nameof(GetRawPrintablePdf));
        // Use a simple HTML/JavaScript wrapper to force the print dialog
        var html = new StringBuilder();
        html.AppendLine("<!DOCTYPE html>");
        html.AppendLine("<html lang=\"en\">");
        html.AppendLine("<head>");
        html.AppendLine("    <title>Print Document</title>");
        html.AppendLine("</head>");
        html.AppendLine("<body>");
        // Load the PDF from the 'GetRawPrintablePdf' action into an invisible iframe.
        html.AppendLine($"    <iframe src='{printUrl}' style='position:absolute; top:0; left:0; width:100%; height:100%; border:none;'></iframe>");
        html.AppendLine("    <script>");
        // Wait for the iframe (and thus the PDF) to load, then trigger the print dialog.
        html.AppendLine("        window.onload = function() {");
        html.AppendLine("            // Wait briefly to ensure the iframe content is rendered before printing.");
        html.AppendLine("            setTimeout(function() {");
        html.AppendLine("                window.print();");
        html.AppendLine("            }, 100);");
        html.AppendLine("        };");
        html.AppendLine("    </script>");
        html.AppendLine("</body>");
        html.AppendLine("</html>");
        return Content(html.ToString(), "text/html");
    }
    private string GetInvoiceHtml()
    {
        // Build HTML with proper structure
        return @"
        <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; }
                .header { font-weight: bold; color: #1e40af; border-bottom: 2px solid #3b82f6; padding-bottom: 5px; }
                .content { padding-top: 10px; }
            </style>
        </head>
        <body>
            <div class='header'>Invoice Summary (Client View)</div>
            <div class='content'>
                <p>Document content: This file is optimized for printing.</p>
                <p>Total Amount: <b>$749.00</b></p>
            </div>
        </body>
        </html>";
    }
public IActionResult GetRawPrintablePdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(GetInvoiceHtml());
        // This header tells the browser to display the file inline.
        // We use IHeaderDictionary indexer to prevent ArgumentException.
        **HttpContext context**.Response.Headers["Content-Disposition"] = "inline; filename=invoice.pdf";
        return File(pdf.BinaryData, "application/pdf");
    }
    public IActionResult PrintUsingClientWrapper()
    {
        var printUrl = Url.Action(nameof(GetRawPrintablePdf));
        // Use a simple HTML/JavaScript wrapper to force the print dialog
        var html = new StringBuilder();
        html.AppendLine("<!DOCTYPE html>");
        html.AppendLine("<html lang=\"en\">");
        html.AppendLine("<head>");
        html.AppendLine("    <title>Print Document</title>");
        html.AppendLine("</head>");
        html.AppendLine("<body>");
        // Load the PDF from the 'GetRawPrintablePdf' action into an invisible iframe.
        html.AppendLine($"    <iframe src='{printUrl}' style='position:absolute; top:0; left:0; width:100%; height:100%; border:none;'></iframe>");
        html.AppendLine("    <script>");
        // Wait for the iframe (and thus the PDF) to load, then trigger the print dialog.
        html.AppendLine("        window.onload = function() {");
        html.AppendLine("            // Wait briefly to ensure the iframe content is rendered before printing.");
        html.AppendLine("            setTimeout(function() {");
        html.AppendLine("                window.print();");
        html.AppendLine("            }, 100);");
        html.AppendLine("        };");
        html.AppendLine("    </script>");
        html.AppendLine("</body>");
        html.AppendLine("</html>");
        return Content(html.ToString(), "text/html");
    }
    private string GetInvoiceHtml()
    {
        // Build HTML with proper structure
        return @"
        <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; }
                .header { font-weight: bold; color: #1e40af; border-bottom: 2px solid #3b82f6; padding-bottom: 5px; }
                .content { padding-top: 10px; }
            </style>
        </head>
        <body>
            <div class='header'>Invoice Summary (Client View)</div>
            <div class='content'>
                <p>Document content: This file is optimized for printing.</p>
                <p>Total Amount: <b>$749.00</b></p>
            </div>
        </body>
        </html>";
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Le document PDF s'ouvre dans le navigateur où les utilisateurs peuvent déclencher l'impression via leur imprimante par défaut en utilisant les boîtes de dialogue d'impression standard du navigateur. Cette approche est supérieure à une demande de serveur direct pour l'impression.

Sortie

Comment Imprimer des Fichiers PDF par Programmation dans ASP.NET : Figure 4 - Boîte de Dialogue d'Impression Côté Client

Travailler avec Diverses Entrées de Code Source

IronPDF gère avec flexibilité diverses entrées de code source, ce qui est important à noter pour les développeurs cherchant à créer du code d'impression dynamique :

public async Task<IActionResult> PrintFromMultipleSources()
{
    var renderer = new ChromePdfRenderer();
    // From URL
    var pdfFromUrl = await renderer.RenderUrlAsPdfAsync("https://example.com");
    // From HTML file path
    var pdfFromFile = renderer.RenderHtmlFileAsPdf(@"Templates\report.html");
    var pdfToStream = renderer.RenderHtmlAsPdf("<h2>PDF from Memory Stream</h2><p>This content was loaded into memory first.</p>");
// Now, write the valid PDF bytes to the stream
using (var stream = new MemoryStream(pdfToStream.BinaryData))
{
    var pdfFromStream = new PdfDocument(stream);
    // Example: Print the PDF loaded from the stream
    // pdfFromStream.Print(); 
}
pdfFromUrl.Print();
// Logging the various files handled
    var fileList = new List<string> { "URL", "File Path", "Memory Stream" };
return Ok("PDF documents processed and 'example.com' printed to default server printer.");
}
public async Task<IActionResult> PrintFromMultipleSources()
{
    var renderer = new ChromePdfRenderer();
    // From URL
    var pdfFromUrl = await renderer.RenderUrlAsPdfAsync("https://example.com");
    // From HTML file path
    var pdfFromFile = renderer.RenderHtmlFileAsPdf(@"Templates\report.html");
    var pdfToStream = renderer.RenderHtmlAsPdf("<h2>PDF from Memory Stream</h2><p>This content was loaded into memory first.</p>");
// Now, write the valid PDF bytes to the stream
using (var stream = new MemoryStream(pdfToStream.BinaryData))
{
    var pdfFromStream = new PdfDocument(stream);
    // Example: Print the PDF loaded from the stream
    // pdfFromStream.Print(); 
}
pdfFromUrl.Print();
// Logging the various files handled
    var fileList = new List<string> { "URL", "File Path", "Memory Stream" };
return Ok("PDF documents processed and 'example.com' printed to default server printer.");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Les lignes ci-dessus démontrent comment créer une nouvelle liste de sources de fichiers gérées. Chaque méthode préserve la structure du document et les graphiques tout en maintenant la qualité d'impression.

Comment Imprimer des Fichiers PDF par Programmation dans ASP.NET : Figure 5

Gestion des Erreurs et Journalisation

Implémentez une gestion robuste des erreurs pour les environnements de production :

using System.Drawing.Printing; // For PrinterSettings
// ... other usings ...
public IActionResult SafePrint(string documentId)
{
    try
    {
        var pdf = LoadPdfDocument(documentId);
        // Verify printer availability
        if (!PrinterSettings.InstalledPrinters.Cast<string>()
            .Contains("Target Printer"))
        {
            // Log error and handle gracefully
            return BadRequest("Printer not available");
        }
        pdf.Print();
        // Log successful output
        return Ok($"Document {documentId} printed successfully");
    }
    catch (Exception ex)
    {
        // Log error details
        return StatusCode(500, "Printing failed");
    }
}
using System.Drawing.Printing; // For PrinterSettings
// ... other usings ...
public IActionResult SafePrint(string documentId)
{
    try
    {
        var pdf = LoadPdfDocument(documentId);
        // Verify printer availability
        if (!PrinterSettings.InstalledPrinters.Cast<string>()
            .Contains("Target Printer"))
        {
            // Log error and handle gracefully
            return BadRequest("Printer not available");
        }
        pdf.Print();
        // Log successful output
        return Ok($"Document {documentId} printed successfully");
    }
    catch (Exception ex)
    {
        // Log error details
        return StatusCode(500, "Printing failed");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cela garantit une impression fiable même lorsque les ressources système ne sont pas disponibles et est une partie clé de votre service d'impression.

Sortie Scenarios

Imprimante Non Disponible

Si l'imprimante spécifiée dans le code n'est pas disponible, le code fournira ce message d'erreur :

Comment Imprimer des Fichiers PDF par Programmation dans ASP.NET : Figure 6 - Erreur d'Imprimante non Disponible

PDF Imprimé avec Succès

Si votre PDF est imprimé avec succès, vous devriez voir un message de confirmation tel que :

Comment Imprimer des Fichiers PDF par Programmation dans ASP.NET : Figure 7 - Message de Succès d'Impression de PDF

Configuration Avancée

La structure de dossiers d'IronPDF supporte des scénarios complexes. La version de la bibliothèque IronPDF que vous utilisez peut affecter ces paramètres :

public IActionResult ConfigureAdvancedPrinting(object sender, EventArgs e)
{
    var renderer = new ChromePdfRenderer();
    // Configure rendering options
    renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.RenderDelay = 500; // Wait for dynamic content
    // Generate complex PDF documents
    var pdf = renderer.RenderHtmlAsPdf(GetDynamicContent());
    // Apply security settings
    pdf.SecuritySettings.AllowUserPrinting = true;
    pdf.MetaData.Author = "Your Company";
    return File(pdf.BinaryData, "application/pdf");
}
public IActionResult ConfigureAdvancedPrinting(object sender, EventArgs e)
{
    var renderer = new ChromePdfRenderer();
    // Configure rendering options
    renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.RenderDelay = 500; // Wait for dynamic content
    // Generate complex PDF documents
    var pdf = renderer.RenderHtmlAsPdf(GetDynamicContent());
    // Apply security settings
    pdf.SecuritySettings.AllowUserPrinting = true;
    pdf.MetaData.Author = "Your Company";
    return File(pdf.BinaryData, "application/pdf");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La commande pour imprimer est simplement pdf.Print() une fois le document généré.

Alternative IronPrint

Pour des besoins d'impression spécialisés, Iron Software offre également IronPrint, une bibliothèque d'impression .NET dédiée avec un support multiplateforme amélioré. Vous pouvez trouver un lien pour plus d'informations sur leur site Web. Le paramètre principal est simplement le chemin du fichier. La description du produit est disponible sur leur site Web.

Conclusion

IronPDF transforme l'impression PDF ASP.NET d'un défi complexe en une implémentation simple. Sans nécessiter d'Adobe Reader ou de dépendances externes, vous pouvez générer et imprimer des fichiers PDF avec un minimum de code. La bibliothèque PDF gère tout, de la conversion HTML à la configuration de l'imprimante, ce qui la rend idéale pour l'automatisation côté serveur et les scénarios d'impression côté client.

Prêt à simplifier votre flux de travail d'impression PDF ? Commencez dès aujourd'hui avec l'essai gratuit et découvrez comment IronPDF simplifie le traitement des documents dans vos applications ASP.NET. Avec une documentation complète et un support technique direct, vous aurez une impression PDF prête pour la production en quelques minutes.

Questions Fréquemment Posées

Comment puis-je imprimer des fichiers PDF dans ASP.NET ?

Vous pouvez imprimer des fichiers PDF dans ASP.NET en utilisant IronPDF, qui simplifie le processus grâce à son API complète permettant une intégration facile et une fonctionnalité d'impression fiable.

Quels sont les défis courants lors de l'impression de PDF dans les applications ASP.NET ?

Les défis courants incluent la gestion des complexités de l'architecture serveur-client et la génération de sorties d'impression cohérentes. IronPDF répond à ces défis avec des fonctionnalités conçues pour une intégration fluide et des résultats fiables.

IronPDF peut-il être utilisé pour générer des documents PDF à des fins spécifiques comme des factures ou des rapports ?

Oui, IronPDF peut être utilisé pour générer des PDFs pour diverses utilisations, y compris des factures, des rapports et des étiquettes d'expédition, offrant aux développeurs un outil polyvalent pour la génération de documents.

Quelles fonctionnalités IronPDF offre-t-il pour soutenir l'impression de PDF en ASP.NET ?

IronPDF offre des fonctionnalités telles que la conversion HTML en PDF, le style CSS et le support JavaScript, qui facilitent l'impression efficace de PDF dans les applications ASP.NET.

Est-il possible d'automatiser l'impression de PDF en ASP.NET avec IronPDF ?

Oui, IronPDF permet l'automatisation de l'impression de PDF dans les applications ASP.NET, permettant aux développeurs de rationaliser les flux de travail et d'améliorer la productivité.

Comment IronPDF gère-t-il les complexités de l'architecture serveur-client ?

IronPDF est conçu pour gérer les complexités de l'architecture serveur-client en fournissant une API robuste qui simplifie le processus de génération et d'impression de PDFs directement depuis le côté serveur.

IronPDF prend-il en charge la personnalisation des documents PDF avant l'impression ?

IronPDF prend en charge une large gamme d'options de personnalisation pour les documents PDF, permettant aux développeurs de contrôler la mise en page, le contenu et le design avant l'impression.

Quels langages de programmation sont compatibles avec IronPDF pour l'impression de PDF ?

IronPDF est compatible avec C# et d'autres langages .NET, ce qui en fait un choix idéal pour les développeurs travaillant dans le cadre ASP.NET.

IronPDF peut-il être intégré avec d'autres applications .NET ?

Oui, IronPDF peut être facilement intégré avec d'autres applications .NET, permettant des ajouts sans couture aux systèmes existants et renforçant les capacités de gestion de PDF.

Comment IronPDF assure-t-il des sorties d'impression cohérentes sur différents appareils ?

IronPDF assure des sorties d'impression cohérentes en prenant en charge le rendu de haute fidélité et la conversion précise de HTML, CSS, et JavaScript en PDF, quel que soit l'appareil utilisé pour imprimer.

IronPDF est-il compatible avec .NET 10 et quels avantages offre la mise à niveau ?

Oui, IronPDF est entièrement compatible avec .NET 10, y compris les projets .NET 10 ciblant Windows, Linux, macOS et les environnements conteneurisés. La mise à niveau vers .NET 10 offre des améliorations telles qu'une consommation de mémoire réduite, de meilleures performances, de nouvelles fonctionnalités du langage C# et des optimisations d'ASP.NET Core 10 qui simplifient la génération et l'intégration de fichiers 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