IRONSOFTWAREHOME
FILMY

Jak korzystać z silnika IronPDF w Dockerze | IronPDF

Curtis Chau
Curtis Chau
Updated: 19 lipca 2026

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:

FunkcjaTallComponentsIronPDF
Aktualny status sprzedażyZamknięte na nowe licencje (Apryse przejęty 2025-05-27)Sprzedawane aktywnie
Wsparcie HTML-do-PDFXHTML 1.0/1.1 +CSS 2.1via XhtmlParagraph (TallPDF.NET)Tak (HTML5/CSS3 z Chromium)
JavaScriptwHTMLNiePełna wersja ES2024
InstalacjaNuGet (TallComponents.PDFKit5, TallComponents.TallPDF5)NuGet (IronPdf)
Wsparcie klientaTylko dla istniejących klientów; nowi nabywcy kierowani do iTextAktywne wsparcie i społeczność
Przyszłe inwestycjeTylko utrzymanieDł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:

# RemoveTallComponentspackages (whichever your project uses)
dotnet remove package TallComponents.PDFKit5
dotnet remove package TallComponents.TallPDF5
dotnet remove package TallComponents.PDFRasterizer4
SHELL

Zainstaluj IronPDF:

dotnet add package IronPdf

W przypadku specjalistycznych frameworków IronPDF oferuje dedykowane pakiety rozszerzeń:

Blazor Server:

PM > Install-Package IronPdf.Extensions.Blazor

MAUI:

PM > Install-Package IronPdf.Extensions.Maui

Framework MVC:

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

Krok 2: Aktualizacja przestrzeni nazw

Zastąp przestrzenie nazwTallComponentsprzestrzenią nazw 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;

Krok 3: Zainicjuj swoją licencję

Dodaj inicjalizację licencji podczas uruchamiania aplikacji:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

##TallComponentsdo IronPDF API – dokumentacja API

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

TallComponentsIronPDFUwagi
Document (TallPDF.NET: układ)ChromePdfRendererUtwórz renderer do generowania plików PDF
Document (PDFKit.NET: manipulacja)PdfDocumentŁadowanie/edycja istniejących PDF
SectionAutomatyczneSekcje pochodzące ze strukturyHTML
TextParagraphElementy tekstoweHTMLUżyj <p>, <h1>, <div> itp.
ImageParagraphTag <img>Standardowe obrazyHTML
TableParagraphHTML<table>Standardowe tabeleHTML
XhtmlParagraph (XHTML 1.x + CSS 2.1)RenderHtmlAsPdf() (HTML5/CSS3 przez Chromium)NowoczesnyHTMLdziała
FontCSS font-familyObsługiwane czcionki webowe
document.Write(...)pdf.SaveAs() / pdf.BinaryDataPlik 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.SecuritySettingsKonfiguracja zabezpieczeń plików PDF
PageLayoutRenderingOptionsUstawienia 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);
        }
    }
}
C#

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");
    }
}
C#

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);
        }
    }
}

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");
    }
}

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);
            }
        }
    }
}

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");
    }
}

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);
    }
}

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");

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

FunkcjaTallComponentsIronPDF
StatusZamknięte na nowe licencje (Apryse przejęty 2025-05-27)Aktywne
WsparcieTylko dla obecnych klientówPełna
AktualizacjeTylko utrzymanieRegularne wydania funkcji
Tworzenie treści
HTMLdo PDFXHTML 1.0/1.1 +CSS 2.1(XhtmlParagraph)Pełne HTML5/CSS3 przez Chromium
URL do pliku PDFTak dla URL-ów XHTML (XhtmlParagraph.Path)Tak
Obsługa CSSCSS 2.1Pełny CSS3
JavaScriptNiePełna wersja ES2024
XML / Szablony DOM układuTak (TallPDF.NET)Niepotrzebne (HTML)
Operacje na plikach PDF
Łączenie plików PDFTak (Pages.Add(page.Clone()))Tak (PdfDocument.Merge)
Podział plików PDFTakTak
Znaki wodnepage.Overlay.Add(TextShape)pdf.ApplyStamp(...)
Nagłówki/stopkiUkład DOMHTML/CSS
Bezpieczeństwo
Ochrona hasłemTak (PasswordSecurity)Tak
Podpisy cyfroweTak (SignatureField.Sign)Tak
SzyfrowanieRC4 / AES-128 / AES-256AES-128 / AES-256
PDF/APDF/A-1, PDF/A-2, PDF/A-3Tak
Platforma
Docelowe FrameworkiPDFKit5: .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 DOMHTML
DokumentacjaZamrożony w momencie przejęcia; nowe dokumenty skierowane do Apryse / iTextUtrzymywany
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:

grep -r "using TallComponents" --include="*.cs" .
grep -rE "XhtmlParagraph|TextParagraph|PasswordSecurity|page\.Overlay" --include="*.cs" .
SHELL

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

  1. Usuń pakietyTallComponentsprzez NuGet
  2. Zainstaluj pakiet IronPDF
  3. Przekształć szablony XHTML / DOM ułożenia na HTML5
  4. Zastąp model sekcji/akapitów elementami HTML
  5. Zaktualizuj kod tabel do używania standardowych tabel HTML
  6. Konwertowanie nagłówków/stopki naHTMLza pomocą HtmlHeaderFooter
  7. Aktualizuj ustawienia zabezpieczeń, aby używać pdf.SecuritySettings
  8. 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:

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
};

Dowiedz się więcej o nagłówkach i stopkach w IronPDF.

Faza testów

  1. Porównaj wizualne wyjście między wersjamiTallComponentsi IronPDF
  2. Przetestuj wszystkie szablony dokumentów
  3. Zwaliduj funkcjonalność łączenia PDF
  4. Przetestuj podpisy cyfrowe
  5. Potwierdź poprawność zastosowania ustawień zabezpieczeń

Zalecany harmonogram migracji

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
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ęczników.

...
Czytaj więcej

Powiązane artykuły

Key in blue circle

Uzyskaj natychmiast swój darmowy 30-dniowy Klucz Testowy.

Your trial license will be sent to your email address

Brak ograniczeń. 100% dostępności. Bez karty kredytowej.

bullet_checkedNie wymaga karty kredytowej ani tworzenia kontaBrak ograniczeń. 100% dostępności. Bez karty kredytowej.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Zarezerwuj swoje darmowe Demo na żywo
Booking Badge

Zaufane przez miliony inżynierów na całym świecie

Logotypy klientów Iron Software
Otrzymaj swoje Konsultacja Bez Zobowiązań
Wypełnij poniższy formularz lub wyślij e-mail na sales@ironsoftware.com
Twoje dane zawsze będą utrzymywane w tajemnicy.
Zaufane przez miliony inżynierów na całym świecie
Logotypy klientów Iron Software
Otrzymaj swój darmowy Klucz Próbny na 30 dni natychmiast.
Nie wymaga karty kredytowej ani tworzenia konta