IRONSOFTWAREHOME
视频

如何在 .NET C# 中设置页面方向和旋转 | IronPDF

Curtis Chau
Curtis Chau
Updated: 2026年7月19日

从选择 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对比

特征选择 PDFIronPDF
平台支持仅限 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
SHELL

许可配置

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

完整的 API 参考

命名空间变更

// Before: SelectPdf
using SelectPdf;

// After: IronPDF
using IronPdf;
using IronPdf.Engines.Chrome;

核心 API 映射

选择 PDFIronPDF备注
HtmlToPdfChromePdfRenderer核心转换器类
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.PdfPageSizerenderer.RenderingOptions.PaperSize纸张大小
converter.Options.PdfPageOrientationrenderer.RenderingOptions.PaperOrientation定位
converter.Options.MarginToprenderer.RenderingOptions.MarginTop顶部保证金
converter.Options.MarginBottomrenderer.RenderingOptions.MarginBottom底边
converter.Options.MarginLeftrenderer.RenderingOptions.MarginLeft左侧空白
converter.Options.MarginRightrenderer.RenderingOptions.MarginRight右边距
PdfPageSize.A4PdfPaperSize.A4A4 大小的枚举
PdfPageOrientation.PortraitPdfPaperOrientation.Portrait肖像枚举
PdfPageOrientation.LandscapePdfPaperOrientation.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");
    }
}

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");
    }
}

本示例展示了核心 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");
    }
}

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");
    }
}

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");
    }
}

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");
    }
}

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

  • 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 特定的库,无法移植。

平台支持比较

平台选择 PDFIronPDF
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");

现代 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!

无需 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");
}

迁移清单

迁移前

  • 审核代码库中所有选择 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。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

...
阅读更多

相关文章

Key in blue circle

立即获取免费的 30 天试用版密钥

Your trial license will be sent to your email address

无任何限制。100% 解锁。无需信用卡。

bullet_checked无需信用卡或创建账户无任何限制。100% 解锁。无需信用卡。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
预约您的免费现场演示
Booking Badge

深受全球数百万工程师信赖

Iron Software 的客户徽标
获取您的无义务咨询
填写下面的表格或通过sales@ironsoftware.com
您的资料将始终保密。
深受全球数百万工程师信赖
Iron Software 的客户徽标
立即获取您的免费30 天试用密钥
无需信用卡或创建账户