Verwendung der IronPDF Engine in Docker | IronPDF
Am 27. Mai 2025 erwarb Apryse TallComponents. Neue Lizenzen für TallPDF.NET und PDFKit.NET werden nicht mehr angeboten, und Apryse leitet neue Käufer an das iText SDK (ebenfalls im Besitz von Apryse) weiter. Bestehende Kunden erhalten weiterhin Support, aber die Engine wird nur noch gewartet. Für Teams, die derzeit TallComponentsversenden, vermeidet die Planung einer Migration jetzt einen erzwungenen Wechsel später.
Dieser Leitfaden bietet einen Migrationspfad von TallComponentszu IronPDF, einschließlich schrittweiser Anleitungen, API-Zuordnungen und Codebeispielen for .NET-Entwickler, die den Übergang planen.
Warum eine TallComponents-Migration planen
TallComponents (gegründet 2001) lieferte zwei Hauptprodukte for .NET PDF: PDFKit.NET zum Laden und Bearbeiten von PDFs und TallPDF.NET für die layoutorientierte Dokumentenerstellung. Nach der Übernahme durch Apryse wurden neue Lizenzverkäufe beendet, was den Planungshorizont für Teams, die von der Bibliothek abhängig sind, verändert.
Wichtige TallComponents-Einschränkungen heute
Geschlossen für neue Lizenzen: Die TallComponents-Seite von Apryse gibt an, dass keine neuen Lizenzen für TallComponents-Produkte mehr angeboten werden und neue Käufer an das iText SDK geleitet werden. Bestehende Lizenzinhaber werden weiterhin unterstützt.
Nur-XHTML-HTML-Pipeline: TallPDF.NET enthält eine XhtmlParagraph Klasse, die XHTML 1.0 Strict / XHTML 1.1 +CSS 2.1parst. PDFKit.NET hat von sich aus keine HTML-Pipeline. Moderner HTML5 + CSS3 + JavaScript-Inhalt wird nicht zuverlässig dargestellt - es gibt keinen Headless-Browser-Engine in der Box.
Eingefrorenes Plattformziel: TallComponents.PDFKit5 zielt auf .NET Standard 2.0 ab; die ältere TallComponents.PDFKit (4.x) zielt auf .NET Framework 2.0. Es gibt keine veröffentlichte .NET 8/9 TFM.
Wartungs-only-Roadmap: Mit Apryses Entwicklungsenergie, die sich auf das Apryse SDK und iText konzentriert, erhalten TallComponents-gebrandete Pakete Wartungsupdates, aber keine neuen Funktions-Roadmaps.
IronPDF: Eine moderne TallComponents-Alternative
IronPDF adressiert die wesentlichen Lücken, die TallComponents-Benutzer auf aktuellen .NET-Stacks betreffen:
| Feature | TallComponents | IronPDF |
|---|---|---|
| Aktueller Verkaufsstatus | Geschlossen für neue Lizenzen (Apryse übernommen 2025-05-27) | Aktiv verkauft |
| HTML-zu-PDF-Unterstützung | XHTML 1.0/1.1 +CSS 2.1via XhtmlParagraph (TallPDF.NET) |
Ja (HTML5/CSS3 mit Chromium) |
| JavaScriptin HTML | Nein | Vollständiger ES2024 |
| Installation | NuGet (TallComponents.PDFKit5, TallComponents.TallPDF5) |
NuGet (IronPdf) |
| Kundensupport | Nur für bestehende Kunden; neue Käufer an iText geleitet | Aktiver Support und Community |
| Zukünftige Investition | Nur Wartung | Langfristige Roadmap |
TallComponents verwendet ein XML/layoutorientiertes Modell aus einer früheren Ära der .NET-Dokumentenerstellung, während IronPDF ein Chromium-basiertes HTML-Rendering bietet, das anpassbar ist, um Frontend-Anwendungen zu erstellen.
Schnellstart: TallComponentszu IronPDF Migration
Schritt 1: Ersetzen von NuGet-Paketen
Entferne die TallComponents-Pakete, auf die sich Ihr Projekt bezieht. Die echten Paket-IDs auf nuget.org sind TallComponents.PDFKit5 (oder TallComponents.PDFKit für 4.x) und TallComponents.TallPDF5 / TallPDF6:
# Remove TallComponentspackages (whichever your project uses)
dotnet remove package TallComponents.PDFKit5
dotnet remove package TallComponents.TallPDF5
dotnet remove package TallComponents.PDFRasterizer4
# Remove TallComponentspackages (whichever your project uses)
dotnet remove package TallComponents.PDFKit5
dotnet remove package TallComponents.TallPDF5
dotnet remove package TallComponents.PDFRasterizer4
IronPDF installieren:
dotnet add package IronPdf
Für spezielle Frameworks bietet IronPDF spezielle Erweiterungspakete an:
Blazor -Server:
Install-Package IronPdf.Extensions.Blazor
MAUI:
Install-Package IronPdf.Extensions.Maui
MVC-Framework:
Install-Package IronPdf.Extensions.Mvc.Framework
Schritt 2: Namespaces aktualisieren
Ersetze TallComponents-Namensräume durch den IronPDF-Namespace:
// 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;
Imports IronPdf
' Before (TallComponents — real namespaces)
' Imports TallComponents.PDF ' Document, Page (PDFKit.NET)
' Imports TallComponents.PDF.Shapes ' TextShape, ImageShape (PDFKit)
' Imports TallComponents.PDF.Security ' PasswordSecurity
' Imports TallComponents.PDF.Layout ' Document, Section (TallPDF.NET)
' Imports TallComponents.PDF.Layout.Paragraphs ' TextParagraph, XhtmlParagraph
' After (IronPDF)
Imports IronPdf
Schritt 3: Initialisieren Sie Ihre Lizenz
Hinzufügen der Lizenzinitialisierung beim Start der Anwendung:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
TallComponentszu IronPDF API Mapping Referenz
Das Verständnis, wie TallComponents-Konzepte auf IronPDF abgebildet werden, beschleunigt den Migrationsprozess:
| TallComponents | IronPDF | Notizen |
|---|---|---|
Document (TallPDF.NET: Layout) |
ChromePdfRenderer |
Renderer für die PDF-Generierung erstellen |
Document (PDFKit.NET: Manipulation) |
PdfDocument |
Vorhandene PDFs laden/bearbeiten |
Section |
Automatisch | Von der HTML-Struktur abgeleitete Abschnitte |
TextParagraph |
HTML-Textelemente | Verwenden Sie <p>, <h1>, <div>, usw. |
ImageParagraph |
<img> Tag |
Standard-HTML-Bilder |
TableParagraph |
HTML<table> |
Standard-HTML-Tabellen |
XhtmlParagraph (XHTML 1.x + CSS 2.1) |
RenderHtmlAsPdf() (HTML5/CSS3 über Chromium) |
ModernesHTMLfunktioniert |
Font |
CSS font-family |
Unterstützte Webfonts |
document.Write(...) |
pdf.SaveAs() / pdf.BinaryData |
Datei- oder byte[]-Ausgabe |
page.Overlay.Add(shape) |
pdf.ApplyStamp(stamper) |
Wasserzeichen / Overlay |
outputDoc.Pages.Add(page.Clone()) |
PdfDocument.Merge(...) / pdf.AppendPdf(...) |
Mehrere PDFs zusammenführen |
Document.Security = new PasswordSecurity { ... } |
pdf.SecuritySettings |
PDF-Sicherheitskonfiguration |
PageLayout |
RenderingOptions |
Seiteneinstellungen und Ränder |
Beispiele für die Code-Migration
Konvertierung vonHTMLin PDF
TallComponents verarbeitetHTMLüber den XhtmlParagraph von TallPDF.NET, der nur XHTML 1.0/1.1 +CSS 2.1parst. Modernes HTML5, CSS3, Flexbox, Grid und JavaScript-gesteuerte Inhalte fallen außerhalb dieser Grammatik.
TallComponents Ansatz:
// 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
IronPDF-Ansatz:
// 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
Die ChromePdfRenderer von IronPDF verwendet eine echte Chromium-Engine, die vollständige HTML5- und CSS3-Unterstützung bietet. Das bedeutet, dass Ihre PDFs genau so wiedergegeben werden, wie sie in einem modernen Browser erscheinen würden. Erfahren Sie mehr im HTML zu PDF Tutorial.
Mehrere PDFs zusammenführen
Die PDF-Zusammenführung zeigt den Unterschied in der Ausführlichkeit zwischen TallComponentsund IronPDF.
TallComponents Ansatz:
// 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
IronPDF-Ansatz:
// 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
Die TallComponents-Version erfordert manuelle Seitenwiederholung und Klonen.IronPDF reduziert dies auf einen einzigen PdfDocument.Merge() Aufruf. Für fortgeschrittene Zusammenführungsszenarien siehe die PDF-Zusammenführungsdokumentation.
Wasserzeichen hinzufügen
Das Wasserzeichen in PDFs zeigt einen weiteren signifikanten Unterschied in der Erfahrung von Entwicklern.
TallComponents Ansatz:
// 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
IronPDF-Ansatz:
// 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
Die TextStamper Klasse von IronPDF bietet intuitive Ausrichtungsoptionen und automatische Seiteniteration. Der Leitfaden für Stempel und Wasserzeichen behandelt zusätzliche Anpassungsmöglichkeiten.
Digitale Signaturen
Das Signieren von Dokumenten ist für Unternehmensanwendungen von entscheidender Bedeutung.
TallComponents Ansatz:
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
IronPDF-Ansatz:
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")
Die Signatur-API von IronPDF enthält zusätzliche Metadaten-Eigenschaften für Kontaktinformationen, den Standort und den Grund für die Unterzeichnung - wichtig für Prüfpfade. In der Dokumentation zur digitalen Signatur finden Sie ausführliche Informationen zur Implementierung.
Funktionsvergleich: TallComponentsgegen IronPDF
| Feature | TallComponents | IronPDF |
|---|---|---|
| Status | Geschlossen für neue Lizenzen (Apryse übernommen 2025-05-27) | Aktiv |
| Unterstützung | Nur für bestehende Kunden | Voll |
| Aktualisierungen | Nur Wartung | Regelmäßige Funktionsveröffentlichungen |
| Inhaltserstellung | ||
| HTMLzu PDF | XHTML 1.0/1.1 +CSS 2.1(XhtmlParagraph) |
Vollständiges HTML5/CSS3 über Chromium |
| URL zu PDF | Ja für XHTML URLs (XhtmlParagraph.Path) |
Ja |
| CSS-Unterstützung | CSS 2.1 | Vollständig CSS3 |
| JavaScript | Nein | Vollständiger ES2024 |
| XML /Layout DOMVorlagen | Ja (TallPDF.NET) | Nicht erforderlich (HTML) |
| PDF-Betrieb | ||
| PDFs zusammenführen | Ja (Pages.Add(page.Clone())) |
Ja (PdfDocument.Merge) |
| PDFs teilen | Ja | Ja |
| Wasserzeichen | page.Overlay.Add(TextShape) |
pdf.ApplyStamp(...) |
| Kopf-/Fußzeilen | Layout DOM | HTML/CSS |
| Sicherheit | ||
| Passwortschutz | Ja (PasswordSecurity) |
Ja |
| Digitale Signaturen | Ja (SignatureField.Sign) |
Ja |
| Verschlüsselung | RC4 / AES-128 / AES-256 | AES-128 / AES-256 |
| PDF/A | PDF/A-1, PDF/A-2, PDF/A-3 | Ja |
| Plattform | ||
| Ziel-Frameworks | PDFKit5: .NET Standard 2.0; PDFKit (4.x): .NET Framework 2.0 | .NET Framework 4.6.2+, .NET 6/7/8/9 |
| Entwicklung | ||
| Lernkurve | XML / Layout DOM | HTML |
| Dokumentation | Beim Erwerb eingefroren; Neue Dokumente leiten zu Apryse / iText | Gepflegt |
| Gemeinschaft | Stille (keine neuen Verkäufe) | Aktiv |
Checkliste für die Migration von TallComponents
Vor der Migration anfallende Aufgaben
Überprüfen Sie Ihre Codebasis, um die Verwendung von TallComponentszu identifizieren:
grep -r "using TallComponents" --include="*.cs" .
grep -rE "XhtmlParagraph|TextParagraph|PasswordSecurity|page\.Overlay" --include="*.cs" .
grep -r "using TallComponents" --include="*.cs" .
grep -rE "XhtmlParagraph|TextParagraph|PasswordSecurity|page\.Overlay" --include="*.cs" .
Bestehende XML-Layout-Vorlagen dokumentieren—diese werden inHTMLkonvertiert. Identifizieren Sie die derzeit verwendeten Sicherheitseinstellungen und beachten Sie dabei Kennwortkonfigurationen und Implementierungen digitaler Signaturen.
Aufgaben der Code-Aktualisierung
- TallComponents-Pakete über NuGet entfernen
- IronPDF-Paket installieren
- XHTML- / Layout-DOM-Vorlagen in HTML5 konvertieren
- Ersetzen des Abschnitts-/Absatzmodells durch HTML-Elemente
- Aktualisierung des Tabellencodes zur Verwendung von Standard-HTML-Tabellen
- Konvertieren Sie Header/Footer inHTMLmit
HtmlHeaderFooter - Aktualisieren Sie die Sicherheitseinstellungen zur Verwendung von
pdf.SecuritySettings - Lizenzinitialisierung beim Start hinzufügen
Migration von Kopf- und Fußzeilen
TallPDF.NET verwendet ein Layout-DOM (Section.Header / Section.Footer) für Seitenheader.IronPDF bietet HTML-basierte Kopfzeilen mit dynamischen Platzhaltern:
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
MaxHeight = 25
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
MaxHeight = 25
};
Imports System
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter() With {
.HtmlFragment = "<div style='text-align:center;'>Header Text</div>",
.MaxHeight = 25
}
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter() With {
.HtmlFragment = "<div style='text-align:center;'>Footer Text</div>",
.MaxHeight = 25
}
Erfahren Sie mehr über Kopf- und Fußzeilen in IronPDF.
Testphase
- Vergleich der visuellen Ausgabe zwischen TallComponents- und IronPDF-Versionen
- Alle Dokumentvorlagen testen
- PDF-Zusammenführungsfunktionalität validieren
- Digitale Signaturen testen
- Bestätigen, dass Sicherheitseinstellungen korrekt angewendet werden
Empfohlener Zeitplan für die Migration
Da TallComponentsgeschlossen ist für neue Lizenzen und nur auf Wartungs-Support, planen Sie den Umzug in Ihrem eigenen Tempo, aber zögern Sie nicht.
Woche 1: Codebasis prüfen und alle Verwendungen von TallComponentsidentifizieren
Woche 2: XHTML- / Layout-Vorlagen in HTML5 konvertieren
Woche 3: Sicherheitsupdates, Zusammenführung und Signierung des Codes
Woche 4: Test und Produktionsbereitstellung
Je länger ein Stack auf TallComponentsbleibt, desto weiter entfernt er sich von aktuellen .NET-Zielen und aktuellem HTML.

