跳過到頁腳內容
遷移指南

如何在 C# 中從 iText 轉移到 IronPDF

從 iText 遷移到IronPDF會將您的.NET PDF 工作流程從需要手動建立 TableCell 物件的程式設計 API 轉變為具有完整 CSS3 和JavaScript支援的現代 HTML 優先方法。 本指南提供了一個全面的、逐步的遷移路徑,消除了 AGPL 許可問題,也無需專業的.NET開發人員單獨安裝 pdfHTML 插件。

為什麼要從 iText 遷移到IronPDF

AGPL許可陷阱

iText 為商業應用帶來了嚴重的法律和商業風險,而許多開發團隊發現這些風險時已經為時過晚:

  1. AGPL 病毒式授權:如果您在 Web 應用程式中使用 iText,AGPL 要求您開源您的整個應用程式—不僅僅是 PDF 程式碼,而是您的整個程式碼庫。 對於大多數商業軟體來說,這是行不通的。

2.沒有永久許可: iText 取消了永久許可,強制每年續訂訂閱,這增加了總擁有成本。

  1. pdfHTML 附加元件費用: HTML 轉 PDF 功能需要 pdfHTML 附加元件,該元件需在基本授權之外另行購買。

4.複雜的許可審計:企業部署面臨許可的複雜性和審計風險,這可能會延誤專案並造成法律風險。

5.僅限程式 API: iText 需要使用 Cell 物件手動建立底層 PDF-對於複雜的佈局來說,這既繁瑣又容易出錯。

6.現代 Web 渲染有限:即使使用 pdfHTML,複雜的 CSS 和JavaScript內容也需要付出大量額外努力。

iText 與IronPDF對比

特徵 iText 7 / iTextSharp IronPDF
執照 AGPL(病毒式傳播)或昂貴的訂閱 商業永續選擇權
HTML 轉 PDF 獨立的pdfHTML插件 內建 Chromium 渲染器
CSS 支援 基礎 CSS 完整的 CSS3、Flexbox 和 Grid 架構
JavaScript 沒有任何 全面執行
API範式 程序化(段落、表格、單元格) HTML優先,CSS優先
學習曲線 陡峭(PDF座標系) 對網路開發人員友好
開源風險 必須開源的網路應用程式 無病毒感染要求
定價模式 僅限訂閱用戶 永久或訂閱

對於計劃在 2025 年和 2026 年採用.NET 10 和 C# 14 的團隊, IronPDF憑藉其 HTML 優先的方法,利用團隊已有的 Web 開發技能,提供了一個面向未來的基礎。


遷移複雜度評估

各功能預計工作量

特徵 遷移複雜性
HTML 轉 PDF 非常低
合併PDF 低的
文字和圖片 低的
表格 中等的
頁首/頁尾 中等的
安全/加密 低的

範式轉移

iText此次遷移的根本轉變是從程式化PDF建置轉向HTML優先渲染:

iText:PdfWriter → PdfDocument → Document → Add(Paragraph) → Add(Table)
IronPDF:ChromePdfRenderer → RenderHtmlAsPdf(htmlString) → SaveAs()

這個典範轉移令人耳目一新:你無需學習 iText 的物件模型,而是可以使用 Web 開發人員已經掌握的 HTML 和 CSS 技能。


開始之前

先決條件

  1. .NET環境: .NET Framework 4.6.2+ 或.NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet存取權限:能夠安裝NuGet套件
  3. IronPDF許可證:請從IronPDF取得您的許可證密鑰。

NuGet套件變更

# Remove iText packages
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp

# Install IronPDF
dotnet add package IronPdf
# Remove iText packages
dotnet remove package itext7
dotnet remove package itext7.pdfhtml
dotnet remove package itextsharp

# Install IronPDF
dotnet add package IronPdf
SHELL

許可證配置

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

識別 iText 使用情況

# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .
# Find all iText references
grep -r "using iText\|using iTextSharp" --include="*.cs" .
grep -r "PdfWriter\|PdfDocument\|Document\|Paragraph\|Table\|Cell" --include="*.cs" .
grep -r "HtmlConverter\|ConverterProperties" --include="*.cs" .
SHELL

完整 API 參考

類別映射

iText 7 課 iTextSharp 類 IronPDF當量
PdfWriter PdfWriter ChromePdfRenderer
PdfDocument Document PdfDocument
Document Document ChromePdfRenderer.RenderHtmlAsPdf()
Paragraph Paragraph HTML <p>, <h1> 等。
Table PdfPTable HTML <table>
Cell PdfPCell HTML <td>, <th>
Image Image HTML <img>
PdfReader PdfReader PdfDocument.FromFile()
PdfMerger 不適用 PdfDocument.Merge()

命名空間映射

iText 7 命名空間 IronPDF當量
iText.Kernel.Pdf IronPdf
iText.Layout IronPdf
iText.Layout.Element 使用 HTML 元素
iText.Html2Pdf IronPdf(內建)
iText.IO.Image 使用 HTML <img>
iText.Kernel.Utils IronPdf

程式碼遷移範例

範例 1:HTML 轉 PDF

之前(iText 7):

// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
        string outputPath = "output.pdf";

        using (FileStream fs = new FileStream(outputPath, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, fs);
        }
    }
}
// NuGet: Install-Package itext7
using iText.Html2pdf;
using System.IO;

class Program
{
    static void Main()
    {
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";
        string outputPath = "output.pdf";

        using (FileStream fs = new FileStream(outputPath, FileMode.Create))
        {
            HtmlConverter.ConvertToPdf(html, fs);
        }
    }
}
Imports iText.Html2pdf
Imports System.IO

Class Program
    Shared Sub Main()
        Dim html As String = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"
        Dim outputPath As String = "output.pdf"

        Using fs As FileStream = New FileStream(outputPath, FileMode.Create)
            HtmlConverter.ConvertToPdf(html, fs)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

之後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html As String = "<h1>Hello World</h1><p>This is a PDF from HTML.</p>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

iText 方法需要單獨的 iText.Html2pdf 套件(pdfHTML 插件,單獨出售),建立一個 FileStream,並將所有內容包裝在 using 語句中以便正確處置。 HtmlConverter.ConvertToPdf() 方法直接寫入流。

IronPDF 的方法更簡潔:建立一個 ChromePdfRenderer,使用你的 HTML 字串呼叫 RenderHtmlAsPdf(),然後對產生的 PdfDocument 呼叫 SaveAs()。 沒有單獨的軟體包,沒有串流管理,Chromium 渲染引擎提供卓越的 CSS3 和JavaScript支援。 有關其他渲染選項,請參閱HTML 轉 PDF 文件

範例 2:合併多個 PDF 文件

之前(iText 7):

// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;

class Program
{
    static void Main()
    {
        string outputPath = "merged.pdf";
        string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdfDoc = new PdfDocument(writer))
        {
            PdfMerger merger = new PdfMerger(pdfDoc);

            foreach (string file in inputFiles)
            {
                using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
                {
                    merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
                }
            }
        }
    }
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Kernel.Utils;
using System.IO;

class Program
{
    static void Main()
    {
        string outputPath = "merged.pdf";
        string[] inputFiles = { "document1.pdf", "document2.pdf", "document3.pdf" };

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdfDoc = new PdfDocument(writer))
        {
            PdfMerger merger = new PdfMerger(pdfDoc);

            foreach (string file in inputFiles)
            {
                using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
                {
                    merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
                }
            }
        }
    }
}
Imports iText.Kernel.Pdf
Imports iText.Kernel.Utils
Imports System.IO

Class Program
    Shared Sub Main()
        Dim outputPath As String = "merged.pdf"
        Dim inputFiles As String() = {"document1.pdf", "document2.pdf", "document3.pdf"}

        Using writer As New PdfWriter(outputPath)
            Using pdfDoc As New PdfDocument(writer)
                Dim merger As New PdfMerger(pdfDoc)

                For Each file As String In inputFiles
                    Using sourcePdf As New PdfDocument(New PdfReader(file))
                        merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
                    End Using
                Next
            End Using
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

之後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfDocuments = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        };

        var merged = PdfDocument.Merge(pdfDocuments);
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        var pdfDocuments = new List<PdfDocument>
        {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        };

        var merged = PdfDocument.Merge(pdfDocuments);
        merged.SaveAs("merged.pdf");
    }
}
Imports IronPdf
Imports System.Collections.Generic

Class Program
    Shared Sub Main()
        Dim pdfDocuments As New List(Of PdfDocument) From {
            PdfDocument.FromFile("document1.pdf"),
            PdfDocument.FromFile("document2.pdf"),
            PdfDocument.FromFile("document3.pdf")
        }

        Dim merged = PdfDocument.Merge(pdfDocuments)
        merged.SaveAs("merged.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

iText 合併作業需要大量的樣板程式碼:建立一個 PdfWriter 用於輸出,將其包裝在 PdfDocument 中,建立一個 PdfMerger,然後遍歷原始文件,對每個 @@--CODE-1707--@@ using 語句。 您也必須使用 merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages()) 指定頁面範圍。

IronPDF將此程序簡化為三個步驟:使用 PdfDocument.FromFile() 載入文檔,使用列表呼叫靜態 PdfDocument.Merge() 方法,然後儲存。 整個合併操作變得易於閱讀和維護。 了解更多關於合併和拆分PDF的資訊

範例 3:建立包含文字和圖像的 PDF

之前(iText 7):

// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;

class Program
{
    static void Main()
    {
        string outputPath = "document.pdf";

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdf = new PdfDocument(writer))
        using (Document document = new Document(pdf))
        {
            document.Add(new Paragraph("Sample PDF Document"));
            document.Add(new Paragraph("This document contains text and an image."));

            Image img = new Image(ImageDataFactory.Create("image.jpg"));
            img.SetWidth(200);
            document.Add(img);
        }
    }
}
// NuGet: Install-Package itext7
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.IO.Image;

class Program
{
    static void Main()
    {
        string outputPath = "document.pdf";

        using (PdfWriter writer = new PdfWriter(outputPath))
        using (PdfDocument pdf = new PdfDocument(writer))
        using (Document document = new Document(pdf))
        {
            document.Add(new Paragraph("Sample PDF Document"));
            document.Add(new Paragraph("This document contains text and an image."));

            Image img = new Image(ImageDataFactory.Create("image.jpg"));
            img.SetWidth(200);
            document.Add(img);
        }
    }
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.IO.Image

Class Program
    Shared Sub Main()
        Dim outputPath As String = "document.pdf"

        Using writer As New PdfWriter(outputPath),
              pdf As New PdfDocument(writer),
              document As New Document(pdf)

            document.Add(New Paragraph("Sample PDF Document"))
            document.Add(New Paragraph("This document contains text and an image."))

            Dim img As New Image(ImageDataFactory.Create("image.jpg"))
            img.SetWidth(200)
            document.Add(img)
        End Using
    End Sub
End Class
$vbLabelText   $csharpLabel

之後(IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "
            <h1>Sample PDF Document</h1>
            <p>This document contains text and an image.</p>
            <img src='image.jpg' width='200' />"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("document.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

這個例子最清楚地說明了典範轉移。 iText 需要:

  • 三重嵌套的 using 語句(Document)
  • 為每個文字元素建立 Paragraph 對象,並使用 new Paragraph()
  • 使用 ImageDataFactory.Create() 載入圖片
  • 建立一個 Image 物件並分別呼叫 SetWidth()
  • 對每個元素呼叫 document.Add()

IronPDF使用標準 HTML:標題使用 <h1>,段落使用 <p>,圖像使用 <img>,並附有 width 屬性。 Web 開發人員可以立即利用他們現有的技能,設計師可以使用他們已經熟悉的 CSS 來設定文件樣式。


關鍵遷移說明

範式轉移:從程式化到 HTML 優先

此次 iText 遷移中最顯著的變化是概念上的。 iText 可以透過程式設計方式產生 PDF 檔案:

// iText approach
document.Add(new Paragraph("Title")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(24)
    .SetBold());

var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines
// iText approach
document.Add(new Paragraph("Title")
    .SetTextAlignment(TextAlignment.CENTER)
    .SetFontSize(24)
    .SetBold());

var table = new Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth();
table.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
table.AddHeaderCell(new Cell().Add(new Paragraph("Name")));
// ... many more lines
' iText approach
document.Add(New Paragraph("Title") _
    .SetTextAlignment(TextAlignment.CENTER) _
    .SetFontSize(24) _
    .SetBold())

Dim table = New Table(UnitValue.CreatePercentArray(3)).UseAllAvailableWidth()
table.AddHeaderCell(New Cell().Add(New Paragraph("ID")))
table.AddHeaderCell(New Cell().Add(New Paragraph("Name")))
' ... many more lines
$vbLabelText   $csharpLabel

IronPDF使用 HTML 和 CSS:

// IronPDF approach
string html = @"
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>";

var pdf = renderer.RenderHtmlAsPdf(html);
// IronPDF approach
string html = @"
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>";

var pdf = renderer.RenderHtmlAsPdf(html);
' IronPDF approach
Dim html As String = "
    <style>
        h1 { text-align: center; font-size: 24px; font-weight: bold; }
        table { width: 100%; border-collapse: collapse; }
        th { background-color: #4CAF50; color: white; padding: 8px; }
    </style>
    <h1>Title</h1>
    <table>
        <tr><th>ID</th><th>Name</th></tr>
    </table>"

Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

AGPL授權已取消

iText 的 AGPL 授權要求您將整個 Web 應用程式開源,或購買昂貴的商業授權。 IronPDF 的商業許可允許在專有軟體中部署,而無需病毒式許可要求。

無需安裝pdfHTML插件

iText 需要單獨購買 pdfHTML 外掛程式才能將 HTML 轉換為 PDF。 IronPDF的基礎軟體包中包含了完整的基於 Chromium 的 HTML 渲染功能。

方法替換模式

iText 圖案 IronPDF替代方案
SetTextAlignment(TextAlignment.CENTER) CSS text-align: center
SetFontSize(24) CSS font-size: 24px
SetBold() CSS font-weight: bold
new Table(3) HTML <table>
AddHeaderCell(new Cell().Add(new Paragraph())) HTML <th>
AddCell(new Cell().Add(new Paragraph())) HTML <td>

故障排除

問題 1:PdfWriter/文件模式

問題:程式碼使用了 PdfWriterPdfDocumentDocument 嵌套模式。

解:替換為 ChromePdfRenderer:

// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))

// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
// Delete this iText pattern:
// using (var writer = new PdfWriter(outputPath))
// using (var pdfDoc = new PdfDocument(writer))
// using (var document = new Document(pdfDoc))

// Replace with:
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
$vbLabelText   $csharpLabel

問題 2:未找到 HtmlConverter

問題:程式碼使用了 iText.Html2pdf.HtmlConverter,這需要 pdfHTML 外掛程式。

解決方案:使用 IronPDF 內建的 HTML 渲染功能:

// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);

// IronPDF (built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
// iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream);

// IronPDF (built-in)
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(outputPath);
' iText (requires pdfHTML add-on)
HtmlConverter.ConvertToPdf(html, fileStream)

' IronPDF (built-in)
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs(outputPath)
$vbLabelText   $csharpLabel

問題 3:PdfMerger 的複雜性

問題: iText 的 PdfMerger 需要嵌套讀取器和頁面範圍規格。

解決方案:使用 IronPDF 的靜態合併方法:

// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
//     PdfMerger merger = new PdfMerger(pdfDoc);
//     foreach (string file in inputFiles)
//     {
//         using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
//         {
//             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
//         }
//     }
// }

// IronPDF (simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
// iText merger pattern (delete this)
// using (PdfDocument pdfDoc = new PdfDocument(writer))
// {
//     PdfMerger merger = new PdfMerger(pdfDoc);
//     foreach (string file in inputFiles)
//     {
//         using (PdfDocument sourcePdf = new PdfDocument(new PdfReader(file)))
//         {
//             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages());
//         }
//     }
// }

// IronPDF (simple)
var merged = PdfDocument.Merge(pdfDocuments);
merged.SaveAs("merged.pdf");
' iText merger pattern (delete this)
' Using pdfDoc As New PdfDocument(writer)
'     Dim merger As New PdfMerger(pdfDoc)
'     For Each file As String In inputFiles
'         Using sourcePdf As New PdfDocument(New PdfReader(file))
'             merger.Merge(sourcePdf, 1, sourcePdf.GetNumberOfPages())
'         End Using
'     Next
' End Using

' IronPDF (simple)
Dim merged = PdfDocument.Merge(pdfDocuments)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

遷移清單

遷移前

  • 清點程式碼庫中所有 iText API 呼叫
  • 識別程序化 PDF 建置模式(段落、表格、儲存格)
  • 文件 HtmlConverter 用法(pdfHTML 外掛程式)
  • 評估AGPL合規風險
  • 取得IronPDF許可證密鑰

程式碼遷移

  • 刪除 iText NuGet套件:dotnet remove package itext7
  • 安裝IronPDF NuGet套件:dotnet add package IronPdf
  • 更新命名空間導入(using iText.*using IronPdf)
  • Document 模式替換為 ChromePdfRendererCell 轉換為 HTML 元素
  • HtmlConverter.ConvertToPdf() 替換為 RenderHtmlAsPdf()
  • 更新合併作業至 PdfDocument.Merge()
  • 新增啟動時許可證金鑰初始化功能

測試

  • 測試所有 PDF 生成路徑
  • 驗證視覺輸出是否符合預期
  • 使用複雜的 HTML/CSS 內容進行測試
  • 基準性能

移民後

  • 刪除 iText 許可證文件和引用
  • 更新文檔
  • 取消 iText 訂閱(如適用)
  • 歸檔舊版 iText 程式碼

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我