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

Stwórz PDF z tablicy bajtów C# iTextSharp (vs IronPDF)

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 spośród najpopularniejszych opcji w ekosystemie .NET to IronPDF i iText 7 (następca iTextSharp).

Każda biblioteka oferuje potężny zestaw narzędzi dla różnych zastosowań. Ale która z nich najlepiej nadaje się do generowania PDF z tablicy bajtów 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
  • Scalanie 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.

iTextSharp i IronPDF: Czołowi gracze

Wśród dostępnych bibliotek PDF .NET, iTextSharp i IronPDF wyłoniły się jako wiodące rozwiązania — każde z unikalnymi mocnymi stronami:

  • iTextSharp to dojrzała, otwartoźródłowa biblioteka oparta na Javie iText, oferująca solidne zarządzanie PDF z stromą krzywą uczenia się i zastrzeżeniami związanymi z licencjonowaniem.
  • 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 7 dla .NET (Następca iTextSharp)

iText 7 to oficjalny następca iTextSharp 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. Pakiet iText 7 obejmuje wsparcie dla PDF/A, PDF/UA, cyfrowe podpisy, redakcję i tworzenie formularzy.

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

Kluczowe funkcje iText 7

  • Nowoczesne API, zastępujące starszą strukturę iTextSharp
  • 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ęDo operacji głównych PDF będziesz musiał używać itext7 i możesz dodać opcjonalne dodatki, takie jak html2pdf oddzielnie.

Instalacja (NuGet)

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

Install-Package itext7

Instalacja iText 7 za pomocą konsoli NuGet Package Manager

Możesz także zainstalować iText 7 za pomocą ekranu Package Manager for Solution. 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'.

Rozwijane menu narzędzi w Visual Studio

Następnie wystarczy wyszukać iText 7 i kliknąć 'Zainstaluj'.

Strona pakietu iText 7 NuGet

Przykład kodu: Tworzenie dokumentów PDF z tablicy bajtów przy użyciu iText 7

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 7

Wyjaśnienie

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

Ten przykład pokazuje bardziej modułowe i czytelne API iText 7 w porównaniu do iTextSharp. Jednak nadal brakuje natywnego wsparcia dla renderowania HTML/CSS, chyba że dodasz pdfhtml, który jest licencjonowany oddzielnie.

Zalety i wady iText 7

Zalety:

  • Wszechstronne zarządzanie PDF\ iText 7 zapewnia pełną kontrolę nad elementami PDF, takimi jak tabele, formularze i cyfrowe podpisy. 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 7 jest modułowy, co oznacza, że możesz zainstalować tylko konkretne moduły, których potrzebujesz (np. pdfhtml do konwersji HTML do PDF). Pozwala to na bardziej lekką implementację jeśli nie korzystasz ze wszystkich funkcji.

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

  • Bogata dokumentacja i wsparcie\ iText 7 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 7 za darmo na licencji AGPL, co jest idealne dla projektów open-source lub użytku osobistego.

Wady:

  • Licencja AGPL dla użytku komercyjnego\ Choć iText 7 oferuje darmową wersję, użytkownicy komercyjni muszą przestrzegać licencji AGPL, co wymaga uwolnienia kodu źródłowego każdego oprogramowania korzystającego z iText 7 lub zapłacenia za licencję komercyjną.

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

  • Ciężar dla prostych zadań\ iText 7 może być uciążliwy dla podstawowych zadań PDF, takich jak prosta kreacja dokumentów czy podstawowa konwersja HTML do PDF, szczególnie w porównaniu do bibliotek takich jak IronPDF, które upraszczają ten proces.

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

IronPDF for .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

Instalacja IronPDF za pomocą konsoli 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".

Rozwijane menu narzędzi w Visual Studio

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

IronPDF NuGet package manager screen

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

IronPDF Output

Wyjaśnienie

  • Instrukcja using IronPdf importuje bibliotekę IronPDF w celu uzyskania dostępu do wszystkich klas związanych z PDF.
  • var renderer = new ChromePdfRenderer() tworzy nowy renderer HTML do PDF zasilany bezgłowym silnikiem Chromium.
  • renderer.RenderHtmlAsPdf(...) przekształca podany ciąg HTML w dokument PDF. Możesz także przekazać ścieżki plików lub adresy URL.
  • pdfDoc.BinaryData zwraca końcowy plik PDF jako tablicę bajtów, gotowy do zapisu, strumieniowania 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 odróżnieniu od iText 7, IronPDF oferuje elastyczne komercyjne licencjonowanie bez ograniczeń związanych z otwartoźródłowymi zobowiązaniami 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

Poniższe przykłady kodu w tej sekcji pokazują te biblioteki w działaniu, podczas których będziemy porównywać IronPDF i iText 7 przy użyciu 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życiu tablicy 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 na PDF IronPDF output

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

iText 7

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

iText 7 URL do PDF output

iText 7 pobiera surowy HTML za pomocą HttpClient i renderuje go używając HtmlConverter, ale nie obsługuje wykonywania JavaScriptu (jak potwierdzają oficjalne dokumentacje iText, które zalecają użycie Selenium lub podobnej automatyzacji przeglądarki do wstępnego przetwarzania JavaScript) i ma ograniczone stylowanie CSS. Chociaż iText7 dodał częściowe wsparcie dla flexbox w wersji 7.1.15 (2021), wiele właściwości CSS3 pozostaje nieobsługiwanych, szczególnie 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 image to PDF output

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

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 7 PDF z obrazem output

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 do PDF output

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

iText 7 + 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 7 stylizowany HTML do PDF output

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

Podsumowanie porównania

Funkcja IronPDF iText 7 (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 a iText 7 zależy od potrzeb twojego projektu — ale gdy chodzi o doświadczenie dewelopera, ł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 7 to potężna i uznana biblioteka z bardziej tradycyjnym, napędzanym układem 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 7 może być odpowiednim 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 7 jest zastrzeżonym znakiem towarowym odpowiedniego właściciela. Ta strona nie jest powiązana z iText 7, nie jest przez nią promowana ani sponsorowana. 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

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie