如何在 C# 中从 SelectPdf 迁移到 IronPDF
从选择 PDF迁移到IronPDF将您的 PDF 生成工作流从仅限于Windows的库中迁移,该库默认使用内部 WebKit 渲染引擎,并附带 Chromium 124(2024年4月)的可选 Blink 引擎,到一个现行的 Chromium 跨平台库,支持完整的 CSS3 和 JavaScript。 本指南提供了完整的、逐步的迁移路径,使得能够部署到 Linux、Docker、Azure Functions 和其他选择 PDF不支持的云平台。
为什么要从选择 PDF迁移到 IronPDF.
了解 SelectPdf.
SelectPdf 是一个商业库,旨在使用 C# 将 HTML 内容转换为 PDF。 该库专为需要在其应用程序中无缝集成 PDF 生成功能的开发人员量身定制。选择 PDF的优势在于其简单的应用程序接口(API),这使它成为那些 PDF 生成新手的理想选择。
但是,潜在用户必须了解其关键的局限性。 根据供应商自己的文档,SelectPdf 仅在 Windows 上运行——不支持 Linux、macOS 或 Xamarin。 这在考虑基于云的部署解决方案,例如 LinuxAzure Functions或 Docker 时是一个实质性的障碍。 社区版限制为每个 PDF 5 页,并在每页上应用水印,直到购买许可证密钥。选择 PDF的默认渲染引擎是一个内部 WebKit; 可选的Blink引擎随Chromium 124(2024年4月)提供,与当前的Chrome版本相比滞后,可能导致新CSS功能(如CSS Grid和Flexbox gap 属性)出现问题。
SelectPdf的关键限制
| 问题 | 影响 | IronPDF 解决方案 |
|---|---|---|
| 仅限窗口 | 无法部署到 Linux、Docker、Azure Functions | 完全跨平台支持 |
| 默认 WebKit 引擎;可选的 Blink 附带 Chromium 124(2024年4月) | 在默认引擎上可能出现较新的 CSS 功能问题 | 最新的 Chromium |
| 5页免费版本限制 | 每页的水印直到获得许可证 | 免费试用 |
| 仅限 Windows 的 .NET 10 | 无 Linux/macOS/容器部署 | 在所有平台上全面支持 .NET 10 |
| 云部署被阻止(非 Windows) | 不能使用AWS Lambda或 Linux Azure Functions | 云原生 |
选择 PDF与IronPDF对比
| 特征 | 选择 PDF | IronPDF |
|---|---|---|
| 平台支持 | 仅限 Windows | 完全跨平台,10 多个发行版 |
| 支持现代网络标准 | 默认采用 WebKit; Blink 选项附带 Chromium 124(2024年4月) | 完整的 CSS3,当前的 Chromium |
| 最大免费版本页数限制 | 5 页 + 每页水印 | 灵活,无硬性限制 |
| 定价 | $499 单开发者 至 $1,599 企业 OEM | 透明灵活的定价 |
| .NET 10 支持。 | 是,但仅限 Windows | 是,所有平台 |
| 云环境中的部署 | 仅限 Windows 目标 | 全面支持(Windows + Linux) |
| CSS 网格 | WebKit:有限; Blink(Chromium 124):支持 | 支持 |
| Flexbox(间隙属性) | WebKit 不支持; Blink 支持 | 支持 |
| CSS变量 | WebKit 不支持; Blink 支持 | 支持 |
| Docker(Linux) | 不支持 | 官方图片 |
| Azure Functions (Linux) | 不支持 | 支持 |
| AWS-Lambda(AWS Lambda | 不支持 | 支持 |
SelectPdf 的 NetCore 包以 .NET Standard 2.0 为目标,记录为与 .NET 5 至 .NET 10 兼容——但仅在 Windows 上运行,这中和了对任何部署到 Linux 容器、AWS Lambda 或基于 Linux 的 Azure App Service 的团队的兼容性。IronPDF 支持相同的 .NET 版本,运行于 Windows、Linux、macOS 和 Docker。
开始之前
前提条件
- .NET Environment: .NET Framework 4.6.1+ or .NET Core 3.1+ / .NET 5/6/7/8/9/10+
- NuGet 访问权限:能够安装 NuGet 包
- IronPDF 许可证:请从ironpdf.com获取您的许可证密钥。
NuGet 软件包变更
# Remove选择 PDF(use Select.HtmlToPdf.NetCore on .NET Core / .NET 5+)
dotnet remove package Select.HtmlToPdf
# or: dotnet remove package Select.HtmlToPdf.NetCore
# Install IronPDF
dotnet add package IronPdf
# Remove选择 PDF(use Select.HtmlToPdf.NetCore on .NET Core / .NET 5+)
dotnet remove package Select.HtmlToPdf
# or: dotnet remove package Select.HtmlToPdf.NetCore
# Install IronPDF
dotnet add package IronPdf
许可配置
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
完整的 API 参考
命名空间变更
// Before: SelectPdf
using SelectPdf;
// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
// Before: SelectPdf
using SelectPdf;
// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;
' Before: SelectPdf
Imports SelectPdf
' After: IronPDF
Imports IronPdf
Imports IronPdf.Engines.Chrome
核心 API 映射
| 选择 PDF | IronPDF | 备注 |
|---|---|---|
HtmlToPdf |
ChromePdfRenderer |
核心转换器类 |
converter.ConvertHtmlString(html) |
renderer.RenderHtmlAsPdf(html) |
HTML 字符串转换 |
converter.ConvertUrl(url) |
renderer.RenderUrlAsPdf(url) |
URL 转换 |
doc.Save(path) |
pdf.SaveAs(path) |
保存到文件 |
doc.Close() |
不需要 | IronPDF 处理清理工作 |
converter.Options.PdfPageSize |
renderer.RenderingOptions.PaperSize |
纸张大小 |
converter.Options.PdfPageOrientation |
renderer.RenderingOptions.PaperOrientation |
定位 |
converter.Options.MarginTop |
renderer.RenderingOptions.MarginTop |
顶部保证金 |
converter.Options.MarginBottom |
renderer.RenderingOptions.MarginBottom |
底边 |
converter.Options.MarginLeft |
renderer.RenderingOptions.MarginLeft |
左侧空白 |
converter.Options.MarginRight |
renderer.RenderingOptions.MarginRight |
右边距 |
PdfPageSize.A4 |
PdfPaperSize.A4 |
A4 大小的枚举 |
PdfPageOrientation.Portrait |
PdfPaperOrientation.Portrait |
肖像枚举 |
PdfPageOrientation.Landscape |
PdfPaperOrientation.Landscape |
景观枚举 |
{page_number} |
{page} |
页码占位符 |
{total_pages} |
{total-pages} |
总页数占位符 |
代码迁移示例
示例 1:HTML 字符串到 PDF 的转换
之前 (SelectPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertHtmlString(htmlContent);
doc.Save("document.pdf");
doc.Close();
Console.WriteLine("PDF generated from HTML string");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertHtmlString(htmlContent);
doc.Save("document.pdf");
doc.Close();
Console.WriteLine("PDF generated from HTML string");
}
}
Imports SelectPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim converter As New HtmlToPdf()
Dim doc As PdfDocument = converter.ConvertHtmlString(htmlContent)
doc.Save("document.pdf")
doc.Close()
Console.WriteLine("PDF generated from HTML string")
End Sub
End Class
After (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document.pdf");
Console.WriteLine("PDF generated from HTML string");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("document.pdf");
Console.WriteLine("PDF generated from HTML string");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("document.pdf")
Console.WriteLine("PDF generated from HTML string")
End Sub
End Class
本示例展示了核心 API 的差异。 SelectPdf使用Close()用于持久化和清理。
IronPDF使用SaveAs()保存。 Close() 调用被消除——IronPDF自动处理资源管理。 请参阅 HTML 转 PDF 文档,了解全面的示例。
示例 2:URL 到 PDF 的转换
之前 (SelectPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertUrl("https://www.example.com");
doc.Save("output.pdf");
doc.Close();
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
PdfDocument doc = converter.ConvertUrl("https://www.example.com");
doc.Save("output.pdf");
doc.Close();
Console.WriteLine("PDF created successfully");
}
}
Imports SelectPdf
Imports System
Class Program
Shared Sub Main()
Dim converter As New HtmlToPdf()
Dim doc As PdfDocument = converter.ConvertUrl("https://www.example.com")
doc.Save("output.pdf")
doc.Close()
Console.WriteLine("PDF created successfully")
End Sub
End Class
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("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 pdf = renderer.RenderUrlAsPdf("https://www.example.com");
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Class
SelectPdf的RenderUrlAsPdf()。 关键差异在于渲染引擎:SelectPdf 默认使用内部 WebKit,并提供一个附带 Chromium 124(2024年4月)的可选 Blink 引擎,而IronPDF使用当前稳定的 Chromium,以支持完整的 CSS3 和 JavaScript。 在我们的教程中了解更多信息。
示例 3:自定义页面设置和页边距
之前 (SelectPdf):
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
converter.Options.PdfPageSize = PdfPageSize.A4;
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
converter.Options.MarginTop = 20;
converter.Options.MarginBottom = 20;
converter.Options.MarginLeft = 20;
converter.Options.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
PdfDocument doc = converter.ConvertHtmlString(html);
doc.Save("custom-settings.pdf");
doc.Close();
Console.WriteLine("PDF with custom settings created");
}
}
// NuGet: Install-Package Select.HtmlToPdf
using SelectPdf;
using System;
class Program
{
static void Main()
{
HtmlToPdf converter = new HtmlToPdf();
converter.Options.PdfPageSize = PdfPageSize.A4;
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait;
converter.Options.MarginTop = 20;
converter.Options.MarginBottom = 20;
converter.Options.MarginLeft = 20;
converter.Options.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
PdfDocument doc = converter.ConvertHtmlString(html);
doc.Save("custom-settings.pdf");
doc.Close();
Console.WriteLine("PDF with custom settings created");
}
}
Imports SelectPdf
Imports System
Module Program
Sub Main()
Dim converter As New HtmlToPdf()
converter.Options.PdfPageSize = PdfPageSize.A4
converter.Options.PdfPageOrientation = PdfPageOrientation.Portrait
converter.Options.MarginTop = 20
converter.Options.MarginBottom = 20
converter.Options.MarginLeft = 20
converter.Options.MarginRight = 20
Dim html As String = "<html><body><h1>Custom Page Settings</h1></body></html>"
Dim doc As PdfDocument = converter.ConvertHtmlString(html)
doc.Save("custom-settings.pdf")
doc.Close()
Console.WriteLine("PDF with custom settings created")
End Sub
End Module
After (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom-settings.pdf");
Console.WriteLine("PDF with custom settings created");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
string html = "<html><body><h1>Custom Page Settings</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("custom-settings.pdf");
Console.WriteLine("PDF with custom settings created");
}
}
Imports IronPdf
Imports IronPdf.Engines.Chrome
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Portrait
renderer.RenderingOptions.MarginTop = 20
renderer.RenderingOptions.MarginBottom = 20
renderer.RenderingOptions.MarginLeft = 20
renderer.RenderingOptions.MarginRight = 20
Dim html As String = "<html><body><h1>Custom Page Settings</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("custom-settings.pdf")
Console.WriteLine("PDF with custom settings created")
End Sub
End Module
页面设置模式几乎完全相同,只是对属性名称进行了简单的更改:
converter.Options.PdfPageSize→renderer.RenderingOptions.PaperSizeconverter.Options.PdfPageOrientation→renderer.RenderingOptions.PaperOrientationPdfPageSize.A4→PdfPaperSize.A4PdfPageOrientation.Portrait→PdfPaperOrientation.Portrait
保证金属性保持相同的名称和单位。
仅限 Windows 的问题
选择 PDF的平台限制
尽管有各种营销宣传,但SelectPdf明确表示不支持:
- Linux(任何发行版)
- MacOS
- Docker 容器
- Azure Functions
- AWS Lambda
- 谷歌云功能
- 任何基于 ARM 的系统
这是一个基本的架构限制--SelectPdf 依赖于 Windows 特定的库,无法移植。
平台支持比较
| 平台 | 选择 PDF | IronPDF |
|---|---|---|
| Windows Server 2019+ | ✅ | ✅ |
| 视窗 10/11 | ✅ | ✅ |
| Ubuntu 20.04+ | ❌ | ✅ |
| Debian 10+ | ❌ | ✅ |
| CentOS 7+ | ❌ | ✅ |
| 高山 Linux | ❌ | ✅ |
| 亚马逊 Linux 2 | ❌ | ✅ |
| MacOS 10.15 以上 | ❌ | ✅ |
| Azure 应用服务(Linux) | ❌ | ✅ |
| Azure Functions | ❌ | ✅ |
| AWS Lambda | ❌ | ✅ |
| Docker (Linux) | ❌ | ✅ |
| Kubernetes | ❌ | ✅ |
过时的渲染引擎
CSS 功能支持比较
SelectPdf 提供三个引擎(根据供应商文档):一个内部 WebKit(默认),Blink(在 v19.1 中引入,附带 Chromium 124.0.6367.201 —— 2024年4月发布),和 Chromium/CEF。 默认的 WebKit 引擎未跟上现代网页标准:
| CSS 功能 | SelectPdf(默认 WebKit) | SelectPdf(Blink,Chromium 124) | IronPDF |
|---|---|---|---|
| CSS 网格 | ⚠ 部分/损坏 | ✅ | ✅ 全文 |
| Flexbox (基础) | ✅ | ✅ | ✅ |
| Flexbox(间隙属性) | ❌ | ✅ | ✅ |
| CSS 变量 | ❌ | ✅ | ✅ |
| CSS calc() | ⚠ 限制 | ✅ | ✅ |
| @ 媒体打印 | ⚠ 限制 | ✅ | ✅ |
| @font-face | ⚠ 限制 | ✅ | ✅ |
| 网络字体 | ⚠ 限制 | ✅ | ✅ |
| SVG | ⚠ 基本 | ✅ | ✅ 全文 |
| CSS 转换 | ⚠ 限制 | ✅ | ✅ |
| CSS 动画 | ❌ | ⚠ 部分 | ✅ |
迁移后的新功能
迁移到IronPDF后,您将获得选择 PDF无法提供的功能:
跨平台部署
// ✅IronPDF- Works everywhere
using IronPdf;
//Azure 应用服务(Linux)- WORKS
// Docker container - WORKS
//AWS Lambda- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
// ✅IronPDF- Works everywhere
using IronPdf;
//Azure 应用服务(Linux)- WORKS
// Docker container - WORKS
//AWS Lambda- WORKS
// GitHub Actions on ubuntu-latest - WORKS
// macOS development - WORKS
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>");
pdf.SaveAs("output.pdf");
Imports IronPdf
' ✅IronPDF- Works everywhere
'Azure 应用服务(Linux)- WORKS
' Docker container - WORKS
'AWS Lambda- WORKS
' GitHub Actions on ubuntu-latest - WORKS
' macOS development - WORKS
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello</h1>")
pdf.SaveAs("output.pdf")
现代 CSS 支持
// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();
var html = @"
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
// ✅IronPDF- Uses latest stable Chromium
var renderer = new ChromePdfRenderer();
var html = @"
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// All modern CSS features render correctly!
Imports IronPdf
' ✅IronPDF- Uses latest stable Chromium
Dim renderer As New ChromePdfRenderer()
Dim html As String = "
<style>
:root { --primary: #007bff; --gap: 20px; }
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--gap); }
</style>
<div class='grid'>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 1</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 2</div>
<div style='background: var(--primary); color: white; padding: 1rem;'>Item 3</div>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
' All modern CSS features render correctly!
无需 Close().
IronPDF 自动处理资源管理:
// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed
// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
}
// Option 1: Let garbage collection handle it
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// No Close() needed
// Option 2: Explicit disposal
using (var pdf = renderer.RenderHtmlAsPdf(html))
{
pdf.SaveAs("output.pdf");
}
' Option 1: Let garbage collection handle it
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
' No Close() needed
' Option 2: Explicit disposal
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
End Using
迁移清单
迁移前
- 审核代码库中所有选择 PDF的使用情况
- 记录当前转换器选项的映射
- 确定页眉/页脚的实现方式
- 检查页码占位符语法 (
{page_number}→{page}) - 注意基本 URL 处理模式
- 验证目标部署平台
- 从ironpdf.com获取IronPDF许可证密钥
代码更新
- 移除
Select.HtmlToPdfNuGet包 - 安装
IronPdfNuGet包 - 更新命名空间导入 (
using SelectPdf;→using IronPdf;) - 用
HtmlToPdf - 用
ConvertHtmlString() - 用
ConvertUrl() - 更新选项属性名称 (
Options.PdfPageSize→RenderingOptions.PaperSize) - 将
PdfPaperSize - 将
PdfPaperOrientation - 用
doc.Save() - 移除所有
doc.Close()调用 - 修复页码占位符 (
{page_number}→{page},{total_pages}→{total-pages}) - 在应用程序启动时添加许可证初始化
后迁移
- 运行所有单元测试
- 验证 CSS 渲染效果(尤其是 Grid/Flexbox 布局)
- 测试 JavaScript 执行
- 核对页眉/页脚页码
- 在目标平台(Linux、Docker 等)上进行测试
- 性能测试
- 比较 PDF 输出质量
- 更新 CI/CD 流水线
- 测试云部署(如适用)
- 需要显式的@@--CODE-132576--@@调用 此站点与Outside Software SRL或SelectPdf无隶属关系、认可或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。)}]

