IRONSOFTWAREHOME
NARZĘDZIA PDF

Najlepszy czytnik PDF na iPhone (Porównanie darmowych i płatnych narzędzi)

Curtis Chau
Curtis Chau
Updated: 20 czerwca 2026

IronPDF zapewnia doskonałą konwersję HTML do PDF z pełną obsługą CSS3 i JavaScript przy użyciu renderowania Chrome. W przeciwieństwie do tego, iText oferuje programistyczne tworzenie PDF, ale ma trudności z nowoczesną konwersją HTML, co czyni IronPDF lepszym wyborem dla aplikacji ASP.NET MVC wymagających PDF zgodnych z web-standardami.

Tworzenie dokumentów PDF w aplikacjach ASP.NET MVC jest powszechnym wymogiem przy generowaniu raportów, faktur i treści do pobrania. Chociaż iText był popularnym wyborem przez lata, IronPDF oferuje nowoczesną alternatywę o lepszych możliwościach renderowania HTML. W tym artykułe omówiono oba podejścia, aby pomóc Ci podjąć świadomą decyzję dotyczącą Twoich potrzeb w zakresie generowania plików PDF w środowisku .NET.

Obie biblioteki rozwiązują ten sam podstawowy problem — generowanie plików PDF w kontekście sieciowym .NET — ale stosują zasadniczo różne podejścia. iText buduje PDF-y programistycznie poprzez model obiektowy, podczas gdy IronPDF konwertuje HTML do PDF używając pełnego silnika renderowania Chrome. Zrozumienie tej różnicy architektonicznej jest kluczem do wybrania odpowiedniego narzędzia. Framework ASP.NET MVC firmy Microsoft obsługuje oba wzorce integracji, a każdą z bibliotek można podłączyć do standardowego potoku kontroler-akcja.

Jak zainstalować każdą z bibliotek?

Przed napisaniem jakiegokolwiek kodu należy dodać każdą bibliotekę do swojego projektu. NuGet jest standardowym menedżerem pakietów dla platformy .NET i sprawnie obsługuje oba rodzaje instalacji. Dla iText, zainstaluj pakiet legacy via NuGet:

dotnet add package iTextSharp
SHELL

W przypadku IronPDF należy również zainstalować go za pośrednictwem NuGet:

dotnet add package IronPdf

IronPDF zawiera silnik renderujący Chrome w pakiecie, więc nie jest wymagana dodatkowa instalacja przeglądarki na serwerze. Biblioteka od razu po instalacji obsługuje systemy Windows, Linux, macOS oraz środowiska kontenerowe. Po instalacji dodaj klucz licencyjny IronPDF podczas uruchamiania aplikacji.

Jak generować PDF przy użyciu iText w MVC?

Aby generować pliki PDF przy użyciu iText w aplikacji ASP.NET MVC, najpierw zainstaluj bibliotekę przez NuGet. Biblioteka iText zapewnia niskopoziomową kontrolę nad tworzeniem PDF poprzez swoją klasę Document i model obiektowy.

Poniższy kod demonstruje gotową do produkcji implementację do tworzenia PDF z iText w kontrolerze MVC:

// Production-ready iTextSharp implementation with proper resource disposal
public class ReportController : Controller
{
    private readonly ILogger<ReportController> _logger;

    public ReportController(ILogger<ReportController> logger)
    {
        _logger = logger;
    }

    public ActionResult GeneratePDF()
    {
        try
        {
            using var memoryStream = new MemoryStream();
            using var document = new Document(PageSize.A4, 50, 50, 25, 25);
            using var writer = PdfWriter.GetInstance(document, memoryStream);

            document.Open();
            document.AddTitle("Generated Report");
            document.AddCreationDate();

            var titleFont = FontFactory.GetFont(FontFactory.HELVETICA_BOLD, 16);
            document.Add(new Paragraph("Hello World", titleFont));
            document.Add(new Paragraph("This is a PDF document created with iTextSharp"));

            var table = new PdfPTable(3);
            table.AddCell("Header 1");
            table.AddCell("Header 2");
            table.AddCell("Header 3");
            document.Add(table);

            document.Close();

            var pdfBytes = memoryStream.ToArray();
            Response.Headers.Add("Content-Disposition", "inline; filename=report.pdf");
            _logger.LogInformation("PDF generated: {Size} bytes", pdfBytes.Length);
            return File(pdfBytes, "application/pdf");
        }
        catch (Exception ex)
        {
            _logger.LogError(ex, "Error generating PDF");
            return StatusCode(500, "Error generating PDF document");
        }
    }
}

Jak wygląda wyjście iText?

Przeglądarka PDF wyświetla prosty dokument z nagłówkiem 'Hello World' i podtytułem 'This is a PDF document created with iText' na białym tle, pokazując podstawowe możliwości formatowania tekstu i tabeli dla programistycznego tworzenia PDF

Ten kod demonstracyjny pokazuje fundamentalne podejście: utwórz instancję Document, dołącz PdfWriter do strumienia, dodaj zawartość używając obiektów elementów, i zwróć plik przez rezultat akcji. Implementacja obsługuje wzorce usuwania zasobów niezbędne w systemach produkcyjnych. W bardziej zaawansowanych scenariuszach można skonfigurować niestandardowe rozmiary papieru, zarządzać orientacją stron lub dodawać numery stron.

Podejście programowe zapewnia precyzyjną kontrolę nad każdym elementem na stronie. Ta precyzja jest przydatna podczas generowania dokumentów o stałym układzie, takich jak faktury, certyfikaty lub formularze, których struktura jest zawsze taka sama. Staje się to jednak utrudnieniem, gdy treść jest dynamiczna lub oparta na szablonie HTML.

Jakie są wyzwania związane z konwersją HTML do PDF za pomocą biblioteki iText?

Chociaż iText doskonale radzi sobie z programistycznym tworzeniem PDF, konwersja HTML do PDF stanowi duże wyzwania. Przestarzała klasa HTMLWorker i jej zamiennik XMLWorker mają ograniczone wsparcie dla CSS i radzą sobie z trudem z nowoczesnymi treściami webowymi, szczególnie przy pracy z responsywnym CSS i treściami renderowanymi przez JavaScript.

// HTML conversion with iTextSharp -- note the CSS limitations
public class HtmlToPdfController : Controller
{
    private readonly ILogger<HtmlToPdfController> _logger;

    public HtmlToPdfController(ILogger<HtmlToPdfController> logger)
    {
        _logger = logger;
    }

    public async Task<ActionResult> ConvertHtmlAsync(string htmlContent)
    {
        if (string.IsNullOrWhiteSpace(htmlContent))
            return BadRequest("HTML content is required");

        return await Task.Run(() =>
        {
            using var stream = new MemoryStream();
            using var document = new Document(PageSize.A4);
            using var writer = PdfWriter.GetInstance(document, stream);

            document.Open();

            var cssResolver = XMLWorkerHelper.GetInstance().GetDefaultCssResolver(true);
            var fontProvider = new XMLWorkerFontProvider();
            var cssAppliers = new CssAppliersImpl(fontProvider);
            var htmlContext = new HtmlPipelineContext(cssAppliers);
            htmlContext.SetTagFactory(Tags.GetHtmlTagProcessorFactory());

            // Pipeline with limited CSS3 support
            var pdf = new PdfWriterPipeline(document, writer);
            var html = new HtmlPipeline(htmlContext, pdf);
            var css = new CssResolverPipeline(cssResolver, html);

            var worker = new XMLWorker(css, true);
            var parser = new XMLParser(worker);

            using var stringReader = new StringReader(htmlContent);
            parser.Parse(stringReader);
            document.Close();

            return File(stream.ToArray(), "application/pdf", "converted.pdf");
        });
    }
}

Jak dobrze iText radzi sobie z renderowaniem HTML?

Przeglądarka PDF wyświetlająca dokument testowy przekonwertowany z HTML, pokazująca zachowane formatowanie tekstu (pogrubienie, kursywa, czerwony tekst wbudowany) oraz listę punktowaną, ale bez żółtego tła wspomnianego w treści, co ilustruje ograniczenia renderowania CSS przez XMLWorkerHelper

Ograniczenia stają się widoczne podczas pracy z układami Bootstrap, treściami renderowanymi przez JavaScript lub złożonymi stylami CSS3. Typowe problemy to brakujące czcionki webowe, zerwane responsywne układy i brak wsparcia dla typów nośników CSS. Dodatkowo iText ma trudności z znakami języków międzynarodowych i grafikami SVG przy konwersji treści HTML.

Ograniczenia te nie mają charakteru wyłącznie kosmetycznego. Gdy faktura lub raport przeznaczony dla klienta wyświetla się nieprawidłowo, ponieważ nie pojawia się kolor tła lub siatka się zawala, plik PDF traci swój sens. Dla zespołów, które utrzymują szablony HTML, odbudowa tego samego układu w modelu obiektowym iText oznacza utrzymywanie dwóch wersji każdego projektu dokumentu. To powielanie zwiększa koszty i powoduje rozbieżności między widokiem w przeglądarce a plikiem PDF.

Jak generować pliki PDF z HTML przy użyciu silnika Chrome?

IronPDF zmienia sposób generowania plików PDF dzięki wykorzystaniu silnika renderującego Chrome, zapewniając idealną konwersję HTML do PDF. Zainstaluj pakiet IronPDF NuGet, aby rozpocząć pracę w uproszczony sposób w swoim projekcie Visual Studio.

using IronPdf;

// Configure IronPDF in Program.cs (top-level statements, .NET 10)
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSingleton<ChromePdfRenderer>(_ =>
{
    var renderer = new ChromePdfRenderer();
    renderer.RenderingOptions.MarginTop = 10;
    renderer.RenderingOptions.MarginBottom = 10;
    renderer.RenderingOptions.EnableJavaScript = true;
    renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
    return renderer;
});

builder.Services.AddMemoryCache();
builder.Services.AddControllersWithViews();

var app = builder.Build();
app.MapControllers();
app.Run();

Jakiej jakości możesz oczekiwać od Chrome Rendering?

Przeglądarka PDF wyświetlająca dokument z fioletowym nagłówkiem z gradientem, zawierającym tytuł

ChromePdfRenderer radzi sobie z złożonymi układami bez ręcznych obejść. Obsługuje CSS Grid, Flexbox, czcionki internetowe z Google Fonts oraz wykresy JavaScript. Biblioteka zarządza również opóźnieniami renderowania treści dynamicznych i obsługuje konfigurację okna wyświetlania dla stron responsywnych. Pełne opcje konfiguracji można znaleźć w opisie opcji renderowania.

Jak przekonwertować widok Razor do formatu PDF w ASP.NET MVC?

IronPDF wyróżnia się możliwościami renderowania widoku dzięki silnikowi Razor Engine. Możesz konwertować całe widoki Razor bezpośrednio do formatu PDF z pełną obsługą ViewBag, ViewData i powiązania modeli. Poniższy przykład renderuje widok faktury po stronie serwera i zwraca go jako plik PDF do pobrania:

// Production-ready Razor view to PDF
public class InvoiceController : Controller
{
    private readonly ChromePdfRenderer _pdfRenderer;
    private readonly IInvoiceService _invoiceService;
    private readonly IRazorViewToStringRenderer _razorRenderer;

    public InvoiceController(
        ChromePdfRenderer pdfRenderer,
        IInvoiceService invoiceService,
        IRazorViewToStringRenderer razorRenderer)
    {
        _pdfRenderer = pdfRenderer;
        _invoiceService = invoiceService;
        _razorRenderer = razorRenderer;
    }

    [HttpGet]
    public async Task<IActionResult> DownloadInvoiceAsync(int id)
    {
        var invoice = await _invoiceService.GetInvoiceAsync(id);
        if (invoice == null) return NotFound();

        var htmlContent = await _razorRenderer.RenderViewToStringAsync(
            "Invoice/InvoiceTemplate", invoice);

        var renderOptions = new ChromePdfRenderOptions
        {
            PaperSize = PdfPaperSize.A4,
            MarginTop = 20,
            MarginBottom = 20,
            PrintHtmlBackgrounds = true,
            CreatePdfFormsFromHtml = true
        };

        var pdf = await Task.Run(() =>
            _pdfRenderer.RenderHtmlAsPdf(htmlContent, renderOptions));

        pdf.MetaData.Title = $"Invoice-{invoice.InvoiceNumber}";
        pdf.MetaData.Subject = $"Invoice for {invoice.CustomerName}";

        var fileName = $"Invoice-{invoice.InvoiceNumber}-{DateTime.UtcNow:yyyyMMdd}.pdf";
        return File(pdf.BinaryData, "application/pdf", fileName);
    }
}

Jak konwersja widoku Razor wypada w porównaniu z ręcznym tworzeniem?

Renderowanie w formacie PDF strony głównej aplikacji internetowej ASP.NET Core, pokazujące menu nawigacyjne, nagłówek powitalny i stopkę z zachowanym stylem Bootstrap, ilustrujące sposób przekształcania układów stron internetowych do formatu PDF

Kontrastuj to z podejściem iText, które wymaga ręcznego budowania struktury dokumentu w kodzie. Każdy nagłówek, komórka tabeli, wybór czcionki i dostosowanie odstępów musi być wyrażone jako obiekt C#. Nie ma szablonu HTML, który można by wyświetlić w przeglądarce; Każda zmiana wymaga cyklu kompilacji i sprawdzenia w odniesieniu do pliku PDF.

Integracja IronPDF z Razor pozwala na ponowne wykorzystanie istniejących widoków Razor, plików HTML lub ciągów HTML do generowania plików PDF. Można również pracować z plikami ZIP w formacie HTML lub wdrożyć konfiguracje podstawowych adresów URL do ładowania zasobów. Poradnik dotyczący konwersji CSHTML do PDF zawiera szczegółowy opis całego procesu renderowania Razor, w tym konfiguracji wstrzykiwania zależności.

Jak radzisz sobie z pobieraniem plików i strumieniowaniem w celu utworzenia pliku PDF?

Obie biblioteki obsługują różne metody generowania plików PDF w aplikacjach internetowych. IronPDF oferuje dodatkowe funkcje, takie jak kompresja plików PDF, linearyzacja w celu szybkiego przeglądania w sieci oraz rasteryzacja do obrazów. Poniższy kontroler strumieniowania pokazuje, jak obsługiwać duże pliki PDF z wykorzystaniem buforowania i obsługi żądań zakresowych:

// Streaming controller for large PDFs
public class StreamingPdfController : Controller
{
    private readonly ChromePdfRenderer _ironPdfRenderer;
    private readonly IMemoryCache _cache;

    public StreamingPdfController(ChromePdfRenderer ironPdfRenderer, IMemoryCache cache)
    {
        _ironPdfRenderer = ironPdfRenderer;
        _cache = cache;
    }

    [HttpGet]
    public async Task<IActionResult> StreamLargePdf(string reportId)
    {
        var cacheKey = $"pdf_stream_{reportId}";
        if (_cache.TryGetValue<byte[]>(cacheKey, out var cachedPdf))
            return File(cachedPdf, "application/pdf", $"report_{reportId}.pdf");

        Response.ContentType = "application/pdf";
        Response.Headers.Add("Content-Disposition",
            $"attachment; filename=large_report_{reportId}.pdf");

        await using var stream = Response.BodyWriter.AsStream();
        var html = await GenerateLargeHtmlReport(reportId);
        var pdf = _ironPdfRenderer.RenderHtmlAsPdf(html);
        pdf.SaveAs(stream);

        if (pdf.BinaryData.Length < 10_000_000)
            _cache.Set(cacheKey, pdf.BinaryData, TimeSpan.FromMinutes(30));

        return new EmptyResult();
    }

    [HttpGet]
    public IActionResult DownloadWithRangeSupport(string documentId)
    {
        var pdfBytes = GetPdfBytes(documentId);
        return File(pdfBytes, "application/pdf",
            $"document_{documentId}.pdf", enableRangeProcessing: true);
    }
}

W zaawansowanych scenariuszach IronPDF obsługuje równoległe generowanie plików PDF, przetwarzanie wielowątkowe oraz operacje wsadowe. Możesz wdrożyć niestandardowe logowanie, obsługiwać uwierzytelnianie sieciowe, pracować z plikami cookie oraz dodawać nagłówki żądań HTTP w celu bezpiecznego generowania dokumentów.

Jak wypadają te dwie biblioteki w bezpośrednim porównaniu?

Tabela poniżej podsumowuje kluczowe różnice pomiędzy iText i IronPDF dla projektów ASP.NET MVC:

iText vs. IronPDF -- Porównanie funkcji dla ASP.NET MVC
FunkcjaiTextIronPDF
Renderowanie HTML do PDFOgraniczone (XMLWorker, brak nowoczesnego CSS3)Pełny silnik Chrome (CSS3, JS, Flexbox)
Obsługa Razor / CSHTMLBrak natywnej obsługiWbudowane renderowanie widoków Razor
Bezpieczeństwo wątkówWymaga ręcznego zablokowaniaDomyślnie bezpieczne dla wątków
Asynchroniczne APIBrak natywnej obsługi asynchronicznościPełna obsługa asynchroniczna
Linux / DockerObsługiwaneObsługiwane
Rodzaj licencjiAGPL (open source) lub komercyjneWersja komercyjna z bezpłatną wersją próbną
Podpisy cyfroweTakTak
Formularze PDFTak (ręcznie)Tak (z elementów formularza HTML)

iText oferuje szczegółową kontrolę dla programistycznego tworzenia PDF, czyniąc go funkcjonalną opcją, gdy struktura dokumentu jest prosta i stała. IronPDF to lepszy wybór, gdy chcesz przekonwertować szablony HTML lub widoki Razor na profesjonalne dokumenty PDF z precyzyjnym renderowaniem, pełną obsługą CSS3 i możliwością wykonywania kodu JavaScript.

W przypadku produkcyjnych aplikacji ASP.NET IronPDF zapewnia doskonałą obsługę asynchroniczną oraz integrację z nowoczesnymi wzorcami .NET, w tym wstrzykiwaniem zależności i potokami oprogramowania pośredniczącego. Możliwość renderowania widoków Razor, obsługa podpisów cyfrowych oraz obsługa złożonych układów sprawiają, że jest to preferowany wybór dla aplikacji Enterprise. Biblioteka obsługuje również aplikacje Blazor Server oraz zgodność z formatem PDF/A dla dokumentów archiwalnych.

A co z licencjami i kwestiami związanymi z projektem?

Biblioteka iText używa licencji AGPL dla swojej wersji open-source, która wymaga, aby twój kod aplikacji również był open-source. Licencje komercyjne na projekty własnościowe są dostępne w iText Group. Ta kwestia licencyjna jest szczególnie ważna w przypadku produktów SaaS lub wewnętrznych narzędzi korporacyjnych, w których nie można publikować kodu źródłowego.

IronPDF stosuje model licencji komercyjnej z bezpłatną wersją próbną do celów programistycznych i testowych. Licencje są dostosowane do środowiska wdrożeniowego: programista, pojedynczy serwer lub nieograniczone opcje wdrożenia. Wdrażając którekolwiek z tych rozwiązań, należy wziąć pod uwagę scenariusze wdrożeniowe, w tym środowiska Docker, Azure i Linux.

Kwestie związane z wydajnością w scenariuszach o dużym natężeniu ruchu obejmują wdrażanie operacji asynchronicznych, właściwe zarządzanie pamięcią oraz strategie buforowania. Silnik Chrome IronPDF zapewnia lepszą wydajność dla złożonego renderowania HTML, podczas gdy iText może być bardziej efektywny dla prostego programistycznego tworzenia PDF bez HTML. W przypadku aplikacji generujących setki plików PDF na minutę, testy porównawcze w warunkach realistycznego obciążenia są najbardziej wiarygodnym wskaźnikiem tego, która biblioteka najlepiej pasuje do Twojej infrastruktury.

Migracja z iText do IronPDF jest łatwa dla większości projektów MVC. Główną zmianą jest zastąpienie kodu służącego do ręcznego tworzenia dokumentów szablonem HTML renderowanym przez silnik Chrome. IronPDF zapewnia obszerną dokumentację, przykłady kodu oraz wsparcie inżynieryjne, aby przejście przebiegło płynnie.

Jakie są Twoje kolejne kroki?

W przypadku nowych projektów wymagających konwersji HTML do PDF z obsługą nowoczesnych standardów internetowych, IronPDF oferuje wyraźną przewagę dzięki renderowaniu opartemu na przeglądarce Chrome. Projekty legacy, które już używają iText do podstawowego tworzenia PDF, mogą kontynuować swoje dotychczasowe wdrożenie chyba że dokładność renderowania HTML stanie się wymogiem.

Zacznij od bezpłatnej wersji próbnej IronPDF i przetestuj ją bezpośrednio z istniejącymi widokami Razor lub szablonami HTML. Zapoznaj się z pełną dokumentacją i Dokumentacją API, aby przekonać się, jak szybko przebiega integracja. Jeśli masz pytania dotyczące migracji istniejącego projektu opartego na iText lub potrzebujesz wskazówek dotyczących obsługi strumienia pamięci PDF i zgodności z PDF/A, zespół wsparcia jest dostępny do pomocy.

Aby uzyskać szerszy obraz porównania IronPDF z rodziną produktów iText, zapoznaj się ze specjalną stroną porównawczą iText vs. IronPDF.

Zwróć uwagę: iText jest zarejestrowanym znakiem towarowym jego właściciela. Ta strona nie jest powiązana, wspierana ani sponsorowana przez iText. Wszystkie nazwy produktów, logo i marki są własnością ich odpowiednich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.
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ęczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta