跳過到頁腳內容
遷移指南

如何在 C# 中從 PDF Duo 遷移到 IronPDF

從PDF Duo .NET遷移到 IronPDF,可將您的 .NET PDF 工作流程從晦澀不明、記錄不詳且維護狀態不明確的函式庫,轉換為穩定、記錄詳盡且積極維護的解決方案。 本指南提供全面、逐步的遷移路徑,可消除與廢棄程式庫相關的風險,同時獲得 PDF Duo 無法提供的進階功能。

為什麼要從 PDF Duo 轉移到 IronPDF?

PDF Duo 的風險問題

PDF Duo .NET 是 .NET 生態系統中一個難以捉摸、較少為人所知的函式庫。 雖然它可能對追求簡單的開發人員很有吸引力,但資料庫的晦澀不明對生產應用程式而言卻是重大的挑戰:

1.來源不明:開發者身分不明,沒有可驗證的公司支援。 沒有可見的 GitHub 儲存庫或原始碼、有限的 NuGet 下載統計,以及不確定的授權條款。

2.缺少文件:幾乎不可能找到可靠的資訊。 目前沒有官方 API 參考資料、社群範例稀少,也沒有官方教學或指南。 任何利用 PDF Duo 的嘗試都會因為可靠文件的稀少而受阻。

3.已棄用或不活躍狀態:有明顯的疏於管理跡象,更新斷斷續續或根本沒有更新。 支援論壇顯示的是 2019 年的文章,沒有任何回應。 對於重要的專案而言,非常真實的棄用風險使其可行性大打折扣。

4.功能有限:僅提供基本功能-簡單的 HTML 轉 PDF 和基本的 PDF 合併,沒有表單、安全或浮水印等進階功能。

5.未知渲染引擎:對底層工作原理一無所知。 CSS/JavaScript 支援未知,呈現品質無法預測,現代網路功能支援也不確定。

6.支援風險:設備損壞時沒有補救措施。 沒有專業支援、沒有社群協助,完全有被遺棄的風險。

PDF Duo 與IronPDF的比較

範疇 PDF Duo .NET IronPDF
維護 未知/無活動 積極、定期更新
文件 稀疏/遺漏 全面性
支援 專業的支援團隊
社區 ~0 位使用者 41M+ NuGet 下載次數
渲染 未知引擎 現代 Chromium
特點 基本的 全功能
穩定性 未知 經過生產驗證
授權 不清楚 透明

對於計劃在 2025 年和 2026 年之前採用 .NET 10 和 C# 14 的團隊而言,IronPDF 提供了一個穩定的基礎,具有積極的開發和全面的說明文件,消除了依賴廢棄程式庫的不確定性。


開始之前

先決條件

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

NuGet 套件變更

# RemovePDF Duo .NET(if you can find the correct package name)
dotnet remove package PDFDuo.NET
dotnet remove package PDFDuo
dotnet remove package PDF-Duo

# Install IronPDF
dotnet add package IronPdf
# RemovePDF Duo .NET(if you can find the correct package name)
dotnet remove package PDFDuo.NET
dotnet remove package PDFDuo
dotnet remove package PDF-Duo

# 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

辨識 PDF Duo 使用方式

# Find all PDF Duo references
grep -r "PDFDuo\|HtmlToPdfConverter\|PdfMerger" --include="*.cs" .
# Find all PDF Duo references
grep -r "PDFDuo\|HtmlToPdfConverter\|PdfMerger" --include="*.cs" .
SHELL

完整的 API 參考資料

命名空間變更

PDF Duo .NET IronPDF
using PDFDuo; using IronPdf;
using PDFDuo.Document; using IronPdf;
using PDFDuo.Rendering; using IronPdf.Rendering;
using PDFDuo.Settings; using IronPdf;

HTML 到 PDF 的轉換映射

PDF Duo .NET IronPDF
new HtmlToPdfConverter() new ChromePdfRenderer()
converter.ConvertHtmlString(html, path) renderer.RenderHtmlAsPdf(html).SaveAs(path)
converter.ConvertUrl(url, path) renderer.RenderUrlAsPdf(url).SaveAs(path)
converter.ConvertFile(htmlPath, pdfPath) renderer.RenderHtmlFileAsPdf(htmlPath).SaveAs(pdfPath)

頁面組態對應

PDF Duo .NET IronPDF
settings.PageSize = PageSize.A4 RenderingOptions.PaperSize = PdfPaperSize.A4
settings.PageSize = PageSize.Letter RenderingOptions.PaperSize = PdfPaperSize.Letter
settings.Orientation = Landscape RenderingOptions.PaperOrientation = Landscape
new Margins(top, right, bottom, left) 個別邊界屬性

邊界對應

PDF Duo .NET IronPDF
new Margins(top, right, bottom, left) 個別屬性
margins.Top RenderingOptions.MarginTop
margins.Right RenderingOptions.MarginRight
margins.Bottom RenderingOptions.MarginBottom
margins.Left RenderingOptions.MarginLeft

文件操作映射

PDF Duo .NET IronPDF
PDFDocument.Load(path) PdfDocument.FromFile(path)
document.Save(path) pdf.SaveAs(path)
document.ToBytes() pdf.BinaryData
new PdfMerger() PdfDocument.Merge()
merger.AddFile(path) PdfDocument.FromFile(path)
merger.Merge(output) merged.SaveAs(output)

PDF Duo 中不提供的新功能

特點 IronPDF
頁首/頁尾 RenderingOptions.HtmlHeader, HtmlFooter
頁數 {page}{total-pages} 佔位符
水印 pdf.ApplyWatermark(html)
密碼保護 pdf.SecuritySettings
表格填寫 pdf.Form.Fields
數位簽名 pdf.SignWithFile()
文字擷取 pdf.ExtractAllText()
PDF 至圖片 pdf.RasterizeToImageFiles()

程式碼遷移範例

範例 1:HTML 到 PDF 的轉換

之前 (PDF Duo):

// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        converter.ConvertHtmlString(htmlContent, "output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        converter.ConvertHtmlString(htmlContent, "output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
Imports PDFDuo
Imports System

Module Program
    Sub Main()
        Dim converter As New HtmlToPdfConverter()
        Dim htmlContent As String = "<h1>Hello World</h1><p>This is a PDF document.</p>"
        converter.ConvertHtmlString(htmlContent, "output.pdf")
        Console.WriteLine("PDF created successfully!")
    End Sub
End Module
$vbLabelText   $csharpLabel

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim htmlContent = "<h1>Hello World</h1><p>This is a PDF document.</p>"
        Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
        pdf.SaveAs("output.pdf")
        Console.WriteLine("PDF created successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

這裡的根本差異在於 API 模式。 PDF Duo 的 HtmlToPdfConverter.ConvertHtmlString() 功能可在一次呼叫中同時接收 HTML 和輸出路徑,並同時處理轉換和儲存。IronPDF的 ChromePdfRenderer.RenderHtmlAsPdf() 先傳回一個 PdfDocument 對象,然後您可以使用 SaveAs() 儲存該物件。

這種物件導向的方式提供了顯著的優勢:您可以在儲存之前對 PDF 進行操作(新增水印、合併文件、新增安全性、抽取文字)- 這些都是 PDF Duo 的直接到檔案方式所無法做到的。 請參閱 HTML to PDF 文件,以瞭解其他渲染選項。

範例 2:URL 到 PDF 的轉換

之前 (PDF Duo):

// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.ConvertUrl("https://www.example.com", "webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.ConvertUrl("https://www.example.com", "webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
Imports PDFDuo
Imports System

Module Program
    Sub Main()
        Dim converter As New HtmlToPdfConverter()
        converter.ConvertUrl("https://www.example.com", "webpage.pdf")
        Console.WriteLine("Webpage converted to PDF!")
    End Sub
End Module
$vbLabelText   $csharpLabel

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("Webpage converted to PDF!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
        pdf.SaveAs("webpage.pdf")
        Console.WriteLine("Webpage converted to PDF!")
    End Sub
End Class
$vbLabelText   $csharpLabel

PDF Duo 使用相同的 HtmlToPdfConverter 類別進行 URL 轉換,與 ConvertUrl(url, outputPath) 類別相同。IronPDF使用專用的 ChromePdfRenderer 方法,傳回一個 PdfDocument 物件。

其主要優勢在於IronPDF基於 Chromium 的渲染引擎提供現代化的 CSS3 和 JavaScript 支援,而 PDF Duo 的未知渲染引擎使得 CSS/JavaScript 支援不確定,渲染品質難以預測。 進一步了解 URL 至 PDF 轉換

範例 3:PDF 合併

之前 (PDF Duo):

// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var merger = new PdfMerger();
        merger.AddFile("document1.pdf");
        merger.AddFile("document2.pdf");
        merger.Merge("merged.pdf");
        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package PDFDuo.NET
using PDFDuo;
using System;

class Program
{
    static void Main()
    {
        var merger = new PdfMerger();
        merger.AddFile("document1.pdf");
        merger.AddFile("document2.pdf");
        merger.Merge("merged.pdf");
        Console.WriteLine("PDFs merged successfully!");
    }
}
Imports PDFDuo
Imports System

Class Program
    Shared Sub Main()
        Dim merger As New PdfMerger()
        merger.AddFile("document1.pdf")
        merger.AddFile("document2.pdf")
        merger.Merge("merged.pdf")
        Console.WriteLine("PDFs merged successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

After (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
        Console.WriteLine("PDFs merged successfully!");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");
        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
        Console.WriteLine("PDFs merged successfully!");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        Dim pdf1 = PdfDocument.FromFile("document1.pdf")
        Dim pdf2 = PdfDocument.FromFile("document2.pdf")
        Dim merged = PdfDocument.Merge(pdf1, pdf2)
        merged.SaveAs("merged.pdf")
        Console.WriteLine("PDFs merged successfully!")
    End Sub
End Class
$vbLabelText   $csharpLabel

此範例顯示了基本的架構差異。 PDF Duo 使用專用的 PdfMerger 類,透過 AddFile() 方法將檔案放入佇列,然後 Merge() 一步合併並儲存。

IronPDF 使用不同的模式:使用 PdfDocument.FromFile() 將每個 PDF 載入為 PdfDocument,然後使用靜態 PdfDocument.Merge() 方法將它們合併。 這將返回一個新的 PdfDocument 對象,您可以將其與 SaveAs() 單獨保存。

IronPDF 方法提供了更大的靈活性-您可以在合併前對任何 PDF 進行操作,為合併後的結果添加水印,應用安全設置等。 若要合併許多檔案,可以使用 LINQ:

var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
var paths = new[] { "document1.pdf", "document2.pdf", "document3.pdf" };
var pdfs = paths.Select(PdfDocument.FromFile).ToList();
var merged = PdfDocument.Merge(pdfs);
merged.SaveAs("merged.pdf");
Dim paths = {"document1.pdf", "document2.pdf", "document3.pdf"}
Dim pdfs = paths.Select(AddressOf PdfDocument.FromFile).ToList()
Dim merged = PdfDocument.Merge(pdfs)
merged.SaveAs("merged.pdf")
$vbLabelText   $csharpLabel

進一步瞭解 合併與分割 PDF 的相關資訊。


遷移後的新功能

轉移到IronPDF之後,您將獲得 PDF Duo 完全無法提供的功能:

帶有頁碼的頁首和頁尾

using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    MaxHeight = 25
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    MaxHeight = 25
};

renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    MaxHeight = 25
};

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

Dim renderer As New ChromePdfRenderer()

renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align:center; font-size:10px;'>Company Report</div>",
    .MaxHeight = 25
}

renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align:center; font-size:10px;'>Page {page} of {total-pages}</div>",
    .MaxHeight = 25
}

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

PDF Duo 不支援頁首或頁尾 - 沒有對應的功能。IronPDF提供完整的 HTML/CSS 支援,內建頁碼等動態內容的占位符。 請參閱頁首和頁尾指南

水印。

using IronPdf;
using IronPdf.Editing;

var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(
    "<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
    45,
    VerticalAlignment.Middle,
    HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");
using IronPdf;
using IronPdf.Editing;

var pdf = PdfDocument.FromFile("document.pdf");

pdf.ApplyWatermark(
    "<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>",
    45,
    VerticalAlignment.Middle,
    HorizontalAlignment.Center);

pdf.SaveAs("watermarked.pdf");
Imports IronPdf
Imports IronPdf.Editing

Dim pdf = PdfDocument.FromFile("document.pdf")

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>", 45, VerticalAlignment.Middle, HorizontalAlignment.Center)

pdf.SaveAs("watermarked.pdf")
$vbLabelText   $csharpLabel

PDF Duo 不支援水印。IronPDF提供基於 HTML 的水印,並支援完整的 CSS 設定。

密碼保護

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
pdf.SaveAs("secured.pdf");
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SecuritySettings.UserPassword = "userpassword"
pdf.SecuritySettings.OwnerPassword = "ownerpassword"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
pdf.SaveAs("secured.pdf")
$vbLabelText   $csharpLabel

PDF Duo 不支援密碼保護或安全設定。

文字萃取

var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim text As String = pdf.ExtractAllText()
$vbLabelText   $csharpLabel

PDF Duo 不支援文字擷取。


關鍵遷移注意事項

個別屬性的邊界物件

PDF Duo 使用單一 Margins 物件;IronPDF使用個別屬性:

// PDF Duo:
new Margins(top: 20, right: 15, bottom: 20, left: 15)

// IronPDF:
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
// PDF Duo:
new Margins(top: 20, right: 15, bottom: 20, left: 15)

// IronPDF:
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginRight = 15;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 15;
' PDF Duo:
New Margins(top:=20, right:=15, bottom:=20, left:=15)

' IronPDF:
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginRight = 15
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 15
$vbLabelText   $csharpLabel

儲存方法命名

不同的儲存方法名稱:

// PDF Duo:
document.Save("output.pdf");

// IronPDF:
pdf.SaveAs("output.pdf");
// PDF Duo:
document.Save("output.pdf");

// IronPDF:
pdf.SaveAs("output.pdf");
' PDF Duo:
document.Save("output.pdf")

' IronPDF:
pdf.SaveAs("output.pdf")
$vbLabelText   $csharpLabel

載入 PDFs

載入的不同方法名稱:

// PDF Duo:
PDFDocument.Load("document.pdf")

// IronPDF:
PdfDocument.FromFile("document.pdf")
// PDF Duo:
PDFDocument.Load("document.pdf")

// IronPDF:
PdfDocument.FromFile("document.pdf")
' PDF Duo:
PDFDocument.Load("document.pdf")

' IronPDF:
PdfDocument.FromFile("document.pdf")
$vbLabelText   $csharpLabel

設定物件到屬性

PDF Duo 使用傳送到構建器的設定物件;IronPDF使用屬性:

// PDF Duo:
var settings = new PDFSettings { PageSize = PageSize.A4 };
var converter = new HtmlToPdfConverter(settings);

// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
// PDF Duo:
var settings = new PDFSettings { PageSize = PageSize.A4 };
var converter = new HtmlToPdfConverter(settings);

// IronPDF:
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
' PDF Duo:
Dim settings As New PDFSettings With {.PageSize = PageSize.A4}
Dim converter As New HtmlToPdfConverter(settings)

' IronPDF:
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
$vbLabelText   $csharpLabel

功能比較

特點 PDF Duo .NET IronPDF
HTML 至 PDF 基本的 完整的 CSS3、JavaScript
URL 至 PDF 基本的 完整的認證支援
PDF 合併
頁首/頁尾 完整的 HTML 支援
頁數 內建占位符
水印 基於 HTML
密碼保護 完整的安全選項
表格填寫
數位簽名
文字擷取
PDF 至圖片
同步支援 未知 完整的 async/await
.NET Core/5+ 未知 支援

遷移清單

預遷移

  • 在程式碼庫中尋找所有 PDF Duo 引用
  • 記錄目前設定(頁面大小、頁邊距等) 列出所有已使用的 PDF 操作
  • 尋找新功能(標題、浮水印、安全)的機會
  • 取得IronPDF許可證密鑰

套件變更

  • 刪除 PDFDuo.NET NuGet 套件 安裝 IronPdf NuGet 套件:dotnet add package IronPdf
  • 將命名空間匯入從 using PDFDuo; 更新為 using IronPdf;

程式碼變更

  • 在啟動時新增許可證金鑰配置
  • HtmlToPdfConverter 替換為 ChromePdfRenderer
  • ConvertHtmlString(html, path) 替換為 RenderHtmlAsPdf(html).SaveAs(path)
  • ConvertUrl(url, path) 替換為 RenderUrlAsPdf(url).SaveAs(path)
  • PdfMerger 模式替換為 PdfDocument.Merge() 模式 將 Margins 物件轉換為單獨的邊距屬性
  • Save() 替換為 SaveAs()
  • Load() 替換為 FromFile()

後遷移

  • 執行迴歸測試,比較 PDF 輸出
  • 核實頁面尺寸和邊距是否一致
  • 使用複雜的 HTML/CSS 進行測試(IronPDF 的現代引擎應該可以更好地處理這種情況)
  • 新增功能(頁首、頁尾、浮水印、安全功能)
  • 更新文件

Curtis Chau
技術作家

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

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

鋼鐵支援團隊

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