IRONSOFTWAREHOME
视频

如何在 Docker 中使用 IronPDF 引擎 | IronPDF

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

2025年5月27日,Apryse 收购 TallComponents。 TallPDF.NET 和 PDFKit.NET 的新许可证不再提供,Apryse 将新买家引导至 iText SDK(同样由 Apryse 拥有)。 现有客户继续获得支持,但引擎仅用于维护。 对于当前在TallComponents上运行的团队,规划迁移现在可避免以后被迫转换。

本指南为从TallComponents迁移到IronPDF提供了路径,包括适用于计划过渡的 .NET 开发者的分步说明、API 映射和代码示例。

为什么计划迁移 TallComponents

TallComponents(成立于 2001 年)推出了两个主要的 .NET PDF 产品:PDFKit.NET 用于加载和操作 PDFs,以及 TallPDF.NET 用于以布局为中心的文档生成。 随着 Apryse 收购,新许可证销售已经结束,这改变了依赖该库的团队的规划范围。

今天TallComponents的关键限制

关闭新许可证: Apryse 的TallComponents页面表示不再提供新许可证,并指引新买家使用 iText SDK。 现有许可证持有者将继续获得支持。

仅限XHTML的HTML管道: TallPDF.NET 提供一个 XhtmlParagraph 类,可以解析 XHTML 1.0 Strict / XHTML 1.1 + CSS 2.1。PDFKit.NET 本身没有HTML管道。现代的HTML5 + CSS3 + JavaScript内容不能可靠渲染 — 无内置无头浏览器引擎。

冻结平台目标: TallComponents.PDFKit5 目标为.NET Standard 2.0; 旧版的 TallComponents.PDFKit (4.x) 针对.NET Framework 2.0。尚未发布.NET 8/9 TFM。

仅维护路线图: 随着 Apryse 的开发精力集中在 Apryse SDK 和 iText 上,TallComponents 品牌的包只收到维护更新,没有新的功能路线图。

IronPDF:现代TallComponents的替代品

IronPDF 解决了当前 .NET 堆栈中影响TallComponents用户的核心缺口:

特征TallComponentsIronPDF
当前销售状态关闭新许可证 (Apryse 于 2025-05-27 收购)积极出售
HTML 转 PDF 支持XHTML 1.0/1.1 +CSS 2.1via XhtmlParagraph (TallPDF.NET)是(使用 Chromium 的 HTML5/CSS3)
HTML 中的 JavaScript完整的 ES2024
安装NuGet (TallComponents.PDFKit5, TallComponents.TallPDF5)NuGet (IronPdf)
客户支持仅限现有客户; 新买家路由到 iText积极支持和社区
未来投资仅维护长期路线图

TallComponents 使用一个 XML/以布局为主导的模型,植根于 .NET 文档生成的早期时代,而IronPDF提供了基于 Chromium 的HTML渲染,符合目前团队构建前端应用程序的方法。

快速入门:TallComponents 到IronPDF的迁移

步骤 1:替换 NuGet 软件包

移除您的项目中引用的TallComponents包。 在 nuget.org 上的实际包ID是 TallComponents.PDFKit5 (或 TallComponents.PDFKit 对于 4.x) 和 TallComponents.TallPDF5 / TallPDF6:

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

安装 IronPDF:

dotnet add package IronPdf

对于专业框架,IronPDF 提供专用扩展包:

Blazor 服务器:

PM > Install-Package IronPdf.Extensions.Blazor

MAUI:

PM > Install-Package IronPdf.Extensions.Maui

MVC框架:

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

步骤 2:更新命名空间

用IronPDF命名空间替换TallComponents命名空间:

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

步骤 3:初始化许可证

在应用程序启动时添加许可证初始化:

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

##TallComponents到IronPDFAPI 映射参考

了解TallComponents概念如何映射到IronPDF可以加速迁移过程:

TallComponentsIronPDF备注
Document (TallPDF.NET: 布局)ChromePdfRenderer创建用于生成 PDF 的呈现器
Document (PDFKit.NET: 操作)PdfDocument加载/编辑现有的 PDFs
Section自动翻译源自HTML结构的章节
TextParagraphHTML 文本元素使用 <p>, <h1>, <div> 等。
ImageParagraph<img> 标签标准HTML图像
TableParagraphHTML <table>标准HTML表格
XhtmlParagraph (XHTML 1.x + CSS 2.1)RenderHtmlAsPdf() (HTML5/CSS3 via Chromium)现代HTML可以工作
FontCSS font-family支持的网络字体
document.Write(...)pdf.SaveAs() / pdf.BinaryData文件或 byte[] 输出
page.Overlay.Add(shape)pdf.ApplyStamp(stamper)水印 / 覆盖
outputDoc.Pages.Add(page.Clone())PdfDocument.Merge(...) / pdf.AppendPdf(...)合并多个 PDF
Document.Security = new PasswordSecurity { ... }pdf.SecuritySettingsPDF 安全配置
PageLayoutRenderingOptions页面设置和页边距

代码迁移示例

将HTML转换为PDF

TallComponents 通过 TallPDF.NET 的 XhtmlParagraph 处理HTML,仅解析 XHTML 1.0/1.1 + CSS 2.1。 现代 HTML5、CSS3、弹性盒、网格和JavaScript驱动的内容不在该语法之列:

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#

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 的 ChromePdfRenderer 使用真正的 Chromium 引擎,提供完整的 HTML5 和 CSS3 支持。 这意味着您的 PDF 文件将完全呈现在现代浏览器中。 了解更多信息,请参阅 HTML 转 PDF 教程

合并多个 PDF 文件

PDF 合并演示了TallComponents和IronPDF之间的语言差异。

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

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

TallComponents 版本需要手动进行页面迭代和克隆。IronPDF将其简化为单个 PdfDocument.Merge() 调用。 有关高级合并方案,请参阅 IronPDF合并文档

添加水印

PDF 水印揭示了开发人员体验的另一个显著差异。

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

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

IronPDF 的 TextStamper 类提供直观的对齐选项和自动页面迭代。 印章和水印指南涵盖了其他自定义选项。

数字签名

文档签名对企业应用至关重要。

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

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

IronPDF 的签名 API 包括联系信息、位置和签名原因的附加元数据属性--这对于审计跟踪非常重要。 探索数字签名文档,了解完整的实施细节。

功能比较:TallComponents 与IronPDF的比较

特征TallComponentsIronPDF
状态关闭新许可证 (Apryse 于 2025-05-27 收购)活跃
支持仅限现有客户满的
更新仅维护定期功能发布
内容创建
HTML 至 PDFXHTML 1.0/1.1 +CSS 2.1(XhtmlParagraph)通过 Chromium 提供完整的 HTML5/CSS3 支持
URL 至 PDF是的,针对XHTML URL (XhtmlParagraph.Path)
CSS 支持CSS 2.1完整的 CSS3
JavaScript完整的 ES2024
XML / 布局 DOM 模板是的 (TallPDF.NET)不需要 (HTML)
PDF操作
合并 PDF是 (Pages.Add(page.Clone()))是 (PdfDocument.Merge)
拆分 PDF
水印page.Overlay.Add(TextShape)pdf.ApplyStamp(...)
页眉/页脚布局 DOMHTML/CSS
安全性
密码保护是 (PasswordSecurity)
数字签名是 (SignatureField.Sign)
加密RC4 / AES-128 / AES-256AES-128 / AES-256
PDF/APDF/A-1, PDF/A-2, PDF/A-3
平台
目标框架PDFKit5:.NET Standard 2.0; PDFKit (4.x): .NET Framework 2.0.NET Framework 4.6.2+, .NET 6/7/8/9
开发
学习曲线XML / 布局 DOMHTML
文档冻结于收购时; 新文档转向 Apryse / iText已维护
社区安静(没有新销售)活跃

##TallComponents迁移清单

迁移前任务

审核您的代码库,确定所有TallComponents的使用情况:

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

记录现有的 XML/布局模板——这些将被转换为 HTML。 确定当前使用的安全设置,注意密码配置和数字签名实施。

代码更新任务

1.通过 NuGet 删除TallComponents软件包 2. 安装IronPDF包 3. 将 XHTML / 布局 DOM 模板转为 HTML5 4.用HTML元素替换章节/段落模型 5.更新表格代码以使用标准HTML表格 6. 将页眉/页脚转换为HTML,使用 HtmlHeaderFooter 7. 更新安全设置以使用 pdf.SecuritySettings 8.在启动时添加许可证初始化

页眉和页脚迁移

TallPDF.NET 使用布局 DOM (Section.Header / Section.Footer) 进行页眉。IronPDF提供基于HTML的标题和动态占位符:

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

了解有关 IronPDF 中页眉和页脚的更多信息。

测试阶段

1.比较TallComponents和IronPDF版本的可视化输出结果 2. 测试所有文档模板 3. 验证 PDF 合并功能 4. 测试数字签名 5. 确认应用正确的安全设置

建议迁移时间表

由于TallComponents关闭新许可证且仅提供维护支持,请按您自己的节奏规划迁移,但不要拖延:

**第一周:**审核代码库并识别所有TallComponents的使用情况
第 2 周: 将 XHTML / 布局模板转换为 HTML5 **第三周:**更新安全性、合并和签名代码
**第 4 周:**测试和生产部署

一个堆栈在TallComponents上停留的时间越长,它就越偏离当前的 .NET 目标和当前的 HTML。

请注意: Apryse, PDFKit, Tall Components 和 iText为各自所有者的注册商标。 本网站与Apryse, PDFKit, PDFTron,TallComponents或 iText Group 无关联、未获得其认可或赞助。所有产品名称、标识和品牌均为其各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。
Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户