using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
27.05.2025 Apryse przejęło TallComponents. Nie oferuje się już nowych licencji na TallPDF.NET i PDFKit.NET, a Apryse kieruje nowych nabywców do iText SDK (również posiadanego przez Apryse). Istniejący klienci nadal otrzymują wsparcie, ale silnik jest tylko w trybie utrzymania. Dla zespołów obecnie korzystających z TallComponents, teraz planowanie migracji pozwala uniknąć wymuszonego przejścia później.
Ten przewodnik zapewnia ścieżkę migracji zTallComponentsdo IronPDF, w tym instrukcje krok po kroku, mapowania API i przykłady kodu dla deweloperów .NET planujących przejście.
Dlaczego planować migrację z TallComponents
TallComponents (założone w 2001) wprowadziło dwa główne produkty PDF dla .NET: PDFKit.NET do ładowania i manipulacji PDF oraz TallPDF.NET do generowania dokumentów ukierunkowanych na układ. Po przejęciu przez Apryse zakończono sprzedaż nowych licencji, co zmienia horyzont planowania dla zespołów polegających na bibliotece.
Kluczowe ograniczeniaTallComponentsdzisiaj
Zamknięte na nowe licencje: StronaTallComponentsApryse stwierdza, że nie oferuje już nowych licencji na produktyTallComponentsi kieruje nowych nabywców do iText SDK. Dotychczasowi posiadacze licencji nadal otrzymują wsparcie.
Tylko potok XHTML: TallPDF.NET dostarcza klasę XhtmlParagraph, która parsuje XHTML 1.0 Strict / XHTML 1.1 + CSS 2.1. PDFKit.NET sam w sobie nie ma potoku HTML. Nowoczesne HTML5 + CSS3 +JavaScriptnie renderuje się niezawodnie - brak jest silnika przeglądarki bezgłowej w pakiecie.
Zamrożony cel platformy:TallComponents.PDFKit5 wspiera .NET Standard 2.0; starszy TallComponents.PDFKit (4.x) wspiera .NET Framework 2.0. Nie opublikowano TFM dla .NET 8/9.
Mapa drogowa tylko dla utrzymania: Z energią rozwojową Apryse skupioną na Apryse SDK i iText, pakiety oznaczone markąTallComponentsotrzymują aktualizacje konserwacyjne, ale nie nową mapę drogową funkcji.
IronPDF: nowoczesna alternatywa dla TallComponents
IronPDF rozwiązuje kluczowe luki, które wpływają na użytkownikówTallComponentsna bieżących stosach .NET:
Funkcja
TallComponents
IronPDF
Aktualny status sprzedaży
Zamknięte na nowe licencje (Apryse przejęty 2025-05-27)
Tylko dla istniejących klientów; nowi nabywcy kierowani do iText
Aktywne wsparcie i społeczność
Przyszłe inwestycje
Tylko utrzymanie
Długoterminowa mapa drogowa
TallComponents używa modelu XML/ułożenia zakorzenionego w wcześniejszej erze generowania dokumentów .NET, podczas gdy IronPDF zapewnia renderowanieHTMLzasilane przez Chromium zgodnie z tym, jak zespoły obecnie budują aplikacje frontend.
Szybki start: Migracja zTallComponentsdo IronPDF
Krok 1: Zastąp pakiety NuGet
Usuń pakiety TallComponents, na które wskazuje twój projekt. Prawdziwe identyfikatory pakietów na nuget.org to TallComponents.PDFKit5 (lub TallComponents.PDFKit dla wersji 4.x) i TallComponents.TallPDF5 / TallPDF6:
// Before (TallComponents — real namespaces)
using TallComponents.PDF; // Document, Page (PDFKit.NET)
using TallComponents.PDF.Shapes; // TextShape, ImageShape (PDFKit)
using TallComponents.PDF.Security; // PasswordSecurity
using TallComponents.PDF.Layout; // Document, Section (TallPDF.NET)
using TallComponents.PDF.Layout.Paragraphs; // TextParagraph, XhtmlParagraph
// After (IronPDF)
using IronPdf;
// Before (TallComponents — real namespaces)
using TallComponents.PDF; // Document, Page (PDFKit.NET)
using TallComponents.PDF.Shapes; // TextShape, ImageShape (PDFKit)
using TallComponents.PDF.Security; // PasswordSecurity
using TallComponents.PDF.Layout; // Document, Section (TallPDF.NET)
using TallComponents.PDF.Layout.Paragraphs; // TextParagraph, XhtmlParagraph
// After (IronPDF)
using IronPdf;
Dodaj inicjalizację licencji podczas uruchamiania aplikacji:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText $csharpLabel
TallComponentsdo IronPDF API – dokumentacja API
Zrozumienie, w jaki sposób koncepcjeTallComponentsodnoszą się do IronPDF, przyspiesza proces migracji:
TallComponents
IronPDF
Uwagi
Document (TallPDF.NET: układ)
ChromePdfRenderer
Utwórz renderer do generowania plików PDF
Document (PDFKit.NET: manipulacja)
PdfDocument
Ładowanie/edycja istniejących PDF
Section
Automatyczne
Sekcje pochodzące ze strukturyHTML
TextParagraph
Elementy tekstoweHTML
Użyj , ,
itp.
ImageParagraph
Tag
Standardowe obrazyHTML
TableParagraph
HTML
Standardowe tabeleHTML
XhtmlParagraph (XHTML 1.x + CSS 2.1)
RenderHtmlAsPdf() (HTML5/CSS3 przez Chromium)
NowoczesnyHTMLdziała
Font
CSS font-family
Obsługiwane czcionki webowe
document.Write(...)
pdf.SaveAs() / pdf.BinaryData
Plik lub byte[] wyjście
page.Overlay.Add(shape)
pdf.ApplyStamp(stamper)
Znak wodny / nakładka
outputDoc.Pages.Add(page.Clone())
PdfDocument.Merge(...) / pdf.AppendPdf(...)
Łączenie wielu plików PDF
Document.Security = new PasswordSecurity { ... }
pdf.SecuritySettings
Konfiguracja zabezpieczeń plików PDF
PageLayout
RenderingOptions
Ustawienia strony i marginesy
Przykłady migracji kodu
KonwersjaHTMLdo PDF
TallComponents obsługujeHTMLprzez XhtmlParagraph w TallPDF.NET, który parsuje tylko XHTML 1.0/1.1 + CSS 2.1. Nowoczesne HTML5, CSS3, flexbox, grid i treści napędzane przezJavaScriptleżą poza tą składnią:
Podejście TallComponents:
// NuGet: Install-Package TallComponents.TallPDF5
// (HTML/XHTML conversion lives in TallPDF.NET, not in PDFKit.NET.)
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Paragraphs;
using System.IO;
class Program
{
static void Main()
{
Document document = new Document();
Section section = document.Sections.Add();
// XhtmlParagraph supports XHTML 1.0/1.1 +CSS 2.1only.
XhtmlParagraph xhtml = new XhtmlParagraph();
xhtml.Text = "<html><body><h1>Hello World</h1><p>This is a PDF from XHTML.</p></body></html>";
section.Paragraphs.Add(xhtml);
using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
{
document.Write(fs);
}
}
}
// NuGet: Install-Package TallComponents.TallPDF5
// (HTML/XHTML conversion lives in TallPDF.NET, not in PDFKit.NET.)
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Paragraphs;
using System.IO;
class Program
{
static void Main()
{
Document document = new Document();
Section section = document.Sections.Add();
// XhtmlParagraph supports XHTML 1.0/1.1 +CSS 2.1only.
XhtmlParagraph xhtml = new XhtmlParagraph();
xhtml.Text = "<html><body><h1>Hello World</h1><p>This is a PDF from XHTML.</p></body></html>";
section.Paragraphs.Add(xhtml);
using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
{
document.Write(fs);
}
}
}
Imports TallComponents.PDF.Layout
Imports TallComponents.PDF.Layout.Paragraphs
Imports System.IO
Class Program
Shared Sub Main()
Dim document As New Document()
Dim section As Section = document.Sections.Add()
' XhtmlParagraph supports XHTML 1.0/1.1 +CSS 2.1 only.
Dim xhtml As New XhtmlParagraph()
xhtml.Text = "<html><body><h1>Hello World</h1><p>This is a PDF from XHTML.</p></body></html>"
section.Paragraphs.Add(xhtml)
Using fs As New FileStream("output.pdf", FileMode.Create)
document.Write(fs)
End Using
End Sub
End Class
$vbLabelText $csharpLabel
Podejście IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
// Create a PDF fromHTMLstring
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
// Create a PDF fromHTMLstring
var renderer = new ChromePdfRenderer();
string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
' Create a PDF from HTML string
Dim renderer As New ChromePdfRenderer()
Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Sub
End Class
$vbLabelText $csharpLabel
IronPDF's ChromePdfRenderer używa prawdziwego silnika Chromium, zapewniając pełne wsparcie dla HTML5 i CSS3. Oznacza to, że pliki PDF wyświetlają się dokładnie tak, jak wyglądałyby w nowoczesnej przeglądarce. Dowiedz się więcej w samouczku dotyczącym konwersji HTML do PDF.
Łączenie wielu plików PDF
Łączenie plików PDF pokazuje różnicę w szczegółowości międzyTallComponentsa IronPDF.
Podejście TallComponents:
// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using System.IO;
class Program
{
static void Main()
{
// Create target document
Document outputDoc = new Document();
// Load first PDF and clone each page into the target
using (FileStream fs1 = new FileStream("document1.pdf", FileMode.Open, FileAccess.Read))
{
Document doc1 = new Document(fs1);
foreach (Page page in doc1.Pages)
{
outputDoc.Pages.Add(page.Clone()); // clone is required across documents
}
}
// Load second PDF and append the whole page collection
using (FileStream fs2 = new FileStream("document2.pdf", FileMode.Open, FileAccess.Read))
{
Document doc2 = new Document(fs2);
outputDoc.Pages.AddRange(doc2.Pages.CloneToArray());
}
// Save merged document
using (FileStream output = new FileStream("merged.pdf", FileMode.Create))
{
outputDoc.Write(output);
}
}
}
// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using System.IO;
class Program
{
static void Main()
{
// Create target document
Document outputDoc = new Document();
// Load first PDF and clone each page into the target
using (FileStream fs1 = new FileStream("document1.pdf", FileMode.Open, FileAccess.Read))
{
Document doc1 = new Document(fs1);
foreach (Page page in doc1.Pages)
{
outputDoc.Pages.Add(page.Clone()); // clone is required across documents
}
}
// Load second PDF and append the whole page collection
using (FileStream fs2 = new FileStream("document2.pdf", FileMode.Open, FileAccess.Read))
{
Document doc2 = new Document(fs2);
outputDoc.Pages.AddRange(doc2.Pages.CloneToArray());
}
// Save merged document
using (FileStream output = new FileStream("merged.pdf", FileMode.Create))
{
outputDoc.Write(output);
}
}
}
Imports TallComponents.PDF
Imports System.IO
Class Program
Shared Sub Main()
' Create target document
Dim outputDoc As New Document()
' Load first PDF and clone each page into the target
Using fs1 As New FileStream("document1.pdf", FileMode.Open, FileAccess.Read)
Dim doc1 As New Document(fs1)
For Each page As Page In doc1.Pages
outputDoc.Pages.Add(page.Clone()) ' clone is required across documents
Next
End Using
' Load second PDF and append the whole page collection
Using fs2 As New FileStream("document2.pdf", FileMode.Open, FileAccess.Read)
Dim doc2 As New Document(fs2)
outputDoc.Pages.AddRange(doc2.Pages.CloneToArray())
End Using
' Save merged document
Using output As New FileStream("merged.pdf", FileMode.Create)
outputDoc.Write(output)
End Using
End Sub
End Class
$vbLabelText $csharpLabel
Podejście IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
// Load PDFs
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
// Merge PDFs
var merged = PdfDocument.Merge(pdf1, pdf2);
// Save merged document
merged.SaveAs("merged.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
class Program
{
static void Main()
{
// Load PDFs
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
// Merge PDFs
var merged = PdfDocument.Merge(pdf1, pdf2);
// Save merged document
merged.SaveAs("merged.pdf");
}
}
Imports IronPdf
Class Program
Shared Sub Main()
' Load PDFs
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
' Merge PDFs
Dim merged = PdfDocument.Merge(pdf1, pdf2)
' Save merged document
merged.SaveAs("merged.pdf")
End Sub
End Class
$vbLabelText $csharpLabel
WersjaTallComponentswymaga ręcznego przeglądania stron i klonowania.IronPDF redukuje to do pojedynczego wywołania PdfDocument.Merge(). W przypadku zaawansowanych scenariuszy łączenia plików zapoznaj się z dokumentacją dotyczącą łączenia plików PDF.
Dodawanie znaków wodnych
Znakowanie wodne plików PDF ujawnia kolejną istotną różnicę w doświadczeniach programistów.
Podejście TallComponents:
// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using TallComponents.PDF.Shapes;
using System.IO;
using System.Drawing;
class Program
{
static void Main()
{
// Load existing PDF
using (FileStream fs = new FileStream("input.pdf", FileMode.Open, FileAccess.Read))
{
Document document = new Document(fs);
foreach (Page page in document.Pages)
{
TextShape watermark = new TextShape();
watermark.Text = "CONFIDENTIAL";
watermark.Font = new Font("Arial", 60);
watermark.Pen = new Pen(Color.FromArgb(128, 255, 0, 0));
watermark.X = 200;
watermark.Y = 400;
// Rotation is applied via a transform on PDFKit.NET
// (TextShape has no Rotate property in the PDFKit API).
watermark.Transform = new RotateTransform(45);
page.Overlay.Add(watermark);
}
using (FileStream output = new FileStream("watermarked.pdf", FileMode.Create))
{
document.Write(output);
}
}
}
}
// NuGet: Install-Package TallComponents.PDFKit5
using TallComponents.PDF;
using TallComponents.PDF.Shapes;
using System.IO;
using System.Drawing;
class Program
{
static void Main()
{
// Load existing PDF
using (FileStream fs = new FileStream("input.pdf", FileMode.Open, FileAccess.Read))
{
Document document = new Document(fs);
foreach (Page page in document.Pages)
{
TextShape watermark = new TextShape();
watermark.Text = "CONFIDENTIAL";
watermark.Font = new Font("Arial", 60);
watermark.Pen = new Pen(Color.FromArgb(128, 255, 0, 0));
watermark.X = 200;
watermark.Y = 400;
// Rotation is applied via a transform on PDFKit.NET
// (TextShape has no Rotate property in the PDFKit API).
watermark.Transform = new RotateTransform(45);
page.Overlay.Add(watermark);
}
using (FileStream output = new FileStream("watermarked.pdf", FileMode.Create))
{
document.Write(output);
}
}
}
}
Imports TallComponents.PDF
Imports TallComponents.PDF.Shapes
Imports System.IO
Imports System.Drawing
Class Program
Shared Sub Main()
' Load existing PDF
Using fs As New FileStream("input.pdf", FileMode.Open, FileAccess.Read)
Dim document As New Document(fs)
For Each page As Page In document.Pages
Dim watermark As New TextShape()
watermark.Text = "CONFIDENTIAL"
watermark.Font = New Font("Arial", 60)
watermark.Pen = New Pen(Color.FromArgb(128, 255, 0, 0))
watermark.X = 200
watermark.Y = 400
' Rotation is applied via a transform on PDFKit.NET
' (TextShape has no Rotate property in the PDFKit API).
watermark.Transform = New RotateTransform(45)
page.Overlay.Add(watermark)
Next
Using output As New FileStream("watermarked.pdf", FileMode.Create)
document.Write(output)
End Using
End Using
End Sub
End Class
$vbLabelText $csharpLabel
Podejście IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
// Load existing PDF
var pdf = PdfDocument.FromFile("input.pdf");
// Create watermark
var watermark = new TextStamper()
{
Text = "CONFIDENTIAL",
FontSize = 60,
Opacity = 50,
Rotation = 45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
// Apply watermark to all pages
pdf.ApplyStamp(watermark);
// Save watermarked PDF
pdf.SaveAs("watermarked.pdf");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
class Program
{
static void Main()
{
// Load existing PDF
var pdf = PdfDocument.FromFile("input.pdf");
// Create watermark
var watermark = new TextStamper()
{
Text = "CONFIDENTIAL",
FontSize = 60,
Opacity = 50,
Rotation = 45,
VerticalAlignment = VerticalAlignment.Middle,
HorizontalAlignment = HorizontalAlignment.Center
};
// Apply watermark to all pages
pdf.ApplyStamp(watermark);
// Save watermarked PDF
pdf.SaveAs("watermarked.pdf");
}
}
Imports IronPdf
Imports IronPdf.Editing
Class Program
Shared Sub Main()
' Load existing PDF
Dim pdf = PdfDocument.FromFile("input.pdf")
' Create watermark
Dim watermark = New TextStamper() With {
.Text = "CONFIDENTIAL",
.FontSize = 60,
.Opacity = 50,
.Rotation = 45,
.VerticalAlignment = VerticalAlignment.Middle,
.HorizontalAlignment = HorizontalAlignment.Center
}
' Apply watermark to all pages
pdf.ApplyStamp(watermark)
' Save watermarked PDF
pdf.SaveAs("watermarked.pdf")
End Sub
End Class
$vbLabelText $csharpLabel
Klasa TextStamper w IronPDF zapewnia intuicyjne opcje wyrównania i automatyczne iterowanie stron. Przewodnik dotyczący stempli i znaków wodnych zawiera informacje o dodatkowych opcjach dostosowywania.
Podpisy cyfrowe
Podpisywanie dokumentów ma kluczowe znaczenie dla aplikacji Enterprise.
Podejście TallComponents:
using TallComponents.PDF;
using TallComponents.PDF.Signing;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using (FileStream fs = new FileStream("unsigned.pdf", FileMode.Open, FileAccess.Read))
{
Document document = new Document(fs);
X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");
SignatureField field = new SignatureField("Signature1");
field.Sign(cert);
document.Fields.Add(field);
using (FileStream output = new FileStream("signed.pdf", FileMode.Create))
{
document.Write(output);
}
}
using TallComponents.PDF;
using TallComponents.PDF.Signing;
using System.IO;
using System.Security.Cryptography.X509Certificates;
using (FileStream fs = new FileStream("unsigned.pdf", FileMode.Open, FileAccess.Read))
{
Document document = new Document(fs);
X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");
SignatureField field = new SignatureField("Signature1");
field.Sign(cert);
document.Fields.Add(field);
using (FileStream output = new FileStream("signed.pdf", FileMode.Create))
{
document.Write(output);
}
}
Imports TallComponents.PDF
Imports TallComponents.PDF.Signing
Imports System.IO
Imports System.Security.Cryptography.X509Certificates
Using fs As New FileStream("unsigned.pdf", FileMode.Open, FileAccess.Read)
Dim document As New Document(fs)
Dim cert As New X509Certificate2("certificate.pfx", "password")
Dim field As New SignatureField("Signature1")
field.Sign(cert)
document.Fields.Add(field)
Using output As New FileStream("signed.pdf", FileMode.Create)
document.Write(output)
End Using
End Using
$vbLabelText $csharpLabel
Podejście IronPDF:
using IronPdf;
using IronPdf.Signing;
var pdf = PdfDocument.FromFile("unsigned.pdf");
// Sign with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "support@company.com",
SigningLocation = "New York",
SigningReason = "Document Approval"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
var pdf = PdfDocument.FromFile("unsigned.pdf");
// Sign with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningContact = "support@company.com",
SigningLocation = "New York",
SigningReason = "Document Approval"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Dim pdf = PdfDocument.FromFile("unsigned.pdf")
' Sign with certificate
Dim signature = New PdfSignature("certificate.pfx", "password") With {
.SigningContact = "support@company.com",
.SigningLocation = "New York",
.SigningReason = "Document Approval"
}
pdf.Sign(signature)
pdf.SaveAs("signed.pdf")
$vbLabelText $csharpLabel
Charakterystyczne API IronPDF zawiera dodatkowe właściwości metadanych dotyczące informacji kontaktowych, lokalizacji i powodu podpisania — ważne dla ścieżek audytu. Zapoznaj się z dokumentacją dotyczącą podpisu cyfrowego, aby uzyskać szczegółowe informacje na temat wdrożenia.
Porównanie funkcji:TallComponentsvs IronPDF
Funkcja
TallComponents
IronPDF
Status
Zamknięte na nowe licencje (Apryse przejęty 2025-05-27)
Aktywne
Wsparcie
Tylko dla obecnych klientów
Pełna
Aktualizacje
Tylko utrzymanie
Regularne wydania funkcji
Tworzenie treści
HTMLdo PDF
XHTML 1.0/1.1 +CSS 2.1(XhtmlParagraph)
Pełne HTML5/CSS3 przez Chromium
URL do pliku PDF
Tak dla URL-ów XHTML (XhtmlParagraph.Path)
Tak
Obsługa CSS
CSS 2.1
Pełny CSS3
JavaScript
Nie
Pełna wersja ES2024
XML / Szablony DOM układu
Tak (TallPDF.NET)
Niepotrzebne (HTML)
Operacje na plikach PDF
Łączenie plików PDF
Tak (Pages.Add(page.Clone()))
Tak (PdfDocument.Merge)
Podział plików PDF
Tak
Tak
Znaki wodne
page.Overlay.Add(TextShape)
pdf.ApplyStamp(...)
Nagłówki/stopki
Układ DOM
HTML/CSS
Bezpieczeństwo
Ochrona hasłem
Tak (PasswordSecurity)
Tak
Podpisy cyfrowe
Tak (SignatureField.Sign)
Tak
Szyfrowanie
RC4 / AES-128 / AES-256
AES-128 / AES-256
PDF/A
PDF/A-1, PDF/A-2, PDF/A-3
Tak
Platforma
Docelowe Frameworki
PDFKit5: .NET Standard 2.0; PDFKit (4.x): .NET Framework 2.0
.NET Framework 4.6.2+, .NET 6/7/8/9
Rozwój
Krzywa uczenia się
XML / układ DOM
HTML
Dokumentacja
Zamrożony w momencie przejęcia; nowe dokumenty skierowane do Apryse / iText
Utrzymywany
Społeczność
Cichy (brak nowej sprzedaży)
Aktywne
Lista kontrolna migracji TallComponents
Zadania przed migracją
Przeprowadź audyt bazy kodu, aby zidentyfikować wszystkie użycia TallComponents:
Udokumentuj istniejące szablony XML/ułożenia — będą one przekształcone na HTML. Zidentyfikuj obecnie używane ustawienia zabezpieczeń, zwracając uwagę na konfiguracje hasła i implementacje podpisu cyfrowego.
Zadania związane z aktualizacją kodu
Usuń pakietyTallComponentsprzez NuGet
Zainstaluj pakiet IronPDF
Przekształć szablony XHTML / DOM ułożenia na HTML5
Zastąp model sekcji/akapitów elementami HTML
Zaktualizuj kod tabel do używania standardowych tabel HTML
Konwertowanie nagłówków/stopki naHTMLza pomocą HtmlHeaderFooter
Aktualizuj ustawienia zabezpieczeń, aby używać pdf.SecuritySettings
Dodaj inicjalizację licencji podczas uruchamiania
Migracja nagłówków i stopek
TallPDF.NET używa DOM układów (Section.Header / Section.Footer) dla nagłówków stron.IronPDF zapewnia nagłówki oparte naHTMLz dynamicznymi zastępcami:
PonieważTallComponentsjest zamknięte na nowe licencje i na wsparciu tylko dla utrzymania, planuj przejście we własnym tempie, ale nie zwlekaj:
Tydzień 1: Przeprowadź audyt bazy kodu i zidentyfikuj wszystkie użycia TallComponents
Tydzień 2: Przekształć szablony XHTML / DOM ułożenia na HTML5
Tydzień 3: Zaktualizuj kod bezpieczeństwa, łączenia i podpisywania
Tydzień 4: Testowanie i wdrażanie na produkcję
Im dłużej stos pozostaje na TallComponents, tym bardziej odbiega od bieżących celów .NET i bieżącego HTML.
Zwróć uwagęApryse, PDFKit, Tall Components i iText są zarejestrowanymi znakami towarowymi swoich właścicieli. Ta strona nie jest powiązana z, zatwierdzona przez, ani sponsorowana przez Apryse, PDFKit, PDFTron,TallComponentslub iText Group. Wszystkie nazwy produktów, loga i marki są własnością ich właścicieli. Porównania mają charakter wyłącznie informacyjny i odzwierciedlają informacje dostępne publicznie w momencie pisania.
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ę...