Zum Fußzeileninhalt springen
VIDEOS

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
SHELL

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
$vbLabelText   $csharpLabel

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"
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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")
$vbLabelText   $csharpLabel

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

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

  1. TallComponents-Pakete über NuGet entfernen
  2. IronPDF-Paket installieren
  3. XHTML- / Layout-DOM-Vorlagen in HTML5 konvertieren
  4. Ersetzen des Abschnitts-/Absatzmodells durch HTML-Elemente
  5. Aktualisierung des Tabellencodes zur Verwendung von Standard-HTML-Tabellen
  6. Konvertieren Sie Header/Footer inHTMLmit HtmlHeaderFooter
  7. Aktualisieren Sie die Sicherheitseinstellungen zur Verwendung von pdf.SecuritySettings
  8. 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
}
$vbLabelText   $csharpLabel

Erfahren Sie mehr über Kopf- und Fußzeilen in IronPDF.

Testphase

  1. Vergleich der visuellen Ausgabe zwischen TallComponents- und IronPDF-Versionen
  2. Alle Dokumentvorlagen testen
  3. PDF-Zusammenführungsfunktionalität validieren
  4. Digitale Signaturen testen
  5. 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.

Hinweis:Apryse, PDFKit, Tall Components und iText sind eingetragene Warenzeichen ihrer jeweiligen Inhaber. Diese Website ist nicht verbunden mit, unterstützt oder gesponsert durch Apryse, PDFKit, PDFTron, TallComponentsoder iText Group. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Inhaber. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen

Iron-Support-Team

Wir sind 24 Stunden am Tag, 5 Tage die Woche online.
Chat
E-Mail
Rufen Sie mich an