如何用 C# 从 PDF Duo 迁移到 IronPDF
从PDF Duo .NET迁移到IronPDF将您的 .NET PDF 工作流程从一个模糊、文档不全、维护状态不明确的库迁移到一个稳定、文档齐全、维护积极的解决方案。 本指南提供了一个全面、循序渐进的迁移路径,可消除与废弃库相关的风险,同时获得 PDF Duo 无法提供的高级功能。
为什么要从 PDF Duo 迁移到 IronPDF.
PDF 双风险问题
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 提供了一个稳定的基础,拥有活跃的开发和全面的文档,消除了依赖废弃库的不确定性。
开始之前
前提条件
- .NET 环境: .NET Framework 4.6.2+ 或 .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet 访问权限:能够安装 NuGet 包
- IronPDF 许可证:请从ironpdf.com获取您的许可证密钥。
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
许可配置
// 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"
确定 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" .
完整的 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 |
| @@--CODE-5953--@ | 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
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
这里的根本区别在于 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
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
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
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
这个例子显示了一个基本的架构差异。 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")
了解有关 合并和拆分 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")
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")
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")
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()
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
保存方法命名
不同的保存方法名称:
// 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")
加载 PDF 文件
不同的加载方法名称:
// 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")
从设置对象到属性
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
功能对比
| 特征 | PDF Duo .NET | IronPDF |
|---|---|---|
| HTML 至 PDF | 基本的 | 完整的 CSS3、JavaScript |
| URL 至 PDF | 基本的 | 完全支持授权 |
| PDF 合并 | 是 | 是 |
| 页眉/页脚 | 否 | 完全支持 HTML |
| 页码 | 否 | 内置占位符 |
| 水印 | 否 | 基于 HTML |
| 密码保护 | 否 | 全面的安全选项 |
| 表格填写 | 否 | 是 |
| 数字签名 | 否 | 是 |
| 文本提取 | 否 | 是 |
| 将 PDF 转换为图像 | 否 | 是 |
| 异步支持 | 未知 | 完整的异步/等待 |
| .NET Core/5+ | 未知 | 支持 |
迁移清单
迁移前
- 在代码库中查找所有 PDF Duo 引用
- 记录当前设置(页面大小、页边距等) 列出所有已使用的 PDF 操作
- 寻找新功能(标题、水印、安全)的机会
- 获取IronPDF许可证密钥
软件包变更
- 删除
PDFDuo.NETNuGet 包 - 安装
IronPdfNuGet 包: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 的现代引擎应该能更好地处理这种情况)
- 添加新功能(页眉、页脚、水印、安全功能)
- 更新文档

