跳過到頁腳內容
遷移指南

如何在 C# 中從 PDFSharp 轉移到 IronPDF

從PDFSharp轉換到IronPDF可將您的 PDF 生成工作流程從基於坐標的手動繪圖轉化成現代化的 HTML/CSS 模板。 本指南提供完整、逐步的轉換路徑,以網頁技術取代繁瑣的 GDI+ 風格定位,大幅縮短開發時間,並透過標準的 HTML/CSS 技能,使 PDF 生成可維護。

為什麼要從PDFSharp轉移到 IronPDF?

瞭解 PDFSharp。

PDFSharp 是著名的低階 PDF 建立函式庫,可讓開發人員透過程式化的方式產生 PDF 文件。PDFSharp以 MIT 授權釋出,開發人員社群可自由使用與修改。PDFSharp的主要功能是從零開始繪圖和編譯 PDF 的工具,根據專案的性質,它既有好處也有限制。

PDFSharp 有時被誤以為是 HTML 到 PDF 的轉換器,但其實不是。 其目的僅限於程式化 PDF 文件的建立。 雖然有一個附加元件 HtmlRenderer.PdfSharp 旨在提供 HTML 渲染功能,但它只支援 CSS 2.1,不支援現代 CSS 功能,例如 flexbox 和 grid。

座標計算問題

PDFSharp 的 GDI+ 方法意味著您必須

  • 為每個元素計算精確的 X,Y 位置
  • 手動追蹤頁面溢出的內容高度
  • 自行處理換行和文字測量
  • 以邊框計算逐格繪製表格
  • 使用手動分頁功能管理多頁文件

PDFSharp 的架構需要對使用座標定位有深入的了解,因此在建立複雜的佈局時經常會遇到挑戰。

PDFSharp與IronPDF的比較

特點 PDFSharp IronPDF
執照 MIT (免費) 商業的
HTML 至 PDF 支援 有 (HTML5/CSS3 支援)
現代 CSS 支援 無 (僅限 CSS 2.1) 是 (完整 CSS3)
文件撰寫 基於座標的繪圖 HTML/CSS 範本
佈局系統 手動 X,Y 定位 CSS Flow/Flexbox/Grid
分頁說明 手動計算 自動 + CSS 控制
表格 單獨繪製單元 HTML <table>
風格 基於程式碼的字型/顏色 CSS 樣式表
文件 API 低階(需要座標) 高階(簡化 API)
更新 不經常 常規

IronPDF 在 HTML 文件需要完全忠實地轉換為 PDF 的場合中大放異彩。 此 .NET 函式庫支援 HTML5 與 CSS3,可確保符合現代網路標準。 它的原生 HTML-to-PDF 功能意味著開發人員可以利用現有的網頁內容或使用當代網頁工具設計的範本。

對於計畫在 2025 年和 2026 年之前採用 .NET 10 和 C# 14 的團隊而言,IronPDF 提供了一種現代化的方法,可以省去坐標計算,同時充分利用網路開發技能。


開始之前

先決條件

  1. .NET環境: .NET Framework 4.6.2+ 或.NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet存取權限:能夠安裝NuGet套件
  3. IronPDF許可證:請從IronPDF取得您的許可證密鑰。

NuGet 套件變更

# Remove PDFSharp
dotnet remove package PdfSharp
dotnet remove package PdfSharp-wpf
dotnet remove package PdfSharp.Charting

# Add IronPDF
dotnet add package IronPdf
# Remove PDFSharp
dotnet remove package PdfSharp
dotnet remove package PdfSharp-wpf
dotnet remove package PdfSharp.Charting

# Add IronPDF
dotnet add package IronPdf
SHELL

授權組態

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
$vbLabelText   $csharpLabel

辨識PDFSharp使用方式

# Find allPDFSharpusages in your codebase
grep -r "PdfSharp\|XGraphics\|XFont\|XBrush\|XPen" --include="*.cs" .
# Find allPDFSharpusages in your codebase
grep -r "PdfSharp\|XGraphics\|XFont\|XBrush\|XPen" --include="*.cs" .
SHELL

完整的 API 參考資料

命名空間變更

// Before: PDFSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;
// Before: PDFSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using PdfSharp.Pdf.IO;

// After: IronPDF
using IronPdf;
using IronPdf.Editing;
Imports IronPdf
Imports IronPdf.Editing
$vbLabelText   $csharpLabel

核心 API 對應

PDFSharp API IronPDF API
new PdfDocument() ChromePdfRenderer.RenderHtmlAsPdf()
document.AddPage() 自動化
XGraphics.FromPdfPage() 不需要
XGraphics.DrawString() HTML <p>, <h1> 等。
XGraphics.DrawImage() HTML <img> 標籤
XFont CSS font-family, font-size
XBrush, XPen CSS 顏色/邊框
document.Save() pdf.SaveAs()
PdfReader.Open() PdfDocument.FromFile()

程式碼遷移範例

範例 1:HTML 到 PDF 的轉換

之前 (PDFSharp):

// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        //PDFSharpdoes not have built-inHTML 至 PDFconversion
        // You need to manually parse HTML and render content
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 12);

        // 手動的 text rendering (no HTML support)
        gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black,
            new XRect(0, 0, page.Width, page.Height),
            XStringFormats.TopLeft);

        document.Save("output.pdf");
    }
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        //PDFSharpdoes not have built-inHTML 至 PDFconversion
        // You need to manually parse HTML and render content
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 12);

        // 手動的 text rendering (no HTML support)
        gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black,
            new XRect(0, 0, page.Width, page.Height),
            XStringFormats.TopLeft);

        document.Save("output.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Imports System

Module Program
    Sub Main()
        ' PDFSharp does not have built-in HTML to PDF conversion
        ' You need to manually parse HTML and render content
        Dim document As New PdfDocument()
        Dim page As PdfPage = document.AddPage()
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
        Dim font As New XFont("Arial", 12)

        ' Manual text rendering (no HTML support)
        gfx.DrawString("Hello from PDFSharp", font, XBrushes.Black, New XRect(0, 0, page.Width, page.Height), XStringFormats.TopLeft)

        document.Save("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

After (IronPDF):

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

class Program
{
    static void Main()
    {
        //IronPDFhas nativeHTML 至 PDFrendering
        var renderer = new ChromePdfRenderer();

        string html = "<h1>Hello from IronPDF</h1><p>EasyHTML 至 PDFconversion</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        //IronPDFhas nativeHTML 至 PDFrendering
        var renderer = new ChromePdfRenderer();

        string html = "<h1>Hello from IronPDF</h1><p>EasyHTML 至 PDFconversion</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);

        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        ' IronPDF has native HTML to PDF rendering
        Dim renderer As New ChromePdfRenderer()

        Dim html As String = "<h1>Hello from IronPDF</h1><p>Easy HTML to PDF conversion</p>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)

        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

本範例強調兩個函式庫最顯著的差異。PDFSharp明確指出它"沒有內建的 HTML 到 PDF 轉換"——您必須手動建立一個 PdfDocument,添加一個 PdfPage,獲取一個 XGraphics 對象,創建一個 @@--CODE-19143--@@,並使用 @@--CODE-19144--@@ 與 @@--CODE-19145--@@ 座標。

IronPDF 透過 ChromePdfRenderer 提供原生 HTML 到 PDF 的渲染。 RenderHtmlAsPdf() 方法接受 HTML 字串,並在內部使用 Chromium 引擎進行轉換。IronPDF可輕鬆將 HTML 檔案轉換為 PDF,並保留 HTML5 和 CSS3 定義的所有樣式,無需進行坐標計算。 請參閱 HTML to PDF 文件,以瞭解全面的範例。

範例 2:將文字/水印新增至現有的 PDF

之前 (PDFSharp):

// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Open existing PDF
        PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
        PdfPage page = document.Pages[0];

        // Get graphics object
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 20, XFontStyle.Bold);

        // Draw text at specific position
        gfx.DrawString("Watermark Text", font, XBrushes.Red,
            new XPoint(200, 400));

        document.Save("modified.pdf");
    }
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Open existing PDF
        PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);
        PdfPage page = document.Pages[0];

        // Get graphics object
        XGraphics gfx = XGraphics.FromPdfPage(page);
        XFont font = new XFont("Arial", 20, XFontStyle.Bold);

        // Draw text at specific position
        gfx.DrawString("Watermark Text", font, XBrushes.Red,
            new XPoint(200, 400));

        document.Save("modified.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Pdf.IO
Imports PdfSharp.Drawing
Imports System

Module Program
    Sub Main()
        ' Open existing PDF
        Dim document As PdfDocument = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify)
        Dim page As PdfPage = document.Pages(0)

        ' Get graphics object
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
        Dim font As New XFont("Arial", 20, XFontStyle.Bold)

        ' Draw text at specific position
        gfx.DrawString("Watermark Text", font, XBrushes.Red, New XPoint(200, 400))

        document.Save("modified.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

After (IronPDF):

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

class Program
{
    static void Main()
    {
        // Open existing PDF
        var pdf = PdfDocument.FromFile("existing.pdf");

        // Add text stamp/watermark
        var textStamper = new TextStamper()
        {
            Text = "Watermark Text",
            FontSize = 20,
            Color = IronSoftware.Drawing.Color.Red,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("modified.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;
using System;

class Program
{
    static void Main()
    {
        // Open existing PDF
        var pdf = PdfDocument.FromFile("existing.pdf");

        // Add text stamp/watermark
        var textStamper = new TextStamper()
        {
            Text = "Watermark Text",
            FontSize = 20,
            Color = IronSoftware.Drawing.Color.Red,
            VerticalAlignment = VerticalAlignment.Middle,
            HorizontalAlignment = HorizontalAlignment.Center
        };

        pdf.ApplyStamp(textStamper);
        pdf.SaveAs("modified.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing
Imports System

Module Program
    Sub Main()
        ' Open existing PDF
        Dim pdf = PdfDocument.FromFile("existing.pdf")

        ' Add text stamp/watermark
        Dim textStamper = New TextStamper() With {
            .Text = "Watermark Text",
            .FontSize = 20,
            .Color = IronSoftware.Drawing.Color.Red,
            .VerticalAlignment = VerticalAlignment.Middle,
            .HorizontalAlignment = HorizontalAlignment.Center
        }

        pdf.ApplyStamp(textStamper)
        pdf.SaveAs("modified.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

PDFSharp 需要使用 @@--CODE-19148--@@ 開啟 PDF,指定 @@--CODE-19149--@@,存取頁面,建立 @@--CODE-19150--@@ 對象,建立帶有樣式的 @@--CODE-19151--@@,並使用 @@--CODE-19152--@@ 搭配指定精確 X、Y 座標 (200, 400) 的 @@--CODE-19153--@@。

IronPDF 簡化了這個過程,它使用 @@--CODE-19154--@@、一個 @@--CODE-19155--@@ 對象,具有聲明性屬性(@@--CODE-19156--@@、@@--CODE-19157--@@、@@--CODE-19158--@@、@@--CODE-19159--@@、@@--CODE-19160--@@)和 @@--CODE-19161--@@。 不需要坐標計算 - 只需指定對齊方式,IronPDF 即可處理定位。 請注意,IronPdf.Editing 命名空間是實現蓋章功能所必需的。

範例 3:使用圖片建立 PDF

之前 (PDFSharp):

// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Create new PDF document
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Load and draw image
        XImage image = XImage.FromFile("image.jpg");

        // Calculate size to fit page
        double width = 200;
        double height = 200;

        gfx.DrawImage(image, 50, 50, width, height);

        // Add text
        XFont font = new XFont("Arial", 16);
        gfx.DrawString("Image in PDF", font, XBrushes.Black,
            new XPoint(50, 270));

        document.Save("output.pdf");
    }
}
// NuGet: Install-Package PdfSharp
using PdfSharp.Pdf;
using PdfSharp.Drawing;
using System;

class Program
{
    static void Main()
    {
        // Create new PDF document
        PdfDocument document = new PdfDocument();
        PdfPage page = document.AddPage();
        XGraphics gfx = XGraphics.FromPdfPage(page);

        // Load and draw image
        XImage image = XImage.FromFile("image.jpg");

        // Calculate size to fit page
        double width = 200;
        double height = 200;

        gfx.DrawImage(image, 50, 50, width, height);

        // Add text
        XFont font = new XFont("Arial", 16);
        gfx.DrawString("Image in PDF", font, XBrushes.Black,
            new XPoint(50, 270));

        document.Save("output.pdf");
    }
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Imports System

Module Program
    Sub Main()
        ' Create new PDF document
        Dim document As New PdfDocument()
        Dim page As PdfPage = document.AddPage()
        Dim gfx As XGraphics = XGraphics.FromPdfPage(page)

        ' Load and draw image
        Dim image As XImage = XImage.FromFile("image.jpg")

        ' Calculate size to fit page
        Dim width As Double = 200
        Dim height As Double = 200

        gfx.DrawImage(image, 50, 50, width, height)

        ' Add text
        Dim font As New XFont("Arial", 16)
        gfx.DrawString("Image in PDF", font, XBrushes.Black, New XPoint(50, 270))

        document.Save("output.pdf")
    End Sub
End Module
$vbLabelText   $csharpLabel

After (IronPDF):

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

class Program
{
    static void Main()
    {
        // Create PDF from HTML with image
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Image in PDF</h1>
            <img src='image.jpg' style='width:200px; height:200px;' />
            <p>Easy image embedding with HTML</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");

        // Alternative: Add image to existing PDF
        var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>");
        var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg"))
        {
            VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
        };
        existingPdf.ApplyStamp(imageStamper);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Create PDF from HTML with image
        var renderer = new ChromePdfRenderer();

        string html = @"
            <h1>Image in PDF</h1>
            <img src='image.jpg' style='width:200px; height:200px;' />
            <p>Easy image embedding with HTML</p>";

        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");

        // Alternative: Add image to existing PDF
        var existingPdf = new ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>");
        var imageStamper = new IronPdf.Editing.ImageStamper(new Uri("image.jpg"))
        {
            VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
        };
        existingPdf.ApplyStamp(imageStamper);
    }
}
Imports IronPdf
Imports System

Class Program
    Shared Sub Main()
        ' Create PDF from HTML with image
        Dim renderer = New ChromePdfRenderer()

        Dim html As String = "
            <h1>Image in PDF</h1>
            <img src='image.jpg' style='width:200px; height:200px;' />
            <p>Easy image embedding with HTML</p>"

        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")

        ' Alternative: Add image to existing PDF
        Dim existingPdf = New ChromePdfRenderer().RenderHtmlAsPdf("<h1>Document</h1>")
        Dim imageStamper = New IronPdf.Editing.ImageStamper(New Uri("image.jpg")) With {
            .VerticalAlignment = IronPdf.Editing.VerticalAlignment.Top
        }
        existingPdf.ApplyStamp(imageStamper)
    End Sub
End Class
$vbLabelText   $csharpLabel

PDFSharp 需要建立一個新的 PdfDocument,新增一個 PdfPage,取得 XGraphics,從檔案載入一個 XImage,計算寬度與高度,使用 @@506-19167-- 191670 19167,0 19167,0 19167020 200),然後單獨使用 DrawString() 新增文字。

IronPDF 使用帶有 <img> 標籤的標準 HTML 和 CSS 樣式 (style=&#39;width:200px; 高度:200px;&#39;)。 不需要坐標計算-CSS 處理佈局。IronPDF也提供了 ImageStamper,用於在現有 PDF 中新增具有宣告式對齊屬性的影像。 請參閱我們的 教學,瞭解更多資訊。


關鍵遷移注意事項

範式轉換:坐標轉換為 HTML/CSS

最顯著的改變是從基於坐標的繪圖轉換到 HTML/CSS:

// PDFSharp: 手動的 positioning nightmare
gfx.DrawString("Invoice", titleFont, XBrushes.Black, new XPoint(50, 50));
gfx.DrawString("Customer: John", bodyFont, XBrushes.Black, new XPoint(50, 80));

// IronPDF: Let CSS handle layout
var html = @"
<div style='padding: 50px;'>
    <h1>Invoice</h1>
    <p>Customer: John</p>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
// PDFSharp: 手動的 positioning nightmare
gfx.DrawString("Invoice", titleFont, XBrushes.Black, new XPoint(50, 50));
gfx.DrawString("Customer: John", bodyFont, XBrushes.Black, new XPoint(50, 80));

// IronPDF: Let CSS handle layout
var html = @"
<div style='padding: 50px;'>
    <h1>Invoice</h1>
    <p>Customer: John</p>
</div>";
var pdf = renderer.RenderHtmlAsPdf(html);
Imports PdfSharp.Drawing
Imports IronPdf

' PDFSharp: 手動的 positioning nightmare
gfx.DrawString("Invoice", titleFont, XBrushes.Black, New XPoint(50, 50))
gfx.DrawString("Customer: John", bodyFont, XBrushes.Black, New XPoint(50, 80))

' IronPDF: Let CSS handle layout
Dim html As String = "
<div style='padding: 50px;'>
    <h1>Invoice</h1>
    <p>Customer: John</p>
</div>"
Dim pdf = renderer.RenderHtmlAsPdf(html)
$vbLabelText   $csharpLabel

字體遷移

// PDFSharp: XFont objects
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Times New Roman", 12);

// IronPDF: CSS font properties
var html = @"
<style>
    h1 { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; }
    p { font-family: 'Times New Roman', serif; font-size: 12px; }
</style>";
// PDFSharp: XFont objects
var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
var bodyFont = new XFont("Times New Roman", 12);

// IronPDF: CSS font properties
var html = @"
<style>
    h1 { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; }
    p { font-family: 'Times New Roman', serif; font-size: 12px; }
</style>";
Dim titleFont As New XFont("Arial", 24, XFontStyle.Bold)
Dim bodyFont As New XFont("Times New Roman", 12)

Dim html As String = "
<style>
    h1 { font-family: Arial, sans-serif; font-size: 24px; font-weight: bold; }
    p { font-family: 'Times New Roman', serif; font-size: 12px; }
</style>"
$vbLabelText   $csharpLabel

文件載入變更

// PDFSharp: PdfReader.Open()
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("existing.pdf");
// PDFSharp: PdfReader.Open()
PdfDocument document = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify);

// IronPDF: PdfDocument.FromFile()
var pdf = PdfDocument.FromFile("existing.pdf");
Imports PdfSharp
Imports IronPDF

' PDFSharp: PdfReader.Open()
Dim document As PdfDocument = PdfReader.Open("existing.pdf", PdfDocumentOpenMode.Modify)

' IronPDF: PdfDocument.FromFile()
Dim pdf = PdfDocument.FromFile("existing.pdf")
$vbLabelText   $csharpLabel

儲存方法變更

// PDFSharp: document.Save()
document.Save("output.pdf");

// IronPDF: pdf.SaveAs()
pdf.SaveAs("output.pdf");
// PDFSharp: document.Save()
document.Save("output.pdf");

// IronPDF: pdf.SaveAs()
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

頁面存取變更

// PDFSharp: document.Pages[0]
PdfPage page = document.Pages[0];

// IronPDF:自動化page handling or pdf.Pages[0]
// Pages are created automatically from HTML content
// PDFSharp: document.Pages[0]
PdfPage page = document.Pages[0];

// IronPDF:自動化page handling or pdf.Pages[0]
// Pages are created automatically from HTML content
' PDFSharp: document.Pages(0)
Dim page As PdfPage = document.Pages(0)

' IronPDF:自動化page handling or pdf.Pages(0)
' Pages are created automatically from HTML content
$vbLabelText   $csharpLabel

遷移後的新功能

遷移到IronPDF之後,您將獲得PDFSharp無法提供的功能:

原生 HTML 至 PDF

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>");
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Modern Web Content</h1>")
$vbLabelText   $csharpLabel

URL 至 PDF

var pdf = renderer.RenderUrlAsPdf("https://example.com");
var pdf = renderer.RenderUrlAsPdf("https://example.com");
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
$vbLabelText   $csharpLabel

PDF 合併

var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
$vbLabelText   $csharpLabel

使用 HTML 的水印

pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>");
pdf.ApplyWatermark("<h2 style='color:red;'>CONFIDENTIAL</h2>")
$vbLabelText   $csharpLabel

功能比較摘要

特點 PDFSharp IronPDF
基於座標的繪圖 ✗(使用 HTML)
HTML 至 PDF
CSS3 支援
Flexbox/Grid 佈局
文字燙印 手冊 XGraphics TextStamper
圖像沖印 手冊 XImage ImageStamper
合併 PDF 手動的
URL 至 PDF
現代網路渲染 Chromium 引擎
自動分頁

遷移清單

預遷移

  • 清點程式碼庫中所有PDFSharp的使用情況
  • 識別正在產生的文件類型(報告、發票、證書)
  • 注意任何自訂圖形或繪圖操作
  • 規劃IronPDF許可證密鑰儲存(建議使用環境變數)
  • 先使用IronPDF試用許可證進行測試

套件變更

  • 刪除 PdfSharp NuGet 套件
  • 若已使用,請移除 PdfSharp-wpf NuGet 套件
  • 若已使用,請移除 PdfSharp.Charting NuGet 套件
  • 安裝 IronPdf NuGet 套件:dotnet add package IronPdf

程式碼變更

  • 更新命名空間導入(using PdfSharp.Pdf;using IronPdf;
  • 新增 using IronPdf.Editing; 以啟用蓋章功能
  • 將基於座標的佈局轉換為 HTML/CSS
  • XFont 替換為 CSS 字型屬性
  • XBrush/XPen 替換為 CSS 顏色/邊框
  • XGraphics.DrawString() 替換為 HTML 文字元素
  • XGraphics.DrawImage() 替換為 HTML <img> 標籤
  • PdfReader.Open() 替換為 PdfDocument.FromFile()
  • document.Save() 替換為 pdf.SaveAs() 將表格繪製程式碼轉換為 HTML 表格

後遷移

  • 產生PDF檔案的可視化比較
  • 測試多頁文檔
  • 驗證字體渲染
  • 依需求新增功能(HTML 轉 PDF、合併、浮水印)

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我