Przejdź do treści stopki
PORóWNANIA PRODUKTóW

Porównanie pomiędzy iTextSharp i IronPDF do edytowania plików PDF

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.

View Full Comparison

W nowoczesnych aplikacjach .NET, tworzenie i zarządzanie plikami PDF jest często wymagane — niezależnie od tego, czy generujesz raporty, faktury, czy dokumenty cyfrowe. Deweloperzy często sięgają po zewnętrzne biblioteki PDF do tego zadania, a dwie z najpopularniejszych opcji w ekosystemie .NET to IronPDF i iText (następca iText).

Każda biblioteka oferuje potężny zestaw narzędzi dla różnych zastosowań. Ale który najlepiej nadaje się do generowania PDF z [tablicy bajtów](https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2013/dd831853(v=vs.120) w C#? Ten artykuł rozkłada to wszystko na czynniki pierwsze, z porównaniami, przykładami kodu i spostrzeżeniami, aby pomóc deweloperom .NET w dokonaniu właściwego wyboru.

Niezależnie od tego, czy tworzysz aplikacje klasy enterprise, czy małe narzędzia wewnętrzne, wybór odpowiedniej biblioteki PDF może zaoszczędzić czas rozwoju i zapewnić solidne wyniki. Zobaczmy, co oferuje każda z bibliotek.

Wprowadzenie do bibliotek PDF

Do czego są używane biblioteki PDF?

Biblioteki PDF w C# pozwalają deweloperom generować, manipulować i czytać pliki PDF programowo. Obsługują szeroki zakres zastosowań, takich jak:

  • Eksportowanie raportów i faktur
  • Generowanie dynamicznej treści z formularzy internetowych
  • Konwersja stron HTML lub szablonów do plików PDF
  • Dodawanie elementów wizualnych do plików PDF, takich jak numery stron, wykresy, obrazy i więcej
  • Scałanie lub dzielenie dokumentów
  • Cyfrowe podpisywanie plików PDF

Odgrywają również kluczową rolę w przenośności danych i zgodności ze standardami, takimi jak PDF/A dla archiwizacji czy wymagania dotyczące dostępności.

iText i IronPDF: Najlepsi pretendenci

Spośród dostępnych bibliotek PDF .NET, iText i IronPDF wyłoniły się jako wiodące rozwiązania – każde z unikalnymi zaletami:

  • iText to dojrzała biblioteka open-source oparta na iText Java, oferująca solidną kontrolę PDF z wymagającą zakrzywionym nauką i ograniczeniami licencyjnymi.
  • IronPDF, nowoczesna komercyjna biblioteka, koncentruje się na prostocie, szybkości i integracji z siecią, umożliwiając konwersję widoków HTML i ASP.NET bezpośrednio do plików PDF.

Dlaczego wybór odpowiedniej biblioteki ma znaczenie

Wybór między tymi dwiema to nie tylko kwestia preferencji — wpływa na wydajność, utrzymanie, wydajność, a nawet zgodność z prawnymi zobowiązaniami licencyjnymi. Projekty wymagające szybkiego obrotu, częstych zmian formatowania lub renderowania PDF z szablonów HTML korzystają z szybkiego rozwoju, podczas gdy aplikacje klasy enterprise mogą priorytetyzować zgodność ze standardami i długoterminowe utrzymanie.

Porównanie funkcji

iText dla .NET (Następca iText)

iText to oficjalny następca iText i oferuje całkowicie przeprojektowaną architekturę. To potężna, rozszerzalna biblioteka odpowiednia do tworzenia, edytowania i weryfikacji plików PDF w branżach o rygorystycznych wymaganiach dotyczących zgodności, takich jak prawo, finanse i rząd. Zestaw iText obejmuje wsparcie dla PDF/A, PDF/UA, podpisów cyfrowych, redakcji i tworzenia formularzy.

Chociaż wciąż jest open source pod licencją AGPL, dostępne jest komercyjne licencjonowanie dla projektów zastrzeżonych.

Kluczowe cechy iText

  • Nowoczesne API zastępujące starszą strukturę iText
  • Modułowe wsparcie: HTML do PDF, PDF/A, formularze, redakcja, cyfrowe podpisy
  • Wysoka wydajność dla aplikacji klasy enterprise
  • Doskonałe do PDF/A, dostępności, zgodności

Zwróć uwagęBędziesz musiał używać iText do głównych operacji PDF i możesz dołączyć opcjonalne dodatki jak html2pdf osobno.

Instalacja (NuGet)

Aby pobrać główny pakiet iText do generowania PDF:

Install-Package itext7

Instalowanie iText przez konsolę menedżera pakietów NuGet

Możesz także zainstalować iText przez ekran menedżera pakietów dla rozwiązań. Aby to zrobić, najpierw musisz przejść do rozwijanego menu Narzędzia, a następnie znaleźć 'NuGet Package Manager > Zarządzaj pakietami NuGet dla rozwiązania'.

Menu rozwijane narzędzi w Visual Studio

Następnie po prostu wyszukaj iText i kliknij "Zainstaluj".

Strona pakietu NuGet iText

Przykład kodu: Utwórz dokumenty PDF z tablicy bajtów używając iText

using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIText7();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIText7()
    {
        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            var doc = new Document(pdf);

            doc.Add(new Paragraph("Hello from iText 7 for .NET!"));

            doc.Close(); // Always close the document to finalize content  
            return ms.ToArray();
        }
    }
}
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIText7();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIText7()
    {
        using (var ms = new MemoryStream())
        {
            var writer = new PdfWriter(ms);
            var pdf = new iText.Kernel.Pdf.PdfDocument(writer);
            var doc = new Document(pdf);

            doc.Add(new Paragraph("Hello from iText 7 for .NET!"));

            doc.Close(); // Always close the document to finalize content  
            return ms.ToArray();
        }
    }
}
Imports System.IO
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfWithIText7()
		' Save the PDF to a file
		File.WriteAllBytes("output.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfWithIText7() As Byte()
		Using ms = New MemoryStream()
			Dim writer = New PdfWriter(ms)
			Dim pdf = New iText.Kernel.Pdf.PdfDocument(writer)
			Dim doc = New Document(pdf)

			doc.Add(New Paragraph("Hello from iText 7 for .NET!"))

			doc.Close() ' Always close the document to finalize content
			Return ms.ToArray()
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

Plik wyjściowy w formacie PDF

Wynik PDF iText

Wyjaśnienie

  • PdfWriter zapisuje zawartość do MemoryStream.
  • PdfDocument zarządza wewnętrzną strukturą PDF.
  • Document jest używany do dodawania treści wysokiego poziomu (tekst, obrazy, tabele).
  • Po wywołaniu doc.Close() zawartość PDF jest w pełni zapisana i gotowa do zwrócenia jako tablica bajtów.

Ten przykład pokazuje bardziej modułowe i czytelne API iText w porównaniu do iText. Jednak nadal brakuje natywnego wsparcia dla renderowania HTML/CSS, o ile nie dodasz pdfhtml, który jest licencjonowany osobno.

Zalety i wady iText

Zalety:

  • Wszechstronne zarządzanie PDF\ iText zapewnia pełną kontrolę nad elementami PDF, takimi jak tabele, formularze i podpisy cyfrowe. To czyni go idealnym dla aplikacji wymagających ściśle określonych standardów PDF, takich jak PDF/A lub PDF/UA.

  • Modułowe i skalowalne\ iText jest modułowy, co oznacza, że możesz zainstalować tylko konkretne moduły, które potrzebujesz (np. pdfhtml do konwersji HTML na PDF). Pozwala to na bardziej lekką implementację jeśli nie korzystasz ze wszystkich funkcji.

  • Obsługuje złożone standardy PDF\ iText wspiera standardy ISO, takie jak PDF/A (archiwizacja), PDF/UA (dostępność) i PDF/X (drukowanie), co czyni go odpowiednim dla profesjonalnych i prawnych środowisk, gdzie zgodność jest kluczowa.

  • Bogata dokumentacja i wsparcie\ iText ma kompleksową dokumentację i dużą społeczność. Firma oferuje również profesjonalne wsparcie, co zapewnia, że deweloperzy mogą uzyskać pomoc, gdy jest potrzebna.

  • Dostępna wersja darmowa (AGPL)\ Deweloperzy mogą używać iText za darmo pod licencją AGPL, co jest idealne dla projektów open-source lub użytku osobistego.

Wady:

  • Licencja AGPL dla użytku komercyjnego\ Chociaż iText oferuje darmową wersję, użytkownicy komercyjni muszą przestrzegać licencji AGPL, która wymaga ujawnienia kodu źródłowego każdego oprogramowania korzystającego z iText lub zakupu licencji komercyjnej.

  • Stroma krzywa uczenia się\ API iText jest bardziej złożone i bogate w funkcje, co może skutkować stromą krzywą nauki w porównaniu do prostszych bibliotek jak IronPDF. Deweloperzy muszą zapoznać się z jego niskopoziomową strukturą dokumentów i architekturą modułową.

  • Ciężar dla prostych zadań\ iText może wydawać się uciążliwy dla podstawowych zadań PDF, takich jak proste tworzenie dokumentów lub podstawowa konwersja HTML na PDF, szczególnie w porównaniu do bibliotek jak IronPDF, które upraszczają ten proces.

  • Wymaga zewnętrznych modułów do HTML do PDF\ Konwersja HTML do PDF w iText jest dostępna tylko poprzez dodatkowy moduł pdfhtml, który wymaga osobnej instalacji i może nie obsługiwać nowoczesnych treści sieciowych tak płynnie, jak IronPDF.

IronPDF dla .NET: Potężna biblioteka PDF

IronPDF to rozszerzona biblioteka .NET zaprojektowana tak, aby uprościć generowanie dokumentów PDF, koncentrując się na produktywności dewelopera. Jest szczególnie skuteczna w renderowaniu treści HTML i stylizacji, co czyni ją idealną dla nowoczesnych przepływów pracy z web-to-PDF.

Kluczowe funkcje:

  • Tworzenie plików PDF z tablic bajtów i praca z dokumentami PDF bez potrzeby instalacji Adobe Reader
  • Bezpośrednie renderowanie HTML do PDF za pomocą pełnego silnika Chromium w celu tworzenia dokumentów PDF z treści HTML
  • Działa z widokami MVC, stronami Razor i adresami URL lokalnymi/zdalnymi
  • Obsługuje pliki graficzne, JavaScript, CSS i układy responsywne od razu po wyjęciu z pudełka
  • Łatwa w użyciu składnia i minimalna konfiguracja
  • Licencjowanie wieczyste i brak ograniczeń AGPL

Instalacja IronPDF

IronPDF można także zainstalować za pomocą NuGet, wykonując następujące polecenie w konsoli NuGet Package Manager:

Install-Package IronPdf

Instalowanie IronPDF przez konsolę menedżera pakietów

Alternatywnie, możesz zainstalować go za pomocą menedżera pakietów NuGet dla ekranu Solution. Aby to zrobić, przejdź do "Narzędzia > Menedżer pakietów NuGet > Zarządzaj pakietami NuGet dla rozwiązania".

Menu rozwijane narzędzi w Visual Studio

Następnie, wyszukaj IronPDF i kliknij 'Zainstaluj'.

Ekran menedżera pakietów NuGet IronPDF

Po instalacji, możesz rozpocząć renderowanie pełnych stron HTML do PDF w ciągu kilku sekund — bez potrzeby dodatkowych modułów. Obsługuje nowoczesny CSS, JavaScript, a nawet interaktywną zawartość webową bez dodatkowej konfiguracji.

Przykład kodu: Tworzenie dokumentów PDF z tablicy bajtów z IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIronPdf();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
        return pdfDoc.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfWithIronPdf();
        // Save the PDF to a file
        File.WriteAllBytes("output.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        var pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>");
        return pdfDoc.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfWithIronPdf()
		' Save the PDF to a file
		File.WriteAllBytes("output.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfWithIronPdf() As Byte()
		Dim renderer = New ChromePdfRenderer()
		Dim pdfDoc = renderer.RenderHtmlAsPdf("<h1>Hello from IronPDF!</h1>")
		Return pdfDoc.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

Plik wyjściowy w formacie PDF

Wynik działania IronPDF

Wyjaśnienie

  • Oświadczenie using IronPdf importuje bibliotekę IronPDF do dostępu do wszystkich klas związanych z PDF.
  • var renderer = new ChromePdfRenderer() tworzy nowy renderer HTML do PDF napędzany przez silnik Chromium.
  • renderer.RenderHtmlAsPdf(...) zamienia podany ciąg HTML na dokument PDF. Możesz także przekazać ścieżki plików lub adresy URL.
  • pdfDoc.BinaryData zwraca finalny PDF jako tablica bajtów, gotowy do zapisania, przesyłania strumieniowego lub przechowywania w bazie danych.

Zalety i wady IronPDF

Zalety:

  • Bezproblemowe renderowanie HTML do PDF\ Renderowanie treści HTML, CSS i JavaScript bezpośrednio do PDF z pełnym formatowaniem, w tym Bootstrap i niestandardowe czcionki — brak potrzeby skomplikowanego kodu układu lub dodatkowych modułów.

  • Szybki start i intuicyjne API\ Tworzenie plików PDF w pełni sformatowanych w zaledwie kilku liniach kodu, z czystą składnią i pełną zgodnością z .NET Core i .NET Framework.

  • Obsługa technologii webowych\ IronPDF obsługuje JavaScript, nowoczesny CSS, SVGs i zapytania medialne — coś, z czym większość bibliotek ma problemy, jeśli nie używa bezgłowych przeglądarek, takich jak Chromium (co IronPDF robi wewnętrznie).

  • Wbudowane przetwarzanie obrazów i zasobów\ Łatwo dołączaj obrazy, pliki lokalne lub nawet pobieraj zasoby z zdalnych adresów URL bez dodatkowej konfiguracji.

  • Licencjowanie wieczyste i brak AGPL\ W przeciwieństwie do iText, IronPDF oferuje elastyczne licencjonowanie komercyjne bez ograniczeń wynikających z zobowiązań open-source AGPL.

  • Doskonałe do widoków MVC i Razor\ Bezproblemowo konwertuje widoki .cshtml Razor w aplikacjach ASP.NET na printable PDF.

Wady:

  • Użytek komercyjny wymaga licencji\ Choć dostępna jest darmowa wersja próbna, IronPDF nie jest otwartoźródłowy. Projekty z ograniczonym budżetem mogą musieć ocenić koszty licencji.

  • Większy rozmiar początkowy pakietu\ Ponieważ zawiera bezgłowy silnik Chromium, pakiet NuGet jest cięższy niż niektóre alternatywy.

Praktyczne przykłady kodu w porównaniu

Następujące przykłady kodu w tej sekcji demonstrują te biblioteki w działaniu, w trakcie których będziemy porównywać IronPDF i iText używając tych samych zadań. Obie biblioteki zostaną przetestowane w tych samych scenariuszach: generowanie PDF z URL, renderowanie obrazu jako PDF i konwersja stylizowanego HTML do PDF, przy użyciutablicy bajtów do obsługi naszej zawartości PDF. To pozwoli deweloperom na ocenę, jak każda biblioteka podchodzi do tych wspólnych zastosowań.

1. Generowanie prostego pliku PDF z URL przy użyciu tablicy bajtów

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfFromUrlWithIronPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfFromUrlWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitForJavaScript(5000);
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

        var pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.GeneratePdfFromUrlWithIronPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] GeneratePdfFromUrlWithIronPdf()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.EnableJavaScript = true;
        renderer.RenderingOptions.WaitForJavaScript(5000);
        renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

        var pdf = renderer.RenderUrlAsPdf("https://www.apple.com");
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.GeneratePdfFromUrlWithIronPdf()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-from-url.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function GeneratePdfFromUrlWithIronPdf() As Byte()
		Dim renderer = New ChromePdfRenderer()
		renderer.RenderingOptions.EnableJavaScript = True
		renderer.RenderingOptions.WaitForJavaScript(5000)
		renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print

		Dim pdf = renderer.RenderUrlAsPdf("https://www.apple.com")
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

Wynik w formacie PDF

URL do PDF wynik IronPDF

IronPDF używa bezgłowego silnika Chromium do pixeli-idealnego renderowania stron internetowych z pełnym wsparciem dla JavaScript i CSS.

iText

using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using System.Net.Http;
using System.Threading.Tasks;
using iText.Html2pdf;
using System.IO;

class Program
{
    static async Task Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = await pdfGenerator.GeneratePdfFromUrlWithIText7Async();

        // Save the PDF to a file
        File.WriteAllBytes("itext7-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public async Task<byte[]> GeneratePdfFromUrlWithIText7Async()
    {
        using var httpClient = new HttpClient();
        string html = await httpClient.GetStringAsync("https://www.apple.com");

        using var stream = new MemoryStream();
        HtmlConverter.ConvertToPdf(html, stream);
        return stream.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using System.Net.Http;
using System.Threading.Tasks;
using iText.Html2pdf;
using System.IO;

class Program
{
    static async Task Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = await pdfGenerator.GeneratePdfFromUrlWithIText7Async();

        // Save the PDF to a file
        File.WriteAllBytes("itext7-from-url.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public async Task<byte[]> GeneratePdfFromUrlWithIText7Async()
    {
        using var httpClient = new HttpClient();
        string html = await httpClient.GetStringAsync("https://www.apple.com");

        using var stream = new MemoryStream();
        HtmlConverter.ConvertToPdf(html, stream);
        return stream.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports System.Net.Http
Imports System.Threading.Tasks
Imports iText.Html2pdf
Imports System.IO

Friend Class Program
	Shared Async Function Main(ByVal args() As String) As Task
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = Await pdfGenerator.GeneratePdfFromUrlWithIText7Async()

		' Save the PDF to a file
		File.WriteAllBytes("itext7-from-url.pdf", pdfBytes)
	End Function
End Class

Friend Class PdfGenerator
	Public Async Function GeneratePdfFromUrlWithIText7Async() As Task(Of Byte())
		Dim httpClient As New HttpClient()
		Dim html As String = Await httpClient.GetStringAsync("https://www.apple.com")

		Dim stream = New MemoryStream()
		HtmlConverter.ConvertToPdf(html, stream)
		Return stream.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

Wynik

URL do PDF wynik iText

iText pobiera surowy HTML przy użyciu HttpClient i renderuje za pomocą HtmlConverter, jednak nie obsługuje wykonywania JavaScript (jak potwierdza oficjalna dokumentacja iText, która zaleca używanie Selenium lub innej automatyzacji przeglądarki do wstępnego przetwarzania JavaScript) i ma ograniczone stylizowanie CSS. Podczas gdy iText dodał częściowe wsparcie dla flexbox w wersji 7.1.15 (2021), wiele właściwości CSS3 pozostaje nieobsługiwanych, zwłaszcza dla złożonych nowoczesnych układów.

2. Tworzenie nowego pliku PDF z obrazu używając tablicy bajtów

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        var pdf = ImageToPdfConverter.ImageToPdf("example.png");
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        var pdf = ImageToPdfConverter.ImageToPdf("example.png");
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreatePdfWithImage()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-with-image.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreatePdfWithImage() As Byte()
		Dim pdf = ImageToPdfConverter.ImageToPdf("example.png")
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

Wynik

IronPDF obraz na wyjście PDF

Łatwa generacja obrazu do PDF za pomocą narzędzia ImageToPdfConverter IronPDF. Dzięki temu możesz łatwo stworzyć pliki PDF z obrazów, takich jak pliki PNG lub JPG.

iText

using iText.Kernel.Pdf;
using iText.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("iText-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        using var ms = new MemoryStream();
        using var writer = new PdfWriter(ms);
        using var pdfDoc = new iText.Kernel.Pdf.PdfDocument(writer);
        var document = new Document(pdfDoc);

        var img = new Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"));
        document.Add(img);
        document.Close();

        return ms.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.IO.Image;
using iText.Layout.Element;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreatePdfWithImage();

        // Save the PDF to a file
        File.WriteAllBytes("iText-with-image.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreatePdfWithImage()
    {
        using var ms = new MemoryStream();
        using var writer = new PdfWriter(ms);
        using var pdfDoc = new iText.Kernel.Pdf.PdfDocument(writer);
        var document = new Document(pdfDoc);

        var img = new Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"));
        document.Add(img);
        document.Close();

        return ms.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.IO.Image
Imports iText.Layout.Element
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreatePdfWithImage()

		' Save the PDF to a file
		File.WriteAllBytes("iText-with-image.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreatePdfWithImage() As Byte()
		Dim ms = New MemoryStream()
		Dim writer = New PdfWriter(ms)
		Dim pdfDoc = New iText.Kernel.Pdf.PdfDocument(writer)
		Dim document As New Document(pdfDoc)

		Dim img = New Image(ImageDataFactory.Create("https://itextpdf.com/sites/default/files/2018-11/iText%207%20Product%20software%20-%20webimages_509x339px_V2_iText%207%20Core.png"))
		document.Add(img)
		document.Close()

		Return ms.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

Wynik

iText PDF z wyjściowymi obrazami

Ręczne tworzenie układu dokumentu i jawne wstawianie obrazów przy użyciu ImageDataFactory.

3. Konwersja stylizowanej zawartości HTML na PDF używając tablicy bajtów

IronPDF

using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>";

        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }
}
using IronPdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the PDF to a file
        File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>";

        var pdf = new ChromePdfRenderer().RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }
}
Imports IronPdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreateStyledPdf()

		' Save the PDF to a file
		File.WriteAllBytes("ironpdf-styled-html.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreateStyledPdf() As Byte()
		Dim html As String = "
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to IronPDF</h1>
                <p>This is a simple PDF document generated using IronPDF.</p>
            </body>
        </html>"

		Dim pdf = (New ChromePdfRenderer()).RenderHtmlAsPdf(html)
		Return pdf.BinaryData
	End Function
End Class
$vbLabelText   $csharpLabel

Wynik

IronPDF stylizowany HTML na wyjście PDF

IronPDF w pełni obsługuje CSS w znacznikach lub zewnętrzne arkusze stylów dzięki swojemu silnikowi Chromium.

iText + pdfHTML

using iText.Kernel.Pdf;
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the new document to the specified file location
        File.WriteAllBytes("iText-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>";

        using var ms = new MemoryStream();
        ConverterProperties properties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties);
        return ms.ToArray();
    }
}
using iText.Kernel.Pdf;
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var pdfGenerator = new PdfGenerator();
        byte[] pdfBytes = pdfGenerator.CreateStyledPdf();

        // Save the new document to the specified file location
        File.WriteAllBytes("iText-styled-html.pdf", pdfBytes);
    }
}

class PdfGenerator
{
    public byte[] CreateStyledPdf()
    {
        string html = @"
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>";

        using var ms = new MemoryStream();
        ConverterProperties properties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(new MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties);
        return ms.ToArray();
    }
}
Imports iText.Kernel.Pdf
Imports iText.Html2pdf
Imports System.IO

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim pdfGenerator As New PdfGenerator()
		Dim pdfBytes() As Byte = pdfGenerator.CreateStyledPdf()

		' Save the new document to the specified file location
		File.WriteAllBytes("iText-styled-html.pdf", pdfBytes)
	End Sub
End Class

Friend Class PdfGenerator
	Public Function CreateStyledPdf() As Byte()
		Dim html As String = "
        <html>
            <head>
                <style>
                    body { 
                        background-color: #f0f0f0; 
                        margin: 20px; 
                        padding: 20px; 
                        border-radius: 5px; 
                        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
                    }
                    h1 { 
                        color: navy;
                        font-size: 32px;   
                        text-align: center;
                       }
                    p { 
                        font-size: 16px; 
                        font-weight: bold;
                      }
                </style>
            </head>
            <body>
                <h1>Welcome to iText 7</h1>
                <p>This is a simple PDF document generated using iText 7 and pdfHTML.</p>
            </body>
        </html>"

		Dim ms = New MemoryStream()
		Dim properties As New ConverterProperties()
		HtmlConverter.ConvertToPdf(New MemoryStream(System.Text.Encoding.UTF8.GetBytes(html)), ms, properties)
		Return ms.ToArray()
	End Function
End Class
$vbLabelText   $csharpLabel

Wynik

iText stylizowany HTML na wyjście PDF

Wymaga instalacji płatnego dodatku pdfHTML w celu obsługi zadań konwersji HTML.

Podsumowanie porównania

Funkcja IronPDF iText (z pdfHTML)
Renderowanie URL na PDF Pełne renderowanie Chromium Pobieranie HTML, brak natywnej obsługi JS
Dodawanie obrazu Wstawianie za pomocą HTML lub dedykowanego narzędzia do druku obrazów Fabrka zdjęć ręczna
Renderowanie stylizowanego HTML Pełne wsparcie CSS CSS obsługiwane tylko przez pdfHTML
Zwraca tablicę bajtów Tak Tak
Złożoność konfiguracji Prosta Umiarkowana (ręczny układ)
Jakość wyjściowa Obraz perfekcyjny Dobra, ale statyczna

Wniosek: Którą bibliotekę .NET wybrać?

Wybór pomiędzy IronPDF i iText zależy od potrzeb projektu — ale jeśli chodzi o doświadczenie programisty, łatwość użycia i nowoczesną dokładność renderowania, IronPDF wyraźnie się wyróżnia.

Jeśli pracujesz ze dynamiczną zawartością HTML, renderowaniem webowym lub musisz stworzyć pliki PDF z URL z pełnym wsparciem dla JavaScriptu i CSS, silnik oparty na Chromium IronPDF zapewnia niezrównaną wierność. Jego intuicyjne API i szybka konfiguracja sprawiają, że jest idealny do szybkiego rozwoju i użycia w rzeczywistych produkcjach — szczególnie przy pracy z tablicami bajtów, strumieniami plików lub generowaniem PDF opartym na webie.

Z drugiej strony, iText to potężna i szanowana biblioteka z bardziej tradycyjnym, ukierunkowanym na układ podejściem. Oferuje solidną kontrolę nad strukturą dokumentu i jest świetna dla deweloperów potrzebujących precyzyjnej manipulacji, ale wiąże się z ostrzejszą krzywą uczenia się i brakiem nowoczesnych zdolności renderowania HTML.

Oto najważniejsze wnioski:

  • Chcesz uzyskać idealny obraz z nowoczesnych treści webowych, stylizowanego HTML lub szybkiego prototypowania? Pozostań przy IronPDF.
  • Potrzebujesz niskopoziomowych narzędzi do tworzenia PDF z dokładną kontrolą? iText może być właściwym wyborem.

Gotowy, aby zacząć z IronPDF? Pobierz bezpłatną wersję próbną i zobacz, jak łatwo jest tworzyć profesjonalne, oparte na tablicach bajtów pliki PDF w C# zaledwie w kilku linijkach kodu.

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.

Często Zadawane Pytania

Jak przekonwertować tablicę bajtów na plik PDF w języku C#?

Możesz użyć IronPDF do konwersji tablicy bajtów na plik PDF w języku C#. Wystarczy załadować tablicę bajtów do dokumentu IronPDF za pomocą metody `PdfDocument.FromBytes`, która przeanalizuje dane i wygeneruje dokument PDF.

Jakie są zalety korzystania z IronPDF do konwersji HTML na PDF?

IronPDF doskonale radzi sobie z konwersją HTML do PDF dzięki wykorzystaniu bezgłowego silnika Chromium, który obsługuje nowoczesne CSS i JavaScript. Dzięki temu idealnie nadaje się do renderowania dynamicznych treści internetowych do dokumentów PDF o idealnej rozdzielczości.

Jakie są główne zalety korzystania z IronPDF zamiast iText 7 do generowania plików PDF?

IronPDF oferuje prostszy interfejs API i szybszą konfigurację dla projektów wymagających konwersji HTML do PDF, z pełną obsługą CSS i JavaScript. Jest szczególnie odpowiedni dla aplikacji wymagających szybkiego rozwoju i integracji treści internetowych.

W jaki sposób iText 7 radzi sobie z zgodnością z formatem PDF?

iText 7 jest przeznaczony dla branż o wysokich wymaganiach w zakresie zgodności z normami, obsługując standardy takie jak PDF/A, PDF/UA i PDF/X. Zapewnia solidną kontrolę nad tworzeniem plików PDF, dzięki czemu nadaje się do zastosowań, w których zgodność z normami ma kluczowe znaczenie.

Jak wygląda proces instalacji IronPDF w projekcie .NET?

Aby zainstalować IronPDF, można użyć menedżera pakietów NuGet w Visual Studio. W konsoli menedżera pakietów należy uruchomić polecenie `Install-Package IronPdf`, aby dodać go do projektu.

Czy IronPDF może tworzyć pliki PDF z widoków ASP.NET?

Tak, IronPDF może renderować widoki ASP.NET bezpośrednio do dokumentów PDF. Ta funkcja pozwala programistom na łatwą konwersję stron internetowych o złożonych układach i stylach do formatu PDF.

Jakie rodzaje aplikacji czerpią największe korzyści z używania IronPDF?

Aplikacje wymagające konwersji dynamicznych treści internetowych, takich jak raporty i faktury, czerpią największe korzyści z użycia IronPDF. Szybka konfiguracja i obsługa technologii internetowych sprawiają, że jest to idealne rozwiązanie dla projektów wymagających częstych aktualizacji i nowoczesnego wyglądu.

W jaki sposób modułowa architektura iText 7 wpływa na jego użytkowanie?

Modułowa architektura iText 7 pozwala na dodawanie w razie potrzeby konkretnych funkcji PDF, takich jak konwersja do HTML lub podpis cyfrowy. Zapewnia to elastyczność, ale może wymagać dodatkowego szkolenia i instalacji każdego modułu.

Jakie są różnice licencyjne między IronPDF a iText 7?

IronPDF oferuje licencjonowanie wieczyste odpowiednie dla zastosowań komercyjnych, bez ograniczeń AGPL. Natomiast iText 7 jest dostępny na licencji AGPL dla projektów open-source, z koniecznością wykupienia płatnej licencji do użytku komercyjnego.

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

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie