IRONSOFTWAREHOME
影片

如何在 .NET C# 中設置頁面方向和旋轉 | IronPDF

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

從SelectPdf遷移到IronPDF,把您的PDF生成工作流程從僅支持Windows的程式庫(其預設渲染引擎是內部WebKit,且其選擇性的Blink引擎搭載Chromium 124(2024年4月))轉移到支持最新Chromium、跨平台且具備完整CSS3和JavaScript支持的程式庫。 本指南提供了一個完整且逐步的遷移路徑,能夠部署到SelectPdf不支持的Linux、Docker、Azure Functions和其他雲平台。

為什麼從SelectPdf遷移到IronPDF

了解SelectPdf

SelectPdf是一個商業程式庫,設計用於使用C#將HTML內容轉換為PDF。 該程式庫專為需要在應用程式中無縫整合PDF生成功能的開發者設計。 SelectPdf的強項在於其簡單的API,這使它成為PDF生成新手的吸引選擇。

然而,潛在的使用者必須要了解其嚴重的限制。 根據廠商的文件,SelectPdf僅在Windows上運行,不支持Linux、macOS或Xamarin。 這對於考慮基於雲的部署解決方案如Linux Azure Functions或Docker構成了一個重大的障礙。 社區版限制每個PDF最多5頁並且在每一頁上新增水印,直到購買授權金鑰為止。 SelectPdf的預設渲染引擎是內部WebKit; 選擇性的Blink引擎搭載Chromium 124(2024年4月),這落後於當前Chrome版本,可能造成在較新的CSS功能如CSS Grid和Flexbox gap屬性上的問題。

SelectPdf的嚴重限制

問題影響IronPDF解決方案
僅支持Windows無法部署到Linux、Docker、Azure Functions完整的跨平台支持
預設WebKit引擎;選擇的Blink引擎搭載Chromium 124(2024年4月)預設引擎上可能無法使用較新的CSS功能使用最新的Chromium
5頁免費版限制每頁都有水印,直到購買授權慷慨的試用
.NET 10僅限於Windows無法在Linux/macOS/容器上部署全平台支持.NET 10
雲部署受阻(非Windows)無法使用AWS Lambda或Linux Azure Functions原生雲支持

SelectPdf與IronPDF的比較

功能SelectPdfIronPDF
平台支持僅限Windows完整跨平台,支持10多個發行版
現代Web標準支持預設使用WebKit引擎; Blink選擇性引擎搭載Chromium 124(2024年4月)完整CSS3,使用當前Chromium
最大免費版本頁數限制5頁+每頁有水印靈活,沒有硬性限制
定價售價$499從單一開發者到$1599企业OEM透明靈活的定價
.NET 10支持支持,但僅限Windows支持,所有平台
雲環境下的部署僅支持Windows目標完全支持(Windows+Linux)
CSS Grid CSS 網格布局WebKit:有限; Blink(Chromium 124):支持支援
Flexbox(間隙屬性)WebKit:不支持; Blink:支持支援
CSS變數WebKit:不支持; Blink:支持支援
Docker (Linux)不支持官方映像
Azure Functions (Linux)不支持支援
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 SelectPdf (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對應

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

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

之後(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並提供一個選擇的Blink引擎,該引擎與Chromium 124(2024年4月)一起提供,而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");
    }
}

之後(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的問題

SelectPdf的平臺限制

儘管有任何行銷聲稱,SelectPdf明確不支持:

  • Linux(任何版本)
  • macOS
  • Docker容器
  • Azure Functions
  • AWS Lambda
  • Google Cloud Functions
  • 任何基於ARM的系統

這是一個根本性的架構限制—SelectPdf依賴於特定於Windows的程式庫,且無法移植。

平台支持比較

平台SelectPdfIronPDF
Windows Server 2019+
Windows 10/11
Ubuntu 20.04+
Debian 10+
CentOS 7+
Alpine Linux
Amazon Linux 2
macOS 10.15+
Azure App Service(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()⚠ 限制的
@media print⚠ 限制的
@font-face⚠ 限制的
Web 字體⚠ 限制的
SVG⚠ 基礎支持✅全面
CSS變換⚠ 限制的
CSS動畫⚠ 部分支持

遷移後的新能力

遷移到IronPDF後,您可獲得SelectPdf無法提供的功能:

跨平台部署

// ✅IronPDF- Works everywhere
using IronPdf;

// Azure App Service(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");
C#

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

遷移檢查表

遷移前

  • 審核程式碼庫中所有SelectPdf的使用
  • 記錄現有轉換選項以便映射
  • 確定頁眉/頁腳的實現方式
  • 檢查頁碼佔位符語法({page_number}{page}
  • 記錄基礎URL處理模式
  • 驗證目標部署平台
  • 獲取IronPDF授權金鑰來自ironpdf.com

程式碼更新

  • 移除Select.HtmlToPdf NuGet包
  • 安裝IronPdf NuGet包
  • 更新命名空間導入(using SelectPdf;using IronPdf;
  • HtmlToPdf
  • ConvertHtmlString()
  • ConvertUrl()
  • 更新選項屬性名稱(Options.PdfPageSizeRenderingOptions.PaperSize
  • PdfPaperSize
  • PdfPaperOrientation
  • doc.Save()
  • 移除所有doc.Close()調用
  • 修正頁碼佔位符({page_number}{total_pages}{total-pages}
  • 在應用程式啟動時新增授權初始化

遷移後

  • 執行所有單元測試
  • 驗證CSS渲染(特別是Grid/Flexbox)
  • 測試JavaScript執行
  • 驗證頁眉/頁腳頁碼
  • 在目標平台上測試(Linux、Docker等)
  • 性能測試
  • 比較PDF輸出質量
  • 更新 CI/CD 管道
  • 測試雲部署(如果適用)

請注意: SelectPDF是其相應所有者的註冊商標。 本網站與Outside Software SRL或SelectPdf沒有關聯、未被其認可或贊助。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映撰寫時公開可用的資訊。
Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

...
閱讀更多

相關文章

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天試用金鑰
無需信用卡或帳戶建立