跳至页脚内容
迁移指南

如何在 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。


开始之前

前提条件

  1. .NET Environment: .NET Framework 4.6.1+ or .NET Core 3.1+ / .NET 5/6/7/8/9/10+
  2. NuGet 访问权限:能够安装 NuGet 包
  3. 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
SHELL

许可配置

// 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"
$vbLabelText   $csharpLabel

完整的 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
$vbLabelText   $csharpLabel

核心 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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

本示例展示了核心 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
$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("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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

页面设置模式几乎完全相同,只是对属性名称进行了简单的更改:

  • converter.Options.PdfPageSizerenderer.RenderingOptions.PaperSize
  • converter.Options.PdfPageOrientationrenderer.RenderingOptions.PaperOrientation
  • PdfPageSize.A4PdfPaperSize.A4
  • PdfPageOrientation.PortraitPdfPaperOrientation.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")
$vbLabelText   $csharpLabel

现代 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!
$vbLabelText   $csharpLabel

无需 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
$vbLabelText   $csharpLabel

迁移清单

迁移前

  • 审核代码库中所有选择 PDF的使用情况
  • 记录当前转换器选项的映射
  • 确定页眉/页脚的实现方式
  • 检查页码占位符语法 ({page_number}{page})
  • 注意基本 URL 处理模式
  • 验证目标部署平台
  • ironpdf.com获取IronPDF许可证密钥

代码更新

  • 移除Select.HtmlToPdf NuGet包
  • 安装IronPdf NuGet包
  • 更新命名空间导入 (using SelectPdf;using IronPdf;)
  • HtmlToPdf
  • ConvertHtmlString()
  • ConvertUrl()
  • 更新选项属性名称 (Options.PdfPageSizeRenderingOptions.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无隶属关系、认可或赞助。 所有产品名称、徽标和品牌均为各自所有者的财产。 比较仅供参考,反映撰写时公开可用的信息。)}]
Curtis Chau
技术作家

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

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

钢铁支援团队

我们每周 5 天,每天 24 小时在线。
聊天
电子邮件
打电话给我