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.
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
Instalacja (NuGet)
Aby pobrać pakiet główny iText 7 do generowania PDF:
Install-Package itext7

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

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

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
Plik wyjściowy w formacie PDF

Wyjaśnienie
PdfWriterzapisuje zawartość doMemoryStream.PdfDocumentzarządza wewnętrzną strukturą PDF.Documentsł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

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

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

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
Plik wyjściowy w formacie PDF

Wyjaśnienie
- Instrukcja
using IronPdfimportuje 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.BinaryDatazwraca 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
Wynik w formacie PDF

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
Wynik

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
Wynik

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

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
Wynik

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
Wynik

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



