iText vs IronPDF: Przewodnik po porównaniu technicznym
W niniejszym porównaniu przeanalizowano obie biblioteki pod kątem istotnych aspektów technicznych, aby pomóc programistom i architektom w podejmowaniu świadomych decyzji dotyczących ich potrzeb w zakresie obsługi plików PDF w środowisku .NET.
PrzeglądiText/ iTextSharp
iText to biblioteka PDF z podwójną licencją, która umożliwia tworzenie plików PDF od podstaw, modyfikowanie istniejących dokumentów oraz wykonywanie zadań, takich jak dodawanie tekstu, obrazów i funkcji zabezpieczeń. Biblioteka wykorzystuje podejście API programistycznego, w którym deweloperzy tworzą treści PDF za pomocą klas jak PdfWriter, PdfDocument, Document, Paragraph, Table i Cell.
iText 7 korzysta z przestrzeni nazw takich jak iText.Kernel.Pdf, iText.Layout, iText.Layout.Element i iText.Html2pdf. Tworzenie PDF polega na utworzeniu PdfWriter, owinięciu go w PdfDocument, a następnie utworzeniu Document do układu treści. Tekst dodaje się poprzez obiekty Paragraph, tabele poprzez obiekty Table i Cell, a obrazy poprzez klasę Image z ImageDataFactory.
Do konwersji HTML na PDF,iTextwymaga osobnego dodatku pdfHTML, dostępnego poprzez przestrzeń nazw iText.Html2pdf z metodą HtmlConverter.ConvertToPdf(). Ten dodatek jest sprzedawany osobno za dodatkową opłatą.
iText jest dostępny na licencji AGPL, która wymaga, aby każde oprogramowanie zawierające kod AGPL w aplikacji internetowej było również udostępniane jako oprogramowanie open source, w przeciwnym razie programista musi zakupić licencję komercyjną. FirmaiTextzrezygnowała z licencji wieczystych, wprowadzając wymóg corocznego odnawiania subskrypcji w przypadku użytkowania komercyjnego.
Przegląd IronPDF
IronPDF to komercyjna biblioteka PDF przeznaczona dla programistów .NET, którzy wolą pracować z HTML i CSS zamiast programowo tworzyć pliki PDF. Biblioteka wykorzystuje nowoczesny silnik renderujący Chromium, zapewniający dokładne renderowanie HTML5, CSS3, JavaScript oraz nowoczesnych systemów układów, takich jak Flexbox i Grid.
IronPDF używa klasy ChromePdfRenderer jako głównego mechanizmu generowania PDF z metodami takimi jak RenderHtmlAsPdf(), RenderUrlAsPdf() i RenderHtmlFileAsPdf(). Biblioteka zwraca obiekty PdfDocument, które można zapisać za pomocą SaveAs() lub uzyskać dostęp jako BinaryData. Konfiguracja korzysta z właściwości RenderingOptions dla rozmiaru papieru, marginesów, nagłówków i stopki.
IronPDF oferuje zarówno licencje wieczyste, jak i subskrypcyjne, bez wymagań dotyczących licencji wirusowych. Konwersja HTML do PDF jest wbudowana w podstawowy produkt i nie wymaga oddzielnych dodatków.
Porównanie licencji i modeli biznesowych
Najważniejsza różnica między tymi bibliotekami dotyczy licencji i konsekwencji biznesowych.
| Funkcja | iText 7 / iTextSharp | IronPDF |
|---|---|---|
| Licencja | AGPL (wirusowa) lub kosztowna subskrypcja | Opcja komercyjna, bezterminowa |
| HTML do PDF | Oddzielny dodatek pdfHTML (dodatkowy koszt) | Wbudowany renderer Chromium |
| Ryzyko związane z oprogramowaniem open source | Aplikacje internetowe typu open source muszą być objęte licencją AGPL | Brak wymagań dotyczących wirusowości |
| Model cenowy | Tylko w ramach subskrypcji | Licencja wieczysta lub subskrypcja |
| Opcja wieczysta | Wyeliminowano | Dostępne |
Pułapka licencji AGPL jest szczególnie problematyczna w przypadku komercyjnych aplikacji internetowych. Jeśli używasziTextw aplikacji internetowej bez zakupu licencji komercyjnej, licencja AGPL wymaga, abyś udostępnił całą aplikację na licencji open source — nie tylko kod PDF, ale całą bazę kodu.
Porównanie paradygmatów API
Podstawowa filozofia projektowania API znacznie różni się w poszczególnych bibliotekach.
| Aspekt | iText | IronPDF |
|---|---|---|
| Paradygmat API | Programowo (akapit, tabela, komórka) | Najpierw HTML, potem CSS |
| Obsługa CSS | Podstawowy CSS (poprzez dodatek pdfHTML) | Pełna obsługa CSS3, Flexbox, Grid |
| JavaScript | None | Pełna realizacja |
| Krzywa uczenia się | Steep (układ współrzędnych PDF) | Przyjazne dla programistów stron internetowych |
| Budowa treści | Ręczne obiekty niskiego poziomu | Szablony HTML |
iText tworzy pliki PDF programowo z wykorzystaniem jawnej konstrukcji obiektów.IronPDFwykorzystuje HTML/CSS, co pozwala programistom stron internetowych na bezpośrednie wykorzystanie posiadanych umiejętności.
Porównanie kodu: typowe operacje na plikach PDF
Konwersja HTML do PDF
Najbardziej podstawowa operacja ilustruje różne podejścia i wymagania dotyczące dodatków.
iText (wymaga dodatku pdfHTML):
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;
class Program
{
static void Main()
{
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
string outputPath = "output.pdf";
using (FileStream fs = new FileStream(outputPath, FileMode.Create))
{
HtmlConverter.ConvertToPdf(html, fs);
}
}
}
Imports iText.Html2pdf
Imports System.IO
Class Program
Shared Sub Main()
Dim html As String = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"
Dim outputPath As String = "output.pdf"
Using fs As FileStream = New FileStream(outputPath, FileMode.Create)
HtmlConverter.ConvertToPdf(html, fs)
End Using
End Sub
End Class
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
iText wymaga osobnej przestrzeni nazw iText.Html2pdf (z dodatku pdfHTML), tworzy ręcznie FileStream i wywołuje HtmlConverter.ConvertToPdf(), aby pisać bezpośrednio do strumienia.
IronPDF tworzy ChromePdfRenderer, wywołuje RenderHtmlAsPdf() z ciągiem HTML i zapisuje za pomocą SaveAs(). Silnik Chromium zapewnia pełną obsługę CSS3 i JavaScript bez dodatkowych wtyczek.
Aby uzyskać informacje na temat zaawansowanych opcji renderowania HTML, zapoznaj się z przewodnikiem dotyczącym konwersji HTML do PDF.
Tworzenie plików PDF z tekstem i obrazami
Programowe tworzenie plików PDF najlepiej ilustruje tę różnicę paradygmatów.
iText:
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;
class Program
{
static void Main()
{
string outputPath = "document.pdf";
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdf = new PdfDocument(writer))
using (Document document = new Document(pdf))
{
document.Add(new Paragraph("Sample PDF Document"));
document.Add(new Paragraph("This document contains text and an image."));
Image img = new Image(ImageDataFactory.Create("image.jpg"));
img.SetWidth(200);
document.Add(img);
}
}
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.IO.Image
Class Program
Shared Sub Main()
Dim outputPath As String = "document.pdf"
Using writer As New PdfWriter(outputPath),
pdf As New PdfDocument(writer),
document As New Document(pdf)
document.Add(New Paragraph("Sample PDF Document"))
document.Add(New Paragraph("This document contains text and an image."))
Dim img As New Image(ImageDataFactory.Create("image.jpg"))
img.SetWidth(200)
document.Add(img)
End Using
End Sub
End Class
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string html = @"
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("document.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim html As String = "
<h1>Sample PDF Document</h1>
<p>This document contains text and an image.</p>
<img src='image.jpg' width='200' />"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("document.pdf")
End Sub
End Class
iText wymaga utworzenia PdfWriter, owinięcia go w PdfDocument, stworzenia Document do układu, następnie dodania obiektów Paragraph i obiektów Image utworzonych poprzez ImageDataFactory. Każdy element wymaga wyraźnej konstrukcji i konfiguracji.
IronPDF używa standardowego HTML — nagłówków, akapitów i znaczników <img> — wszystko stylizowane za pomocą znanych atrybutów HTML lub CSS. Silnik Chromium zajmuje się renderowaniem, dając ten sam efekt przy znacznie mniejszej ilości kodu.
Łączenie wielu plików PDF
Łączenie dokumentów pokazuje różnice w złożoności API.
iText:
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;
class Program
{
static void Main()
{
string outputPath = "merged.pdf";
string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };
using (PdfWriter writer = new PdfWriter(outputPath))
using (PdfDocument pdfDoc = new PdfDocument(writer))
{
PdfMerger merger = new PdfMerger(pdfDoc);
foreach (string file in inputFiles)
{
using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
{
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
}
}
}
}
}
Imports iText.Kernel.Pdf
Imports iText.Kernel.Utils
Imports System.IO
Class Program
Shared Sub Main()
Dim outputPath As String = "merged.pdf"
Dim inputFiles As String() = {"document1.pdf", "document2.pdf", "document3.pdf"}
Using writer As New PdfWriter(outputPath)
Using pdfDoc As New PdfDocument(writer)
Dim merger As New PdfMerger(pdfDoc)
For Each file As String In inputFiles
Using sourcePdf As New PdfDocument(New PdfReader(file))
merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
End Using
Next
End Using
End Using
End Sub
End Class
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdfDocuments = new List<PdfDocument>
{
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
};
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Imports System.Collections.Generic
Class Program
Shared Sub Main()
Dim pdfDocuments As New List(Of PdfDocument) From {
PdfDocument.FromFile("document1.pdf"),
PdfDocument.FromFile("document2.pdf"),
PdfDocument.FromFile("document3.pdf")
}
Dim merged = PdfDocument.Merge(pdfDocuments)
merged.SaveAs("merged.pdf")
End Sub
End Class
iText wymaga utworzenia PdfWriter do wyjścia, utworzenia docelowego PdfDocument, utworzenia PdfMerger, następnie iterowania przez pliki źródłowe, aby utworzyć instancje PdfReader i PdfDocument, wywołując merger.Merge() z zakresami stron i zarządzając usuwaniem wszystkich obiektów.
IronPDF ładuje dokumenty za pomocą PdfDocument.FromFile(), tworzy listę i wywołuje metodę statyczną PdfDocument.Merge(). Operacja jest znacznie bardziej zwięzła.
Dowiedz się więcej o obróbce plików PDF w samouczkach IronPDF.
Przewodnik po mapowaniu API
Dla programistów rozważających migrację ziTextlub porównujących możliwości, poniższe zestawienie przedstawia równoważne operacje:
Mapowanie klas
| KlasaiText 7 | Klasa iTextSharp | OdpowiednikIronPDF |
|---|---|---|
PdfWriter |
PdfWriter |
ChromePdfRenderer |
PdfDocument |
Document |
PdfDocument |
Document |
Document |
ChromePdfRenderer.RenderHtmlAsPdf() |
Paragraph |
Paragraph |
HTML <p>, <h1>, itd. |
Table |
PdfPTable |
HTML <table> |
Cell |
PdfPCell |
HTML <td>, <th> |
Image |
Image |
HTML <img> |
List |
List |
HTML <ul>, <ol> |
ListItem |
ListItem |
HTML <li> |
PdfReader |
PdfReader |
PdfDocument.FromFile() |
PdfMerger |
Nie dotyczy | PdfDocument.Merge() |
PdfTextExtractor |
PdfTextExtractor |
pdf.ExtractAllText() |
Mapowanie metod
| Zadanie | iText 7 | IronPDF |
|---|---|---|
| Utwórz plik PDF z HTML | HtmlConverter.ConvertToPdf() |
renderer.RenderHtmlAsPdf() |
| Utwórz plik PDF z adresu URL | Pobierz HTML + konwertuj | renderer.RenderUrlAsPdf() |
| Utwórz plik PDF z pliku | HtmlConverter.ConvertToPdf(File.ReadAllText()) |
renderer.RenderHtmlFileAsPdf() |
| Zapisz do pliku | document.Close() (przez strumień) |
pdf.SaveAs() |
| Zapisz w bajtach | memoryStream.ToArray() |
pdf.BinaryData |
| Otwórz istniejący plik PDF | new PdfDocument(new PdfReader(path)) |
PdfDocument.FromFile() |
| Łączenie plików PDF | PdfMerger.Merge() |
PdfDocument.Merge() |
| Wyodrębnij tekst | PdfTextExtractor.GetTextFromPage() |
pdf.ExtractAllText() |
Mapowanie stylów
| MetodaiText 7 | OdpowiednikIronPDF |
|---|---|
SetTextAlignment(TextAlignment.CENTER) |
CSS text-align: center |
SetFontSize(12) |
CSS font-size: 12px |
SetBold() |
CSS font-weight: bold |
SetBackgroundColor() |
CSS background-color |
SetBorder() |
CSS border |
Podsumowanie porównania funkcji
| Funkcja | iText | IronPDF |
|---|---|---|
| Programowe tworzenie plików PDF | ✅(Podejście podstawowe) | ⚠️ (Poprzez HTML) |
| HTML do PDF | ⚠️ (Wymagany dodatek pdfHTML) | ✅(Wbudowane) |
| Obsługa CSS3 | ⚠️ (Podstawowe za pomocą pdfHTML) | ✅(Pełne) |
| Flexbox/Grid | ❌ | ✅ |
| Wykonanie kodu JavaScript | ❌ | ✅ |
| Łączenie plików PDF | ✅ (PdfMerger) |
✅ (PdfDocument.Merge()) |
| Ekstrakcja tekstu | ✅ (PdfTextExtractor) |
✅ (ExtractAllText()) |
| Licencja wieczysta | ❌(Odrzucone) | ✅ |
| Brak ryzyka związanego z licencją AGPL | ❌(AGPL lub subskrypcja) | ✅ |
| Wsparcie społeczności | ✅(Obszerne) | ✅ |
Kiedy zespoły rozważają przejście ziTextna IronPDF
Zespoły programistów rozważają przejście ziTextnaIronPDFz kilku powodów:
Pułapka licencji AGPL: Licencja AGPL jest bardzo restrykcyjna w przypadku komercyjnych aplikacji internetowych. Jeśli używasziTextw aplikacji internetowej bez zakupu licencji komercyjnej, licencja AGPL wymaga, abyś udostępnił całą aplikację na licencji open source — nie tylko kod PDF, ale całą bazę kodu. Zespoły tworzące oprogramowanie własnościowe często nie mogą zaakceptować tego wirusowego wymogu licencyjnego.
Licencjonowanie komercyjne wyłącznie w ramach subskrypcji: firmaiTextzrezygnowała z licencji wieczystych, wymagając corocznego odnawiania subskrypcji w przypadku użytkowania komercyjnego. Zespoły preferujące zakupy jednorazowe uważają, że opcja Licencji wieczystejIronPDFjest bardziej odpowiednia dla ich budżetu.
Koszt dodatku pdfHTML: Aby konwertować HTML na PDF za pomocą iText, programiści muszą zainwestować w oddzielny dodatek pdfHTML, co zwiększa koszty i złożoność.IronPDFzawiera w podstawowej wersji produktu funkcję konwersji HTML do PDF z nowoczesnym silnikiem renderującym Chromium.
Złożoność API programowego:iTextwymaga ręcznego niskopoziomowego budowania PDF z użyciem Paragraph, Table, Cell i innych obiektów. Zespoły z doświadczeniem w tworzeniu stron internetowych uważają podejścieIronPDFdo HTML/CSS za bardziej intuicyjne i wydajne.
Nowoczesne standardy internetowe: Nawet w przypadku pdfHTML bibliotekaiTextma ograniczoną obsługę złożonych arkuszy CSS i kodu JavaScript. Silnik Chromium firmyIronPDFzapewnia pełną obsługę CSS3, Flexbox, Grid oraz wykonywanie kodu JavaScript dla nowoczesnych treści internetowych.
Uproszczona baza kodu: Przejście z podejścia programowegoiTextna paradygmat "HTML-first"IronPDFczęsto skutkuje znacznie mniejszą ilością kodu. Tabele raportów, które wymagają dziesiątek linii z obiektami Table, Cell i Paragraph, stają się prostymi tabelami HTML z stylizacją CSS.
Mocne strony i kwestie do rozważenia
Zalety iText
- Kompleksowy zestaw funkcji: Rozbudowane możliwości manipulacji plikami PDF
- Powszechne stosowanie: duża społeczność i obszerna dokumentacja
- Wielopłatformowość: Działa na różnych platformach .NET
- Precyzyjna kontrola: bezpośrednia manipulacja obiektami PDF w celu zaspokojenia specjalistycznych potrzeb
Uwagi dotyczące iText
- Licencja AGPL: Licencja typu viral wymaga udostępnienia aplikacji internetowych na zasadach open source lub komercyjnej subskrypcji
- Tylko subskrypcja: zniesiono Licencje wieczyste
- Dodatek pdfHTML: Konwersja HTML na PDF wymaga osobnego zakupu
- Złożoność programistyczna: Stroma krzywa uczenia się w związku z układem współrzędnych PDF
- Ograniczony nowoczesny CSS: Podstawowa obsługa CSS nawet w przypadku pdfHTML
- Brak JavaScript: Nie można wykonywać kodu JavaScript w treści HTML
Atuty IronPDF
- Licencja wieczysta: opcja jednorazowego zakupu
- Brak ryzyka związanego z licencją AGPL: zachowaj zamknięty charakter kodu zastrzeżonego
- Wbudowana funkcja konwersji HTML do PDF: nie jest wymagańy żaden oddzielny dodatek
- Silnik Chromium: Pełna obsługa CSS3, Flexbox, Grid i JavaScript
- Przyjazny dla programistów stron internetowych: Wykorzystuje znane umiejętności w zakresie HTML/CSS
- Prostsze API: zwięzłe metody dla typowych operacji
- Kompleksowe zasoby: obszerne samouczki i dokumentacja
Uwagi dotyczące IronPDF
- Licencja komercyjna: Wymagana do użytku produkcyjnego
- Paradygmat HTML-First: Podejście odmienne od konstrukcji programistycznej
Wnioski
iText iIronPDFreprezentują zasadniczo różne podejścia do generowania plików PDF w aplikacjach .NET.iTextoferuje kompleksowe programowe tworzenie PDF z użyciem klas jak Paragraph, Table i Cell, ale niesie poważne problemy licencyjne — AGPL wymaga udostępniania kodu aplikacji webowych, licencje wieczyste zostały wyeliminowane, a HTML do PDF wymaga oddzielnego zakupu dodatku pdfHTML.
IronPDF stanowi nowoczesną alternatywę dzięki wbudowanej funkcji konwersji HTML do PDF wykorzystującej silnik Chromium, opcjom Licencji wieczystych oraz braku wymagań dotyczących licencji wirusowych. Podejście "HTML-first" pozwala programistom stron internetowych bezpośrednio wykorzystać posiadane umiejętności, co często skutkuje prostszym i łatwiejszym w utrzymaniu kodem.
W miarę jak organizacje planują wdrożenie .NET 10, C# 14 oraz tworzenie aplikacji do 2026 r., wybór między programowym tworzeniem plików PDF na licencji AGPL a renderowaniem opartym na HTML na licencji komercyjnej ma znaczący wpływ zarówno na zgodność z przepisami, jak i na wydajność programistów. Zespoły, które chcą wyeliminować ryzyko związane z licencją AGPL, zmniejszyć złożoność licencjonowania lub wykorzystać umiejętności tworzenia stron internetowych do generowania plików PDF, przekonają się, żeIronPDFskutecznie spełnia te wymagania.
Zacznij testować IronPDF, korzystając z bezpłatnej wersji próbnej, i zapoznaj się z obszerną dokumentacją, aby ocenić, czy rozwiązanie to spełnia Twoje konkretne wymagania.