Passer au contenu du pied de page
UTILISATION DE IRONPDF

ASP .NET Imprimez des fichiers PDF par programmation avec IronPDF for NET

ASP .NET Print PDF File Tasks (Tâches d'impression de fichiers PDF)

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.

Dans cet article, nous vous montrons comment gérer les tâches d'impression de PDF en utilisant la puissante bibliothèque PDF d'IronPDF pour .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 à l'aide de NuGet :

Install-Package IronPdf
Install-Package IronPdf
SHELL

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 prend en charge la conversion tout en préservant le style CSS et le formatage de la taille des polices. Cet exemple montre une impression basique à l'imprimante par défaut sans interaction utilisateur.

Sortie

ASP .NET Imprimer des fichiers PDF de manière programmatique avec IronPDF : Image 1 - Impression d'un fichier PDF (Dans cet exemple, nous imprimons sur disque)

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

ASP .NET Imprimer des fichiers PDF de manière programmatique avec IronPDF : Image 2 - Impression de fichiers PDF avec l'impression réseau

Confirmation d'Impression

ASP .NET Imprimez des fichiers PDF de manière programmatique avec IronPDF : Image 3 - Message de succès pour le travail d'impression 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.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.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

ASP .NET Imprimez des fichiers PDF de manière programmatique avec IronPDF : Image 4 - Dialogue d'impression côté client

Travailler avec différentes 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.

ASP .NET Imprimez des fichiers PDF de manière programmatique avec IronPDF : Image 5 - Image 5 de 7 liées à ASP .NET Print PDF Files Programmatically with IronPDF

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.

Scénarios de Sortie

Imprimante Non Disponible

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

ASP .NET Imprimez des fichiers PDF de manière programmatique avec IronPDF : Image 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 :

ASP .NET Imprimez des fichiers PDF de manière programmatique avec IronPDF : Image 7 - Message de réussite de l'impression du 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 d'impression est simplement pdf.Print() une fois que le document est 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 un PDF directement à partir d'une application ASP.NET ?

Vous pouvez imprimer un PDF directement à partir d'une application ASP.NET à l'aide d'IronPDF en convertissant les fichiers HTML en PDF puis en les envoyant à une imprimante. IronPDF simplifie ce processus grâce à ses méthodes intégrées.

Quels sont les avantages de l'utilisation d'IronPDF pour l'impression de PDF en ASP.NET ?

IronPDF offre plusieurs avantages pour l'impression de PDF en ASP.NET, notamment une intégration facile, un rendu de haute qualité et la possibilité de convertir du contenu HTML en PDF avec précision.

Est-il possible de personnaliser le PDF avant l'impression à l'aide d'IronPDF ?

Oui, IronPDF vous permet de personnaliser les PDF avant de les imprimer en ajoutant des en-têtes, des pieds de page et des filigranes, ainsi qu'en définissant la taille des pages et les marges.

IronPDF peut-il gérer des fichiers PDF volumineux pour l'impression ?

IronPDF est capable de traiter efficacement des fichiers PDF volumineux, ce qui garantit que même les documents complexes sont imprimés avec précision et rapidité à partir de votre application ASP.NET.

IronPDF prend-il en charge différents paramètres d'imprimante pour l'impression de PDF ?

IronPDF prend en charge différents paramètres d'impression, ce qui vous permet de spécifier la taille du papier, l'orientation et la qualité d'impression en fonction de vos besoins.

Existe-t-il un moyen de prévisualiser les PDF avant de les imprimer en ASP.NET ?

Avec IronPDF, vous pouvez générer et afficher un aperçu PDF au sein de votre application ASP.NET, ce qui permet aux utilisateurs d'examiner le document avant de lancer la commande d'impression.

Quels formats IronPDF peut-il convertir en PDF pour l'impression ?

IronPDF peut convertir un large éventail de formats en PDF pour l'impression, y compris HTML, ASPX et les fichiers d'images, ce qui le rend polyvalent pour divers besoins d'application.

Comment IronPDF garantit-il la qualité des documents PDF imprimés ?

IronPDF utilise une technologie de rendu avancée pour s'assurer que les documents PDF imprimés conservent une grande fidélité au contenu original, avec des textes nets et des images claires.

IronPDF peut-il être utilisé pour imprimer des PDF cryptés ou protégés par un mot de passe ?

Oui, IronPDF peut gérer des PDF cryptés ou protégés par un mot de passe, ce qui vous permet de les imprimer en toute sécurité en fournissant les informations d'identification nécessaires au sein de votre application ASP.NET.

Est-il facile d'intégrer IronPDF dans une application ASP.NET existante ?

L'intégration d'IronPDF dans une application ASP.NET existante est simple grâce à sa documentation complète et à sa prise en charge de divers environnements de développement.

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