IRONSOFTWAREHOME
影片

如何使用 IronPDF 在 C# 中分割多頁 PDF | IronPDF

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

Winnovative在.NET PDF生成領域中一直是一個受認可的名稱,為C#應用程式提供HTML轉PDF的轉換功能。 然而,這個長期運行的Classic程式庫依賴於較舊的專屬渲染引擎,其對現代CSS(網格、最近的Flexbox)和現代JavaScript(ES2017+)的支持相比當前Chromium瀏覽器不一致。 供應商的回應是推出一個獨立的Chromium類產品,Winnovative.Pdf.Next,而不是在原地升級Classic — 這意味著現有的Winnovative客戶無論如何都要面臨程式碼遷移。

本指南為從Winnovative遷移到IronPDF提供了一條遷移路徑,包含步驟指導、程式碼比較和針對.NET開發者評估遷移的實際範例。

為什麼要從Winnovative遷移

Winnovative的Classic程式庫使用的較舊專屬引擎未更新到現代網頁標準:

**不一致的CSS網格/現代Flexbox:**依賴CSS網格或最近Flexbox功能的布局,相比當前Chromium瀏覽器可能會渲染不正確。

**現代JavaScript相容性差距:**ES2017+功能(箭頭函式、async/await、類)執行不可靠,這影響了React、Vue和其它現代框架。

**更新緩慢:**Classic引擎不頻繁接收渲染引擎更新; 供應商的答案是推出獨立的Winnovative.Pdf.Next Chromium類產品, 讓Classic功能凍結。

**雙產品遷移負擔:**轉移到Winnovative.Pdf.Next本身需要重寫—Next API存在於不同的命名空間(Winnovative.Pdf.Next)下,且與Classic二進制不相容。

**字體渲染邊緣情況:**網頁字體和自定義字體有時會與現代瀏覽器不同渲染。

實際影響

在Winnovative Classic中可能不一致渲染的現代CSS和JavaScript:

<!-- CSS Grid can render inconsistently inWinnovative Classic-->
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;">
  <div>Column 1</div>
  <div>Column 2</div>
  <div>Column 3</div>
</div>

<!-- Modern JavaScript may not execute reliably in Classic -->
<script>
const items = data.map(item => item.name);
const result = await fetchData();
class Report { }
</script>
HTML

##IronPDFvs Winnovative:功能比較

了解結構差異有助於技術決策者評估遷移投資:

方面Winnovative ClassicIronPDF
渲染引擎較舊的專屬引擎Chromium(當前)
CSS Grid CSS 網格布局不一致的完全支援
Flexbox在邊緣情況下不一致完全支援
JavaScript現代JavaScript有限ES2024
Bootstrap 5佈局問題完全支援
Tailwind CSS有限完全支援
React/Vue SSR有問題運行
網頁字型在某些設置下不可靠完全支援
更新不頻繁每月
定價(每位開發者)450美元部署 / 1,200美元可再發布See ironpdf.com/pricing

快速開始:從Winnovative到IronPDF的遷移

可以立即透過這些基本步驟開始遷移。

步驟 1:替換 NuGet 套件

移除所有Winnovative套件(驗證您的專案實際使用的):

# Remove Winnovative (Classic + related utilities)
dotnet remove package Winnovative.HtmlToPdf
# Also remove any of these your project references:
# dotnet remove package Winnovative.PdfMerge
# dotnet remove package Winnovative.PdfSecurity
# dotnet remove package Winnovative.Pdf.Next.Core
# dotnet remove package Winnovative.Client
SHELL

安裝 IronPDF:

# Install IronPDF
dotnet add package IronPdf
SHELL

步驟 2:更新命名空間

將Winnovative命名空間替換為IronPDF命名空間:

// Before (Winnovative)
using Winnovative;
using Winnovative.WebKit;

// After (IronPDF)
using IronPdf;

步驟 3:初始化授權

在應用啓動時新增授權初始化:

IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

程式碼遷移範例

將HTML轉換為PDF

最常見的用例展示了這些.NET PDF程式庫之間的API差異。

Winnovative方法:

// NuGet: Install-Package Winnovative.HtmlToPdf
using Winnovative;
using System;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
        
        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";
        
        // Convert HTML string to PDF
        string htmlString = "<html><body><h1>Hello World</h1></body></html>";
        byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");
        
        // Save to file
        System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
        
        Console.WriteLine("PDF created successfully");
    }
}
C#

IronPDF 方法:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        
        // Convert HTML string to PDF
        string htmlString = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        
        // Save to file
        pdf.SaveAs("output.pdf");
        
        Console.WriteLine("PDF created successfully");
    }
}

Winnovative需要建立一個ConvertHtml()以接收原始字節,並手動寫入文件。 IronPDF簡化了這一過程:建立一個SaveAs()方法。

如需進階 HTML 到 PDF 的場景,請參見 HTML 到 PDF 轉換指南

將 URL 轉換為 PDF

URL到PDF的轉換顯示了類似的模式。

Winnovative方法:

// NuGet: Install-Package Winnovative.HtmlToPdf
using Winnovative;
using System;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
        
        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";
        
        // Convert URL to PDF
        string url = "https://www.example.com";
        byte[] pdfBytes = htmlToPdfConverter.ConvertUrl(url);
        
        // Save to file
        System.IO.File.WriteAllBytes("webpage.pdf", pdfBytes);
        
        Console.WriteLine("PDF from URL created successfully");
    }
}
C#

IronPDF 方法:

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        
        // Convert URL to PDF
        string url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        
        // Save to file
        pdf.SaveAs("webpage.pdf");
        
        Console.WriteLine("PDF from URL created successfully");
    }
}

Winnovative使用ConvertUrl()返回的字節必須手動保存。 IronPDF提供PdfDocument物件。

查看 URL 到 PDF 文件,了解認證和自定義標頭選項。

新增標題和頁腳

頁眉和頁腳顯示了顯著的架構差異。 Winnovative使用基於程式元素的方法使用TextElement物件,而IronPDF使用帶有佔位符標記的HTML基頁眉。

Winnovative方法:

// NuGet: Install-Package Winnovative.HtmlToPdf
using Winnovative;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        // Create the HTML to PDF converter
        HtmlToPdfConverter htmlToPdfConverter = new HtmlToPdfConverter();
        
        // Set license key
        htmlToPdfConverter.LicenseKey = "your-license-key";
        
        // Enable header
        htmlToPdfConverter.PdfDocumentOptions.ShowHeader = true;
        htmlToPdfConverter.PdfHeaderOptions.HeaderHeight = 60;
        
        // Add header text
        TextElement headerText = new TextElement(0, 0, "Document Header", new Font("Arial", 12));
        htmlToPdfConverter.PdfHeaderOptions.AddElement(headerText);
        
        // Enable footer
        htmlToPdfConverter.PdfDocumentOptions.ShowFooter = true;
        htmlToPdfConverter.PdfFooterOptions.FooterHeight = 60;
        
        // Add footer with page number
        TextElement footerText = new TextElement(0, 0, "Page &p; of &P;", new Font("Arial", 10));
        htmlToPdfConverter.PdfFooterOptions.AddElement(footerText);
        
        // Convert HTML to PDF
        string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
        byte[] pdfBytes = htmlToPdfConverter.ConvertHtml(htmlString, "");
        
        // Save to file
        System.IO.File.WriteAllBytes("document.pdf", pdfBytes);
        
        Console.WriteLine("PDF with header and footer created successfully");
    }
}
C#

IronPDF 方法:

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        // Create a PDF renderer
        var renderer = new ChromePdfRenderer();
        
        // Configure header and footer
        renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
        {
            CenterText = "Document Header",
            FontSize = 12
        };
        
        renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
        {
            CenterText = "Page {page} of {total-pages}",
            FontSize = 10
        };
        
        // Convert HTML to PDF
        string htmlString = "<html><body><h1>Document with Header and Footer</h1><p>Content goes here</p></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlString);
        
        // Save to file
        pdf.SaveAs("document.pdf");
        
        Console.WriteLine("PDF with header and footer created successfully");
    }
}

Winnovative需要通過&P;佔位符。 IronPDF使用具有簡單屬性例如FontSize, 以及直覺的佔位符例如{total-pages}

欲了解全面CSS樣式的HTML基頁眉,請參見頁眉和頁腳說明文件

Winnovative API到IronPDF映射參考

此映射透過展示直接的 API 等價加速遷移:

Winnovative類IronPDF等價
HtmlToPdfConverterChromePdfRenderer
PdfDocumentPdfDocument
PdfDocumentOptionsRenderingOptions
PdfHeaderOptionsHtmlHeaderFooter
PdfFooterOptionsHtmlHeaderFooter
TextElementHTML 在HtmlFragment
ImageElementHTML <img>

方法映射

Winnovative方法IronPDF方法
ConvertUrl(url)RenderUrlAsPdf(url)
ConvertUrlToFile(url, path)RenderUrlAsPdf(url).SaveAs(path)
ConvertHtml(html, baseUrl)RenderHtmlAsPdf(html)
ConvertHtmlToFile(html, path)RenderHtmlAsPdf(html).SaveAs(path)
ConvertHtmlFile(path)RenderHtmlFileAsPdf(path)
MergePdf(streams)PdfDocument.Merge(pdfs)
AppendPdf(pdf)pdf1.AppendPdf(pdf2)

選項映射

Winnovative選項IronPDF 選項
PdfPageSize.A4PaperSize = PdfPaperSize.A4
PdfPageSize.LetterPaperSize = PdfPaperSize.Letter
PdfPageOrientation.PortraitPaperOrientation = PdfPaperOrientation.Portrait
PdfPageOrientation.LandscapePaperOrientation = PdfPaperOrientation.Landscape
TopMargin = 20MarginTop = 20
BottomMargin = 20MarginBottom = 20
LeftMargin = 15MarginLeft = 15
RightMargin = 15MarginRight = 15
ShowHeader = true設置HtmlHeader屬性
ShowFooter = true設置HtmlFooter屬性
JavaScriptEnabled = trueEnableJavaScript = true
頁碼&p;頁碼{page}
總頁數&P;總頁數{total-pages}

常見遷移問題及解決方案

問題1:CSS佈局看起來不同

**症狀:**在Winnovative中看起來"還好"的佈局現在看起來在IronPDF中不同。

**原因:**Winnovative Classic較舊專屬引擎存在開發者所解決的渲染問題。 IronPDF的當前Chromium引擎正確渲染這些。

**解決方案:**移除Winnovative特定的CSS黑技使用標準CSS:

// Clean up legacy CSS
string cleanedHtml = html
    .Replace("-webkit-flex", "flex")
    .Replace("display: -webkit-box", "display: flex");

問題2:JavaScript沒有執行

**症狀:**動態內容沒有出現在PDF中。

**原因:**需要明確配置JavaScript等待選項。

解決方案:

renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.WaitFor.JavaScript(5000);
// Or wait for specific element
renderer.RenderingOptions.WaitFor.HtmlElementById("content-ready", 10000);

問題3:基本URL不起作用

**症狀:**圖片和CSS的相對URL無法解析。

**原因:**IronPDF需要明確的基本URL配置。

解決方案:

renderer.RenderingOptions.BaseUrl = new Uri("https://example.com/");

問題4:不同的分頁

**症狀:**內容在不同點上分頁與Winnovative不同。

**原因:**不同的渲染引擎處理分頁不同。

**解決方案:**使用明確的CSS分頁控制:

/* Control page breaks explicitly */
.no-break {
    page-break-inside: avoid;
}
.page-break-before {
    page-break-before: always;
}
.page-break-after {
    page-break-after: always;
}
Text

問題5:字體看起來不同

**症狀:**文字顯示的字體與期望不同。

**原因:**IronPDF使用系統字體; 網頁字體需要明確載入。

解決方案:

<style>
@import url('https://fonts.googleapis.com/css2?family=Roboto&display=swap');

body {
    font-family: 'Roboto', Arial, sans-serif;
}
</style>
HTML

Winnovative遷移檢查表

遷移前任務

審核您的程式碼庫以確定所有Winnovative的使用:

# Find all Winnovative references
grep -r "Winnovative" --include="*.cs" .
grep -r "HtmlToPdfConverter" --include="*.cs" .
grep -r "PdfDocumentOptions" --include="*.cs" .
grep -r "ConvertUrl\|ConvertHtml" --include="*.cs" .
SHELL

記錄當前配置,只包括頁面大小、邊距和頁眉/頁腳設置。 識別CSS黑技(webkit前綴,基於浮動的網格)可以移除。 註明JavaScript的相容性要求。

程式碼更新任務

  1. 移除Winnovative NuGet套件
  2. 安裝IronPDFNuGet 套件
  3. 更新所有命名空間導入從IronPdf
  4. HtmlToPdfConverter
  5. RenderHtmlAsPdf()
  6. RenderUrlAsPdf()
  7. 更新頁面大小/方向設置至RenderingOptions
  8. 轉換邊距配置
  9. 將基於TextHeaderFooter
  10. 將頁碼佔位符從{total-pages}
  11. 在啟動時新增IronPDF授權初始化

遷移後測試

遷移後,驗證以下方面:

  • 測試基本的HTML到PDF轉換
  • 測試 URL 到 PDF 的轉換
  • 驗證CSS Grid布局正確渲染
  • 驗證Flexbox布局正確渲染
  • 使用現代ES6+語法測試JavaScript密集的頁面
  • 驗證Bootstrap 5的相容性
  • 測試頁首/頁尾渲染
  • 驗證分頁斷點
  • 比較PDF輸出質量

清理任務

  • 移除Winnovative CSS的黑技(webkit前綴)
  • 將ES5 JavaScript更新為現代語法
  • 移除基於浮動的網格墊片
  • 更新文件

遷移到IronPDF的關鍵好處

從Winnovative遷移到IronPDF提供了幾個關鍵優勢:

**現代渲染引擎:**IronPDF使用當前的Chromium引擎,確保全面的CSS3,CSS Grid,Flexbox和ES2024 JavaScript支持。 現代框架如Bootstrap 5,Tailwind CSS和React/Vue能夠正確渲染。

**簡化API:**HTML基頁眉和頁腳取代程式TextElement定位。 直覺的佔位符例如&p;語法。 內建的SaveAs()方法消除了手動字節處理。

**活躍的開發:**IronPDF的每月更新確保了與當前和即將推出的.NET版本的相容性。

**不帶黑技的現代CSS:**CSS Grid,Flexbox和現代字體無需webkit前綴或基於浮動的墊片工作。

**現代JavaScript:**ES6+功能包括箭頭函式、async/await、類和模塊正確執行。

請注意: Winnovative是其各自所有者的註冊商標。 此網站與Winnovative Software無關,未經認可或授權。 所有產品名稱、標誌和品牌均為其各自所有者的財產。 比較僅供參考,反映撰寫時公開可用的資訊。
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天試用金鑰
無需信用卡或帳戶建立