Drukowanie w aplikacji internetowej ASP.NET Framework przy użyciu języka C

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

Metoda PrintAsync w IronPrint umożliwia nieblokujące drukowanie dokumentów w aplikacjach webowych ASP.NET, zapobiegając zamrażaniu interfejsu użytkownika podczas przetwarzania zadań drukowania. To asynchroniczne podejście gwarantuje, że responsywne aplikacje internetowe mogą obsługiwać operacje PRINT bez blokowania wątków.

Aplikacje internetowe często wymagają drukowania dokumentów jako końcowego wyniku. Integracja funkcji PRINT z aplikacjami internetowymi wiąże się z pewnymi wyzwaniami, zwłaszcza w przypadku operacji asynchronicznych. IronPrint rozwiązuje ten problem za pomocą funkcji PrintAsync. Ten samouczek pokazuje implementację PrintAsync w ASP.NET Core, aby stworzyć aplikację webową, która drukuje dokumenty bez blokowania.

Przed wdrożeniem należy pamiętać, że IronPrint oferuje szeroki zakres funkcji, w tym pobieranie informacji o drukarce i niestandardowe ustawienia drukowania. Te możliwości sprawiają, że idealnie nadaje się do Enterprise aplikacji ASP.NET wymagających solidnej funkcjonalności drukowania.

Szybki start: Asynchroniczne drukowanie plików PDF w ASP.NET

  1. Zainstaluj IronPrint za pomocą NuGet: Install-Package IronPrint
  2. Zaimportuj IronPrint do pliku kontrolera
  3. Dodaj przycisk PRINT, aby wywołać metodę
  4. Wywołaj await Printer.PrintAsync("file.pdf") w akcji kontrolera
  5. Sprawdź drukowanie dokumentu po naciśnięciu przycisku PRINT
  1. Install IronPrint with NuGet Package Manager

    PM > Install-Package IronPrint
  2. Skopiuj i uruchom ten fragment kodu.

    return await IronPrint.Printer.PrintAsync("Basic.pdf");
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPrint w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Rozpocznij pracę z IronPrint

Rozpocznij używanie IronPrint w swoim projekcie już dziś dzięki darmowej wersji próbnej.

Pierwszy krok:
green arrow pointer


Jak zaimplementować asynchroniczne drukowanie plików PDF w ASP.NET?

Ten przykład demonstruje asynchroniczne drukowanie pliku PDF w projekcie Aplikacji Webowej ASP.NET (.NET Framework) za pomocą metody PrintAsync. PrintAsync inicjuje drukowanie asynchronicznie, utrzymując responsywność aplikacji w porównaniu do synchronicznych metod Print, które blokują wątki.

Podejście asynchroniczne ma kluczowe znaczenie w aplikacjach internetowych, w których wielu użytkowników może jednocześnie uruchamiać operacje PRINT. W przeciwieństwie do synchronicznej metody Print, PrintAsync zapewnia, że aplikacja obsługuje zlecenia jednoczesne bez pogorszenia wydajności.

Gdzie powinienem umieścić przycisk PRINT?

W pliku "Index.cshtml" (lub widoku strony głównej) dodaj przycisk, który po kliknięciu uruchamia akcję. Ten przycisk wywołuje metodę ActionResult w kontrolerze:

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

<main>
    <section class="row" aria-labelledby="aspnetTitle">
        <h1 id="title">ASP.NET</h1>
        <p>

            <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>

            <a class="btn btn-primary btn-md" onclick="location.href='@Url.Action("PrintPdf", "Home")'">Print PDF</a>
        </p>
    </section>
</main>
HTML

Interfejs aplikacji ASP.NET pokazujący menu nawigacyjne oraz niebieski przycisk Print PDF do generowania plików PDF


Jak skonfigurować PrintAsync w moim kontrolerze?

W HomeController, należy zaimplementować metodę PrintAsync. Ta metoda wykonuje operacje drukowania asynchronicznie, zwiększając responsywność aplikacji. Przed wdrożeniem należy upewnić się, że klucz licencyjny jest poprawnie skonfigurowany do użytku produkcyjnego.

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
        }
    }
}
Imports IronPrint
Imports System.Threading.Tasks
Imports System.Web.Mvc

Namespace WebApplication4.Controllers
	Public Class HomeController
		Inherits Controller

		Public Function Index() As ActionResult
			Return View()
		End Function

		Public Function About() As ActionResult
			ViewBag.Message = "Your application description page."
			Return View()
		End Function

		Public Function Contact() As ActionResult
			Return View()
		End Function

		' Action method to handle the printing operation
		' This makes use of the PrintAsync method to avoid blocking the main thread
		Public Function PrintPdf() As ActionResult
			' 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
		End Function
	End Class
End Namespace
$vbLabelText   $csharpLabel

W zaawansowanych scenariuszach należy wdrożyć odpowiednie wzorce async/await i dostosować operację PRINT. Oto rozbudowany przykład ilustrujący obsługę błędów i niestandardowe ustawienia drukowania:

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");
            }
        }
    }
}
Imports IronPrint
Imports System
Imports System.Threading.Tasks
Imports System.Web.Mvc

Namespace WebApplication4.Controllers
    Public Class HomeController
        Inherits Controller

        ' Async action method with proper error handling
        Public Async Function PrintPdfAdvanced() As Task(Of ActionResult)
            Try
                ' Create custom print settings
                Dim printSettings As New PrintSettings With {
                    ' 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 ex As Exception
                ' Handle printing errors gracefully
                System.Diagnostics.Debug.WriteLine($"Printing error: {ex.Message}")
                TempData("ErrorMessage") = "Unable to print document. Please try again."
                Return RedirectToAction("Index")
            End Try
        End Function
    End Class
End Namespace
$vbLabelText   $csharpLabel

Ta ulepszona implementacja prezentuje koncepcje z przewodnika "Ustawienia drukowania", w tym określanie nazw drukarek, konfigurowanie rozmiarów papieru oraz odpowiednie postępowanie w przypadku błędów.

Podczas pracy z wyborem drukarki w środowiskach internetowych należy wykorzystać funkcję Get Printer Names do dynamicznego wypełniania list dostępnych drukarek:

// 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();
}
' Get list of available printers
Public Function GetAvailablePrinters() As ActionResult
    Dim printers = Printer.GetPrinterNames()
    ViewBag.PrinterList = New SelectList(printers)
    Return View()
End Function
$vbLabelText   $csharpLabel

W scenariuszach wymagających interakcji z użytkownikiem warto rozważyć zastosowanie podejścia "PRINT z oknem dialogowym", choć rozwiązanie to lepiej sprawdza się w aplikacjach desktopowych niż w środowiskach internetowych.

Dodatkowe uwagi dotyczące wdrożenia produkcyjnego

Wdrażając aplikację ASP.NET z wykorzystaniem IronPrint, należy wziąć pod uwagę następujące czynniki:

  1. Konfiguracja licencji: W przypadku aplikacji ASP.NET skonfiguruj klucz licencyjny w pliku Web.config. Aby uzyskać informacje na temat prawidłowej konfiguracji, zapoznaj się z przewodnikiem Ustawianie klucza licencyjnego w pliku Web.config.

  2. Dostęp do drukarek: Upewnij się, że tożsamość puli aplikacji ma uprawnienia dostępu do drukarek lokalnych lub sieciowych. Dokumentacja Print Your Documents zawiera wymagania dotyczące dostępu do drukarki.

  3. Obsługa błędów: Należy wdrożyć solidną obsługę błędów dla drukarek offline lub dokumentów, do których nie ma dostępu. W przypadku problemów technicznych należy skorzystać z procesu zgłoszeń inżynieryjnych, aby rozwiązać złożone problemy.

  4. Wydajność: W przypadku drukowania dużych nakładów należy wdrożyć system kolejkowania, aby efektywnie zarządzać zleceniami drukowania. Asynchroniczne PrintAsync jest idealne dla takich implementacji.

Aby uzyskać informacje na temat kompleksowych możliwości drukowania, zapoznaj się z Dokumentacją API, zawierającą szczegółowe opisy wszystkich metod i właściwości w przestrzeni nazw IronPrint.

Często Zadawane Pytania

Jak zaimplementować asynchroniczne drukowanie PDF w aplikacjach ASP.NET Framework?

Możesz zaimplementować asynchroniczne drukowanie PDF używając metody PrintAsync IronPrint. Po prostu dodaj `return await IronPrint.Printer.PrintAsync("yourfile.pdf");` w akcji kontrolera. To podejście bez blokowania zapewnia, że Twoja aplikacja webowa pozostaje responsywna podczas przetwarzania żądań druku, zapobiegając zamrożeniom interfejsu użytkownika podczas operacji drukowania dokumentów.

Dlaczego powinienem używać asynchronicznego drukowania zamiast synchronicznego drukowania w aplikacjach webowych?

Asynchroniczne drukowanie z metodą PrintAsync IronPrint jest kluczowe dla aplikacji webowych, gdzie wielu użytkowników może jednocześnie uruchamiać operacje drukowania. W odróżnieniu od synchronicznych metod Print, które blokują wątki, PrintAsync zapewnia, że Twoja aplikacja obsługuje równoczesne żądania bez pogorszenia wydajności, utrzymując responsywność nawet pod dużym obciążeniem.

Jakie są minimalne kroki, aby dodać drukowanie PDF do mojego projektu ASP.NET Framework?

Minimalny przepływ pracy składa się z 5 kroków: 1) Pobierz bibliotekę IronPrint dla C#, 2) Importuj IronPrint do pliku klasy, 3) Dodaj przycisk drukowania do widoku, 4) Zaimplementuj PrintAsync w akcji kontrolera, i 5) Zweryfikuj działanie drukowania dokumentu po naciśnięciu przycisku. Ten uproszczony proces wymaga minimalnych zmian w kodzie.

Jak dodać przycisk drukowania do mojego widoku ASP.NET?

In your Index.cshtml or home page view, add a button that triggers a controller action. Use HTML like ``. This button will invoke the PrintPDF ActionResult method in your Home controller when clicked.

Czy mogę dostosować ustawienia drukowania przy użyciu asynchronicznego drukowania?

Tak, IronPrint oferuje rozbudowane funkcje, w tym dostosowane ustawienia drukowania i pobieranie informacji o drukarce. Te możliwości sprawiają, że jest idealnym rozwiązaniem dla aplikacji ASP.NET w przedsiębiorstwach, które wymagają zaawansowanej funkcjonalności drukowania z opcjami konfigurowania wyboru drukarki, orientacji strony, marginesów i innych parametrów drukowania.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 38,948 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPrint
uruchom próbkę obserwuj, jak twój dokument trafia do drukarki.