Imprimer dans une application Web ASP.NET Framework avec C#35;

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

La méthode PrintAsync d'IronPrint permet l'impression non bloquante de documents dans les applications web ASP.NET, évitant ainsi le gel de l'interface utilisateur lors du traitement des demandes d'impression. Cette approche asynchrone permet aux applications web réactives de gérer les opérations d'impression sans bloquer les threads.

<TODO : Ajouter une image ici -->

Les applications web nécessitent souvent l'impression de documents en sortie finale. L'intégration des fonctionnalités d'impression dans les applications web présente des défis, en particulier lorsqu'il s'agit d'opérations asynchrones. IronPrint résout ce problème grâce à la fonction PrintAsync. Ce tutoriel démontre la mise en œuvre de PrintAsync avec ASP.NET Core pour créer une application web qui imprime des documents sans blocage.

Avant la mise en œuvre, notez qu'IronPrint offre des fonctionnalités complètes, notamment recherche d'informations sur l'imprimante et paramètres d'impression personnalisés. Ces capacités en font un outil idéal pour les applications ASP.NET d'entreprise nécessitant une fonctionnalité d'impression robuste.

Démarrage rapide : Impression PDF asynchrone avec IronPrint dans ASP.NET

Voici un exemple minimal illustrant l'API PrintAsync d'IronPrint - une ligne dans votre contrôleur lance l'impression sans geler votre application. Aucun modèle de base n'est nécessaire.

Nuget IconCommencez dès maintenant à créer des PDF avec NuGet :

  1. Installez IronPrint avec le gestionnaire de packages NuGet

    PM > Install-Package IronPrint

  2. Copiez et exécutez cet extrait de code.

    return await IronPrint.Printer.PrintAsync("Basic.pdf");
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronPrint dans votre projet dès aujourd'hui grâce à un essai gratuit.
    arrow pointer

Comment implémenter l'impression PDF asynchrone en ASP.NET?

Cet exemple démontre l'impression d'un fichier PDF de manière asynchrone dans un projet ASP.NET Web Application (.NET Framework) à l'aide de la méthode PrintAsync. PrintAsync lance l'impression de manière asynchrone, ce qui permet à l'application de rester réactive par rapport aux méthodes Print synchrones qui bloquent les threads.

<TODO : Ajouter une image ici -->

L'approche asynchrone est essentielle dans les applications web où plusieurs utilisateurs peuvent déclencher des opérations d'impression simultanément. Contrairement à la méthode synchrone Print, PrintAsync garantit que votre application gère les demandes concurrentes sans dégradation des performances.

Où dois-je ajouter le bouton d'impression?

Dans votre fichier " Index.cshtml " (ou vue de page d'accueil), ajoutez un bouton qui déclenche une action lorsqu'on clique dessus. Ce bouton invoque une méthode ActionResult dans votre contrôleur :

@{
    ViewBag.Title = "Home Page";
}

<main>
    <section class="row" aria-labelledby="aspnetTitle">
        <h1 id="title">ASP.NET</h1>
        <p>
            <!-- Button that triggers the PrintPdf ActionResult -->
            <a class="btn btn-primary btn-md" onclick="location.href='@Url.Action("PrintPdf", "Home")'">Print PDF</a>
        </p>
    </section>
</main>
@{
    ViewBag.Title = "Home Page";
}

<main>
    <section class="row" aria-labelledby="aspnetTitle">
        <h1 id="title">ASP.NET</h1>
        <p>
            <!-- Button that triggers the PrintPdf ActionResult -->
            <a class="btn btn-primary btn-md" onclick="location.href='@Url.Action("PrintPdf", "Home")'">Print PDF</a>
        </p>
    </section>
</main>
HTML

Interface de l'application ASP.NET montrant le menu de navigation et le bouton bleu Imprimer PDF pour générer des PDF


Comment configurer PrintAsync dans mon contrôleur?

Dans votre HomeController, mettez en œuvre la méthode PrintAsync. Cette méthode exécute les opérations d'impression de manière asynchrone, ce qui améliore la réactivité de l'application. Avant la mise en œuvre, veillez à ce que la configuration de la clé de licence soit correcte pour une utilisation en production.

using IronPrint;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace WebApplication4.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";
            return View();
        }

        public ActionResult Contact()
        {
            return View();
        }

        // Action method to handle the printing operation
        // This makes use of the PrintAsync method to avoid blocking the main thread
        public ActionResult PrintPdf()
        {
            // Wait for the asynchronous print operation to complete
            Printer.PrintAsync("Basic.pdf").Wait();

            // Return some view, for example, a confirmation page or the index page
            return View(); // Replace with an appropriate view
        }
    }
}
using IronPrint;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace WebApplication4.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";
            return View();
        }

        public ActionResult Contact()
        {
            return View();
        }

        // Action method to handle the printing operation
        // This makes use of the PrintAsync method to avoid blocking the main thread
        public ActionResult PrintPdf()
        {
            // Wait for the asynchronous print operation to complete
            Printer.PrintAsync("Basic.pdf").Wait();

            // Return some view, for example, a confirmation page or the index page
            return View(); // Replace with an appropriate view
        }
    }
}
$vbLabelText   $csharpLabel

Pour les scénarios avancés, mettez en œuvre des modèles asynchrones/attendus appropriés et personnalisez l'opération d'impression. Voici un exemple amélioré démontrant la gestion des erreurs et les paramètres d'impression personnalisés :

using IronPrint;
using System;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace WebApplication4.Controllers
{
    public class HomeController : Controller
    {
        // Async action method with proper error handling
        public async Task<ActionResult> PrintPdfAdvanced()
        {
            try
            {
                // Create custom print settings
                var printSettings = new PrintSettings
                {
                    // Select specific printer
                    PrinterName = "Microsoft Print to PDF",
                    // Set paper size
                    PaperSize = PaperSize.A4,
                    // Configure orientation
                    PaperOrientation = PaperOrientation.Portrait,
                    // Set number of copies
                    NumberOfCopies = 1,
                    // Configure DPI for high-quality output
                    Dpi = 300
                };

                // Print asynchronously with custom settings
                await Printer.PrintAsync("Basic.pdf", printSettings);

                // Log successful print operation (optional)
                System.Diagnostics.Debug.WriteLine("Document printed successfully");

                // Return success view or redirect
                TempData["PrintMessage"] = "Document sent to printer successfully!";
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                // Handle printing errors gracefully
                System.Diagnostics.Debug.WriteLine($"Printing error: {ex.Message}");
                TempData["ErrorMessage"] = "Unable to print document. Please try again.";
                return RedirectToAction("Index");
            }
        }
    }
}
using IronPrint;
using System;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace WebApplication4.Controllers
{
    public class HomeController : Controller
    {
        // Async action method with proper error handling
        public async Task<ActionResult> PrintPdfAdvanced()
        {
            try
            {
                // Create custom print settings
                var printSettings = new PrintSettings
                {
                    // Select specific printer
                    PrinterName = "Microsoft Print to PDF",
                    // Set paper size
                    PaperSize = PaperSize.A4,
                    // Configure orientation
                    PaperOrientation = PaperOrientation.Portrait,
                    // Set number of copies
                    NumberOfCopies = 1,
                    // Configure DPI for high-quality output
                    Dpi = 300
                };

                // Print asynchronously with custom settings
                await Printer.PrintAsync("Basic.pdf", printSettings);

                // Log successful print operation (optional)
                System.Diagnostics.Debug.WriteLine("Document printed successfully");

                // Return success view or redirect
                TempData["PrintMessage"] = "Document sent to printer successfully!";
                return RedirectToAction("Index");
            }
            catch (Exception ex)
            {
                // Handle printing errors gracefully
                System.Diagnostics.Debug.WriteLine($"Printing error: {ex.Message}");
                TempData["ErrorMessage"] = "Unable to print document. Please try again.";
                return RedirectToAction("Index");
            }
        }
    }
}
$vbLabelText   $csharpLabel

Cette mise en œuvre améliorée présente des concepts du guide Paramètres d'impression, notamment la spécification des noms d'imprimante, la configuration des formats de papier et le traitement approprié des erreurs.

Lorsque vous travaillez avec la sélection d'imprimantes dans des environnements web, tirez parti de la fonctionnalité Get Printer Names pour alimenter de manière dynamique les listes d'imprimantes disponibles :

// Get list of available printers
public ActionResult GetAvailablePrinters()
{
    var printers = Printer.GetPrinterNames();
    ViewBag.PrinterList = new SelectList(printers);
    return View();
}
// Get list of available printers
public ActionResult GetAvailablePrinters()
{
    var printers = Printer.GetPrinterNames();
    ViewBag.PrinterList = new SelectList(printers);
    return View();
}
$vbLabelText   $csharpLabel

Pour les scénarios nécessitant une interaction avec l'utilisateur, envisagez de mettre en œuvre une approche Imprimer avec le dialogue, bien que cette approche convienne mieux aux applications de bureau qu'aux environnements web.

Considérations supplémentaires pour le déploiement en production

Lorsque vous déployez votre application ASP.NET avec IronPrint, tenez compte des facteurs suivants :

  1. Configuration de la licence : Pour les applications ASP.NET, configurez votre clé de licence dans Web.config. Consultez le guide Configuration de la clé de licence dans Web.config pour une configuration correcte.

  2. Accès aux imprimantes : assurez-vous que l'identité du pool d'applications dispose des autorisations nécessaires pour accéder aux imprimantes locales ou réseau. La documentation Imprimez vos documents présente les conditions d'accès à l'imprimante.

  3. Gestion des erreurs : mettre en œuvre une gestion robuste des erreurs pour les imprimantes hors ligne ou les documents inaccessibles. Pour les questions techniques, utilisez le processus Engineering Request pour résoudre les problèmes complexes.

  4. Performance : Pour les gros volumes d'impression, mettez en place un système de file d'attente pour gérer efficacement les demandes d'impression. Le PrintAsync asynchrone est idéal pour de telles implémentations.

Pour des fonctionnalités d'impression complètes, consultez la référence API pour une documentation détaillée de toutes les méthodes et propriétés de l'espace de noms IronPrint.

Questions Fréquemment Posées

Comment mettre en œuvre l'impression PDF asynchrone dans les applications ASP.NET Framework ?

Vous pouvez mettre en œuvre l'impression PDF asynchrone à l'aide de la méthode PrintAsync d'IronPrint. Il suffit d'ajouter `return await IronPrint.Printer.PrintAsync("yourfile.pdf");` dans l'action de votre contrôleur. Cette approche non bloquante garantit que votre application web reste réactive pendant le traitement des demandes d'impression, évitant ainsi que l'interface utilisateur ne se fige pendant les opérations d'impression de documents.

Pourquoi devrais-je utiliser l'impression asynchrone au lieu de l'impression synchrone dans les applications web ?

L'impression asynchrone avec la méthode PrintAsync d'IronPrint est essentielle pour les applications web où plusieurs utilisateurs peuvent déclencher des opérations d'impression simultanément. Contrairement aux méthodes d'impression synchrones qui bloquent les threads, PrintAsync permet à votre application de traiter des demandes simultanées sans dégradation des performances, en maintenant la réactivité même en cas de forte charge.

Quelles sont les étapes minimales pour ajouter l'impression PDF à mon projet ASP.NET Framework ?

Le flux de travail minimal comprend 5 étapes : 1) Télécharger la bibliothèque IronPrint pour C#, 2) Importer IronPrint dans votre fichier de classe, 3) Ajouter un bouton d'impression à votre vue, 4) Mettre en œuvre PrintAsync dans l'action de votre contrôleur, et 5) Vérifier que l'impression du document fonctionne lorsque le bouton est pressé. Ce processus rationalisé ne nécessite qu'un minimum de modifications du code.

Comment ajouter un bouton d'impression à ma vue ASP.NET ?

Dans votre Index.cshtml ou la vue de la page d'accueil, ajoutez un bouton qui déclenche une action du contrôleur. Utilisez un code HTML comme ``. Ce bouton invoquera la méthode PrintPDF ActionResult dans votre contrôleur Home lorsqu'il sera cliqué.

Puis-je personnaliser les paramètres d'impression lorsque j'utilise l'impression asynchrone ?

Oui, IronPrint offre des fonctionnalités complètes, notamment des paramètres d'impression personnalisés et la récupération d'informations sur l'imprimante. Ces capacités en font un outil idéal pour les applications ASP.NET d'entreprise nécessitant une fonctionnalité d'impression robuste avec des options permettant de configurer la sélection de l'imprimante, l'orientation de la page, les marges et d'autres paramètres d'impression.

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
Prêt à commencer?
Nuget Téléchargements 36,035 | Version : 2025.12 vient de sortir