Przejdź do treści stopki
PRZEWODNIKI MIGRACJI

Jak przeprowadzić migrację z TallComponents do IronPDF w języku C#

Kiedy firma Apryse przejęła TallComponents, sytuacja na rynku narzędzi .NET do obsługi plików PDF uległa znacznej zmianie. Ponieważ TallComponents nie jest już dostępne dla nowych licencji, a obecni użytkownicy są przekierowywani do iText SDK, programiści korzystający z TallPDF i PDFKit stoją przed nieuniknioną decyzją: przeprowadzić migrację teraz lub ryzykować korzystanie z nieobsługiwanego oprogramowania ze znanymi błędami renderowania do 2026 roku i później.

Niniejszy przewodnik zawiera kompletną ścieżkę migracji z TallComponents do IronPDF, w tym instrukcje krok po kroku, mapowania API oraz rzeczywiste przykłady kodu, które pomogą profesjonalnym programistom .NET w sprawnym przejściu na nowe rozwiązanie.

Dlaczego migracja TallComponents jest teraz obowiązkowa

TallComponents było niegdyś szanowaną marką w dziedzinie generowania plików PDF w języku C#. Biblioteka oferowała przepływy pracy z dokumentami oparte na XML oraz programową obsługę plików PDF. Jednak przejęcie przez Apryse położyło kres sprzedaży nowych licencji, co zasadniczo zmieniło kalkulację dla zespołów programistycznych.

Istotne ograniczenia TallComponents

Decyzja o migracji nie dotyczy wyłącznie wsparcia dostawcy — TallComponents boryka się z poważnym długiem technicznym:

Wycofanie produktu: Od momentu przejęcia przez Apryse nie są dostępne żadne nowe licencje. Oficjalna strona internetowa TallComponents wyraźnie informuje, że sprzedaż nowych licencji została zakończona, kierując potencjalnych użytkowników do korzystania z iText SDK.

Brak obsługi konwersji HTML do PDF: W przeciwieństwie do nowoczesnych bibliotek PDF, TallComponents nie obsługuje bezpośredniej konwersji HTML do PDF. Programiści korzystający z platform wsparcia potwierdzili to ograniczenie, wskazując jako alternatywę rozwiązania innych firm, takie jak Pechkin.

Zgłoszone błędy renderowania: Listy zmian ujawniają liczne problemy z renderowaniem, w tym wyświetlanie pustych stron, brakujące grafiki, nieprawidłowe przetwarzanie obrazów JPEG oraz nieprawidłowe wyświetlanie czcionek. Błędy te nie zostały nigdy usunięte przed wycofaniem produktu.

Brak wsparcia i aktualizacji: Bez aktywnej konserwacji wszelkie luki w zabezpieczeniach lub problemy z kompatybilnością z .NET 10 i C# 14 pozostaną nierozwiązane.

IronPDF: nowoczesna alternatywa dla TallComponents

IronPDF rozwiązuje podstawowe ograniczenia, które sprawiały, że TallComponents stanowił problem dla nowoczesnych procesów programistycznych:

Funkcja TallComponents IronPDF
Aktualny status sprzedaży Wycofane z nowej sprzedaży Aktywnie rozwijane i sprzedawane
Obsługa konwersji HTML do PDF Nie Tak (HTML5/CSS3 z Chromium)
Wierność odwzorowania Znane błędy i problemy Sprawdzona niezawodność
Instalacja Złożone, ręczne Proste dzięki NuGet
Obsługa klienta Przejście na iText SDK Aktywne wsparcie i społeczność
Przyszła użyteczność Koniec cyklu życia Długoterminowa rentowność

Kontrast jest wyraźny: TallComponents oferuje podejście oparte na XML z innej epoki rozwoju .NET, podczas gdyIronPDFzapewnia renderowanie HTML oparte na Chromium, które jest zgodne z tym, jak programiści tworzą aplikacje dzisiaj.

Szybki start: Migracja z TallComponents do IronPDF

Krok 1: Zastąp pakiety NuGet

Usuń wszystkie pakiety TallComponents ze swojego projektu:

# Remove TallComponents packages
dotnet remove package TallComponents.PDF.Kit
dotnet remove package TallComponents.PDF.Layout
dotnet remove package TallComponents.PDF.Layout.Drawing
# Remove TallComponents packages
dotnet remove package TallComponents.PDF.Kit
dotnet remove package TallComponents.PDF.Layout
dotnet remove package TallComponents.PDF.Layout.Drawing
SHELL

Zainstaluj IronPDF:

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
dotnet add package IronPdf
SHELL

W przypadku specjalistycznych frameworkówIronPDFoferuje dedykowane pakiety rozszerzeń:

Blazor Server:

PM > Install-Package IronPdf.Extensions.Blazor
PM > Install-Package IronPdf.Extensions.Blazor
SHELL

MAUI:

PM > Install-Package IronPdf.Extensions.Maui
PM > Install-Package IronPdf.Extensions.Maui
SHELL

Framework MVC:

PM > Install-Package IronPdf.Extensions.Mvc.Framework
PM > Install-Package IronPdf.Extensions.Mvc.Framework
SHELL

Krok 2: Aktualizacja przestrzeni nazw

Zastąp przestrzenie nazw TallComponents przestrzenią nazw IronPDF:

// Before (TallComponents)
using TallComponents.PDF.Kit;
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Drawing;
using TallComponents.PDF.Layout.Paragraphs;

// After (IronPDF)
using IronPdf;
// Before (TallComponents)
using TallComponents.PDF.Kit;
using TallComponents.PDF.Layout;
using TallComponents.PDF.Layout.Drawing;
using TallComponents.PDF.Layout.Paragraphs;

// After (IronPDF)
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

Krok 3: Zainicjuj swoją licencję

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

TallComponents doIronPDFAPI – dokumentacja API

Zrozumienie, w jaki sposób koncepcje TallComponents odnoszą się do IronPDF, przyspiesza proces migracji:

TallComponents IronPDF Uwagi
Document ChromePdfRenderer Utwórz renderer do generowania plików PDF
Section Automatyczne Sekcje pochodzące ze struktury HTML
TextParagraph Elementy tekstowe HTML Use <p>, <h1>, <div>, etc.
ImageParagraph <img> tag Standardowe obrazy HTML
TableParagraph HTML <table> Standardowe tabele HTML
Font CSS font-family Pełna obsługa czcionek internetowych
document.Write() pdf.SaveAs() Zapisz do pliku
document.Write(stream) pdf.BinaryData or pdf.Stream Wyjście strumienia
Page.Canvas RenderowanieHTML/CSS Nie jest wymagana ręczna manipulacja obszarem roboczym
XmlDocument.Generate() RenderHtmlAsPdf() HTML zastępuje XML
PdfKit.Merger.Merge() PdfDocument.Merge() Łączenie wielu plików PDF
Document.Security pdf.SecuritySettings Konfiguracja zabezpieczeń plików PDF
PageLayout RenderingOptions Ustawienia strony i marginesy

Przykłady migracji kodu

Konwersja HTML do PDF

TallComponents nie obsługuje natywnie konwersji HTML do PDF. Rozwiązanie polega na tworzeniu fragmentów z tekstu, który w rzeczywistości nie renderuje HTML:

Podejście TallComponents:

// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using System.IO;

class Program
{
    static void Main()
    {
        // Create a new document
        using (Document document = new Document())
        {
            string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

            // Create HTML fragment
            Fragment fragment = Fragment.FromText(html);

            // Add to document
            Section section = document.Sections.Add();
            section.Fragments.Add(fragment);

            // Save to file
            using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
            {
                document.Write(fs);
            }
        }
    }
}
// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using System.IO;

class Program
{
    static void Main()
    {
        // Create a new document
        using (Document document = new Document())
        {
            string html = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>";

            // Create HTML fragment
            Fragment fragment = Fragment.FromText(html);

            // Add to document
            Section section = document.Sections.Add();
            section.Fragments.Add(fragment);

            // Save to file
            using (FileStream fs = new FileStream("output.pdf", FileMode.Create))
            {
                document.Write(fs);
            }
        }
    }
}
Imports TallComponents.PDF.Kit
Imports System.IO

Class Program
    Shared Sub Main()
        ' Create a new document
        Using document As New Document()
            Dim html As String = "<html><body><h1>Hello World</h1><p>This is a PDF from HTML.</p></body></html>"

            ' Create HTML fragment
            Dim fragment As Fragment = Fragment.FromText(html)

            ' Add to document
            Dim section As Section = document.Sections.Add()
            section.Fragments.Add(fragment)

            ' Save to file
            Using fs As New FileStream("output.pdf", FileMode.Create)
                document.Write(fs)
            End Using
        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 from HTML string
        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 from HTML string
        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 uses a genuine Chromium engine, providing full HTML5 and CSS3 support. 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ędzy TallComponents a IronPDF.

Podejście TallComponents:

// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using System.IO;

class Program
{
    static void Main()
    {
        // Create output document
        using (Document outputDoc = new Document())
        {
            // Load first PDF
            using (FileStream fs1 = new FileStream("document1.pdf", FileMode.Open))
            using (Document doc1 = new Document(fs1))
            {
                foreach (Page page in doc1.Pages)
                {
                    outputDoc.Pages.Add(page.Clone());
                }
            }

            // Load second PDF
            using (FileStream fs2 = new FileStream("document2.pdf", FileMode.Open))
            using (Document doc2 = new Document(fs2))
            {
                foreach (Page page in doc2.Pages)
                {
                    outputDoc.Pages.Add(page.Clone());
                }
            }

            // Save merged document
            using (FileStream output = new FileStream("merged.pdf", FileMode.Create))
            {
                outputDoc.Write(output);
            }
        }
    }
}
// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using System.IO;

class Program
{
    static void Main()
    {
        // Create output document
        using (Document outputDoc = new Document())
        {
            // Load first PDF
            using (FileStream fs1 = new FileStream("document1.pdf", FileMode.Open))
            using (Document doc1 = new Document(fs1))
            {
                foreach (Page page in doc1.Pages)
                {
                    outputDoc.Pages.Add(page.Clone());
                }
            }

            // Load second PDF
            using (FileStream fs2 = new FileStream("document2.pdf", FileMode.Open))
            using (Document doc2 = new Document(fs2))
            {
                foreach (Page page in doc2.Pages)
                {
                    outputDoc.Pages.Add(page.Clone());
                }
            }

            // Save merged document
            using (FileStream output = new FileStream("merged.pdf", FileMode.Create))
            {
                outputDoc.Write(output);
            }
        }
    }
}
Imports TallComponents.PDF.Kit
Imports System.IO

Class Program
    Shared Sub Main()
        ' Create output document
        Using outputDoc As New Document()
            ' Load first PDF
            Using fs1 As New FileStream("document1.pdf", FileMode.Open)
                Using doc1 As New Document(fs1)
                    For Each page As Page In doc1.Pages
                        outputDoc.Pages.Add(page.Clone())
                    Next
                End Using
            End Using

            ' Load second PDF
            Using fs2 As New FileStream("document2.pdf", FileMode.Open)
                Using doc2 As New Document(fs2)
                    For Each page As Page In doc2.Pages
                        outputDoc.Pages.Add(page.Clone())
                    Next
                End Using
            End Using

            ' Save merged document
            Using output As New FileStream("merged.pdf", FileMode.Create)
                outputDoc.Write(output)
            End Using
        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

Wersja TallComponents wymaga ręcznego przeglądania stron i klonowania.IronPDFreduces this to a single PdfDocument.Merge() call. 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.PDF.Kit
using TallComponents.PDF.Kit;
using TallComponents.PDF.Layout;
using System.IO;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Load existing PDF
        using (FileStream fs = new FileStream("input.pdf", FileMode.Open))
        using (Document document = new Document(fs))
        {
            // Iterate through pages
            foreach (Page page in document.Pages)
            {
                // Create watermark text
                TextShape watermark = new TextShape();
                watermark.Text = "CONFIDENTIAL";
                watermark.Font = new Font("Arial", 60);
                watermark.PenColor = Color.FromArgb(128, 255, 0, 0);
                watermark.X = 200;
                watermark.Y = 400;
                watermark.Rotate = 45;

                // Add to page
                page.Overlay.Shapes.Add(watermark);
            }

            // Save document
            using (FileStream output = new FileStream("watermarked.pdf", FileMode.Create))
            {
                document.Write(output);
            }
        }
    }
}
// NuGet: Install-Package TallComponents.PDF.Kit
using TallComponents.PDF.Kit;
using TallComponents.PDF.Layout;
using System.IO;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Load existing PDF
        using (FileStream fs = new FileStream("input.pdf", FileMode.Open))
        using (Document document = new Document(fs))
        {
            // Iterate through pages
            foreach (Page page in document.Pages)
            {
                // Create watermark text
                TextShape watermark = new TextShape();
                watermark.Text = "CONFIDENTIAL";
                watermark.Font = new Font("Arial", 60);
                watermark.PenColor = Color.FromArgb(128, 255, 0, 0);
                watermark.X = 200;
                watermark.Y = 400;
                watermark.Rotate = 45;

                // Add to page
                page.Overlay.Shapes.Add(watermark);
            }

            // Save document
            using (FileStream output = new FileStream("watermarked.pdf", FileMode.Create))
            {
                document.Write(output);
            }
        }
    }
}
Imports TallComponents.PDF.Kit
Imports TallComponents.PDF.Layout
Imports System.IO
Imports System.Drawing

Class Program
    Shared Sub Main()
        ' Load existing PDF
        Using fs As New FileStream("input.pdf", FileMode.Open)
            Using document As New Document(fs)
                ' Iterate through pages
                For Each page As Page In document.Pages
                    ' Create watermark text
                    Dim watermark As New TextShape()
                    watermark.Text = "CONFIDENTIAL"
                    watermark.Font = New Font("Arial", 60)
                    watermark.PenColor = Color.FromArgb(128, 255, 0, 0)
                    watermark.X = 200
                    watermark.Y = 400
                    watermark.Rotate = 45

                    ' Add to page
                    page.Overlay.Shapes.Add(watermark)
                Next

                ' Save document
                Using output As New FileStream("watermarked.pdf", FileMode.Create)
                    document.Write(output)
                End Using
            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

IronPDF's TextStamper class provides intuitive alignment options and automatic page iteration. 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.Kit;
using TallComponents.PDF.Kit.Signing;

Document document = new Document("unsigned.pdf");

// Load certificate
X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");

// Create signature
SignatureHandler handler = new SignatureHandler(cert);
document.Sign(handler);

document.Write("signed.pdf");
using TallComponents.PDF.Kit;
using TallComponents.PDF.Kit.Signing;

Document document = new Document("unsigned.pdf");

// Load certificate
X509Certificate2 cert = new X509Certificate2("certificate.pfx", "password");

// Create signature
SignatureHandler handler = new SignatureHandler(cert);
document.Sign(handler);

document.Write("signed.pdf");
Imports TallComponents.PDF.Kit
Imports TallComponents.PDF.Kit.Signing
Imports System.Security.Cryptography.X509Certificates

Dim document As New Document("unsigned.pdf")

' Load certificate
Dim cert As New X509Certificate2("certificate.pfx", "password")

' Create signature
Dim handler As New SignatureHandler(cert)
document.Sign(handler)

document.Write("signed.pdf")
$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 APIIronPDFzawiera 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: TallComponents vs IronPDF

Funkcja TallComponents IronPDF
Status ❌ DISCONTINUED ✅ Aktywne
Wsparcie ❌ None ✅ Pełne
Aktualizacje ❌ None ✅ Regular
:Content Creation: HTML do PDF Nie Pełny Chromium
URL do pliku PDF Nie Tak
Obsługa CSS Nie Pełny CSS3
JavaScript Nie Pełna wersja ES2024
Szablony XML Tak Nie jest potrzebne
:PDF Operations: Łączenie plików PDF Tak Tak
Podział plików PDF Tak Tak
Znaki wodne Podręcznik Wbudowane
Nagłówki/stopki Oparty na XML HTML/CSS
:Security: Ochrona hasłem Tak Tak
Podpisy cyfrowe Tak Tak
Szyfrowanie Tak Tak
PDF/A Ograniczone Tak
:Known Issues: Puste strony ⚠️ Documented bug None
Brakujące grafiki ⚠️ Documented bug None
Problemy z czcionkami ⚠️ Documented bug None
:Development: Krzywa uczenia się Wysoki (XML) Niski (HTML)
Dokumentacja Nieaktualne Obszerne
Społeczność None Aktywne

TallComponents Migration Checklist

Zadania przed migracją

Audit your codebase to identify all TallComponents usage:

grep -r "using TallComponents" --include="*.cs" .
grep -r "Document\|Section\|TextParagraph" --include="*.cs" .
grep -r "using TallComponents" --include="*.cs" .
grep -r "Document\|Section\|TextParagraph" --include="*.cs" .
SHELL

Document existing XML templates and layouts—these will be converted to HTML. Identify security settings currently in use, noting password configurations and digital signature implementations.

Zadania związane z aktualizacją kodu

  1. Remove TallComponents packages via NuGet
  2. Install IronPdf package
  3. Convert XML layouts to HTML templates
  4. Replace Section/Paragraph model with HTML elements
  5. Update table code to use standard HTML tables
  6. Convert headers/footers to HTML with HtmlHeaderFooter
  7. Update security settings to use pdf.SecuritySettings
  8. Add license initialization at startup

Headers and Footers Migration

TallComponents uses Oparty na XML headers.IronPDFprovides HTML-based headers with dynamic placeholders:

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

Learn more about headers and footers in IronPDF.

Testing Phase

  1. Compare visual output between TallComponents andIronPDFversions
  2. Verify blank page issues are resolved
  3. Test all document templates
  4. Validate PDF merging functionality
  5. Test digital signatures
  6. Confirm security settings apply correctly

Given that TallComponents is discontinued with no support, the migration should proceed urgently:

Week 1: Audit codebase and identify all TallComponents usage
Week 2: Convert document templates from XML to HTML
Week 3: Update security, merging, and signing code
Week 4: Testing and production deployment

Delaying means running unsupported software with documented rendering bugs—a risk no professional development team should accept heading into 2026.

Key Migration Benefits

Moving from TallComponents toIronPDFprovides immediate advantages:

Modern Chromium Rendering Engine: Full CSS andJavaScriptsupport ensures PDFs render exactly as expected, eliminating the blank page and missing graphics bugs documented in TallComponents.

Active Maintenance and Security Updates:IronPDFreceives regular updates, ensuring compatibility with current and future .NET versions including .NET 10.

Better .NET Integration: Native async/await support and modern API patterns align with contemporary C# development practices.

Comprehensive Documentation: Obszerne tutorials and API references support rapid implementation.

Curtis Chau
Autor tekstów technicznych

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

Czytaj więcej

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie