跳過到頁腳內容
MIGRATION GUIDES

How to Migrate from PDFPrinting.NET to IronPDF in C#

從 PDFPrinting.NET 遷移到 IronPDF 可以將您的 PDF 功能從僅列印庫擴展到處理完整 PDF 生命週期的綜合解決方案,包括建立、操作、提取、安全性和列印。 本指南提供了一條完整的、循序漸進的遷移路徑,在保留您現有列印工作流程的同時,增加了 PDF 生成、HTML 轉換和跨平台支援功能。

為什麼要從 PDFPrinting.NET 遷移到 IronPDF

了解 PDFPrinting.NET

PDFPrinting.NET 是一款專業的解決方案,在靜默 PDF 列印方面提供了無與倫比的簡單性和高效性。 PDFPrinting.NET 主要在 Windows 生態系統中運行,是一個商業庫,旨在專門滿足需要在應用程式中整合 PDF 列印功能的開發人員的需求。 PDFPrinting.NET 是一款專注於靜默、穩定地列印 PDF 的專用工具,它在簡化以編程方式列印文件而無需用戶幹預這一通常很複雜的任務方面找到了自己的定位。

PDFPrinting.NET 最顯著的優勢之一是能夠靜默列印文件。 它繞過了通常的列印對話框,實現了完全自動化的工作流程,這對於用戶互動要求極低的應用程式至關重要。

僅限列印的限制

PDFPrinting.NET 的一個明顯限制在於它只處理 PDF 處理的列印方面。 它無法建立、修改或操作 PDF 文檔,這限制了其對需要完整 PDF 文檔生命週期解決方案的開發人員的實用性:

1.僅列印:不能建立、編輯或操作 PDF 文件。

2.僅限 Windows:與 Windows 列印基礎架構綁定-不支援 Linux/macOS。 由於依賴 Windows 列印基礎架構,其適用範圍僅限於 Windows 環境,從而限制了跨平台可用性。

3.無法產生 PDF:無法將 HTML、URL 或資料轉換為 PDF。

4.不支援文件操作:無法合併、分割、新增浮水印或保護 PDF 文件。

5.無法提取文字:無法讀取或提取 PDF 中的內容。

6.不支援表單處理:無法填寫或展平 PDF 表單。

PDFPrinting.NET 與 IronPDF 的比較

特徵 PDFPrinting.NET IronPDF
主要功能 靜默 PDF 列印 全流程處理(建立、編輯、列印)
平台支援 僅限 Windows 系統 跨平台
PDF建立/編輯功能 是的
HTML 轉 PDF 是的
適用於自動化工作流程 高的 高的
其他依賴項 依賴 Windows 印表機。 用於渲染的內部瀏覽器引擎
靜默列印 是的 是的
文字擷取 不支援 全力支持
授權 商業的 商業的

IronPDF 透過解決 PDF 處理的完整生命週期,提供了一個更全面的解決方案。 它方便用戶創建、編輯、轉換和列印 PDF 文檔,並透過統一的 API 為開發者提供一整套功能。 與 PDFPrinting.NET 不同,IronPDF 可以跨不同平台部署,因此對於在各種環境下運行的應用程式來說,它是一個用途廣泛的選擇。

對於計劃在 2025 年和 2026 年採用 .NET 10 和 C# 14 的團隊,IronPDF 提供了一個完整的 PDF 解決方案,可在 Windows、Linux 和 macOS 環境下運作。


開始之前

先決條件

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

NuGet 套件變更

# Remove PDFPrinting.NET
dotnet remove package PDFPrinting.NET

# Install IronPDF
dotnet add package IronPdf
# Remove PDFPrinting.NET
dotnet remove package PDFPrinting.NET

# Install 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";
$vbLabelText   $csharpLabel

識別 PDFPrinting.NET 的使用情況

# Find PDFPrinting.NET usage
grep -r "PDFPrinting\|PDFPrinter" --include="*.cs" .

# Find print-related code
grep -r "\.Print(\|PrinterName\|GetPrintDocument" --include="*.cs" .
# Find PDFPrinting.NET usage
grep -r "PDFPrinting\|PDFPrinter" --include="*.cs" .

# Find print-related code
grep -r "\.Print(\|PrinterName\|GetPrintDocument" --include="*.cs" .
SHELL

完整 API 參考

命名空間變更

// Before: PDFPrinting.NET
using PDFPrinting.NET;
using PDFPrintingNET;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Printing;
// Before: PDFPrinting.NET
using PDFPrinting.NET;
using PDFPrintingNET;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
using IronPdf.Printing;
$vbLabelText   $csharpLabel

核心類別映射

PDFPrinting.NET IronPDF 筆記
PDFPrinter PdfDocument 核心 PDF 對象
HtmlToPdfConverter ChromePdfRenderer PDF生成
WebPageToPdfConverter ChromePdfRenderer URL轉換
列印設定屬性 PrintSettings 列印配置

印刷方法映射

PDFPrinting.NET IronPDF 筆記
printer.Print(filePath) pdf.Print() 列印到預設印表機
printer.Print(path, printerName) pdf.Print(printerName) 列印到指定印表機
printer.PrinterName = "..." pdf.Print("...") 指定印表機
printer.GetPrintDocument(path) pdf.GetPrintDocument() 取得列印文檔
printer.Copies = n printSettings.NumberOfCopies = n 拷貝數
printer.Duplex = true printSettings.DuplexMode = Duplex.Vertical 雙面列印
printer.CollatePages = true printSettings.Collate = true 整理

PDFPrinting.NET 中不提供新功能

IronPDF 功能 描述
renderer.RenderHtmlAsPdf(html) HTML 轉 PDF
renderer.RenderUrlAsPdf(url) URL 轉 PDF
PdfDocument.Merge(pdfs) 合併多個PDF文件
pdf.ApplyWatermark(html) 添加浮水印
pdf.SecuritySettings.UserPassword 密碼保護
pdf.ExtractAllText() 文字擷取

程式碼遷移範例

範例 1:HTML 轉 PDF

之前(PDFPrinting.NET):

// NuGet: Install-Package PDFPrinting.NET
using PDFPrinting.NET;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        string html = "<html><body><h1>Hello World</h1></body></html>";
        converter.ConvertHtmlToPdf(html, "output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
// NuGet: Install-Package PDFPrinting.NET
using PDFPrinting.NET;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        string html = "<html><body><h1>Hello World</h1></body></html>";
        converter.ConvertHtmlToPdf(html, "output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
$vbLabelText   $csharpLabel

(IronPDF 之後):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        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();
        string html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
        Console.WriteLine("PDF created successfully");
    }
}
$vbLabelText   $csharpLabel

PDFPrinting.NET 使用HtmlToPdfConverterConvertHtmlToPdf(html, outputPath)將渲染和保存合併到一個呼叫中。 IronPDF 使用ChromePdfRendererRenderHtmlAsPdf()函數,該函數傳回一個PdfDocument對象,然後您可以使用SaveAs()函數將其儲存。 這種分離提供了更大的靈活性——您可以在保存之前對 PDF 進行操作(添加浮水印、與其他文件合併、添加安全措施)。

IronPDF 提供 HTML 轉 PDF 等功能,使開發人員能夠將 Web 內容渲染為 PDF,從而利用現代 Web 技術建立文件。 IronPDF 利用瀏覽器引擎,能夠精確地將網頁文件的樣式和渲染效果複製到 PDF 中。 請參閱HTML 轉 PDF 文件以取得完整範例。

範例 2:URL 轉 PDF

之前(PDFPrinting.NET):

// NuGet: Install-Package PDFPrinting.NET
using PDFPrinting.NET;
using System;

class Program
{
    static void Main()
    {
        var converter = new WebPageToPdfConverter();
        string url = "https://www.example.com";
        converter.Convert(url, "webpage.pdf");
        Console.WriteLine("PDF from URL created successfully");
    }
}
// NuGet: Install-Package PDFPrinting.NET
using PDFPrinting.NET;
using System;

class Program
{
    static void Main()
    {
        var converter = new WebPageToPdfConverter();
        string url = "https://www.example.com";
        converter.Convert(url, "webpage.pdf");
        Console.WriteLine("PDF from URL created successfully");
    }
}
$vbLabelText   $csharpLabel

(IronPDF 之後):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string url = "https://www.example.com";
        var pdf = renderer.RenderUrlAsPdf(url);
        pdf.SaveAs("webpage.pdf");
        Console.WriteLine("PDF from URL created successfully");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

PDFPrinting.NET 使用WebPageToPdfConverterConvert(url, outputPath) 。 IronPDF 使用相同的ChromePdfRenderer類別及其RenderUrlAsPdf()方法。 請注意,IronPDF 對 HTML 字串和 URL 使用同一個渲染器類,當您需要這兩種功能時,可以簡化您的程式碼。 了解更多信息,請閱讀我們的教程

範例 3:頁首和頁尾

之前(PDFPrinting.NET):

// NuGet: Install-Package PDFPrinting.NET
using PDFPrinting.NET;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.HeaderText = "Company Report";
        converter.FooterText = "Page {page} of {total}";
        string html = "<html><body><h1>Document Content</h1></body></html>";
        converter.ConvertHtmlToPdf(html, "report.pdf");
        Console.WriteLine("PDF with headers/footers created");
    }
}
// NuGet: Install-Package PDFPrinting.NET
using PDFPrinting.NET;
using System;

class Program
{
    static void Main()
    {
        var converter = new HtmlToPdfConverter();
        converter.HeaderText = "Company Report";
        converter.FooterText = "Page {page} of {total}";
        string html = "<html><body><h1>Document Content</h1></body></html>";
        converter.ConvertHtmlToPdf(html, "report.pdf");
        Console.WriteLine("PDF with headers/footers created");
    }
}
$vbLabelText   $csharpLabel

(IronPDF 之後):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        };
        string html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("report.pdf");
        Console.WriteLine("PDF with headers/footers created");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Company Report</div>"
        };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
        {
            HtmlFragment = "<div style='text-align:center'>Page {page} of {total-pages}</div>"
        };
        string html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("report.pdf");
        Console.WriteLine("PDF with headers/footers created");
    }
}
$vbLabelText   $csharpLabel

PDFPrinting.NET 使用簡單的字串屬性HeaderTextFooterText ,其中佔位符分別為{page}{total} 。 IronPDF 使用HtmlHeaderFooter對象,其HtmlFragment屬性可以接受完整的 HTML,從而允許使用 CSS 進行豐富的樣式設定。 請注意佔位符語法的變化:PDFPrinting.NET 使用{total} ,而 IronPDF 則使用{total-pages}


關鍵遷移說明

佔位符語法更改

不同庫的頁首/頁尾佔位符有所不同:

// PDFPrinting.NET placeholders
"Page {page} of {total}"

// IronPDF placeholders
"Page {page} of {total-pages}"
// PDFPrinting.NET placeholders
"Page {page} of {total}"

// IronPDF placeholders
"Page {page} of {total-pages}"
$vbLabelText   $csharpLabel

先加載後列印圖案

PDFPrinting.NET 直接傳遞文件路徑; IronPDF 首先載入:

// PDFPrinting.NET: Direct path to Print()
printer.Print("document.pdf");

// IronPDF: Load first, then operate
var pdf = PdfDocument.FromFile("document.pdf");
pdf.Print();
// PDFPrinting.NET: Direct path to Print()
printer.Print("document.pdf");

// IronPDF: Load first, then operate
var pdf = PdfDocument.FromFile("document.pdf");
pdf.Print();
$vbLabelText   $csharpLabel

列印設定遷移

PDFPrinting.NET 使用屬性; IronPDF 使用設定對象:

// PDFPrinting.NET: Properties on printer object
printer.Copies = 2;
printer.Duplex = true;

// IronPDF: Settings object
var settings = new PrintSettings
{
    NumberOfCopies = 2,
    DuplexMode = System.Drawing.Printing.Duplex.Vertical
};
pdf.Print(settings);
// PDFPrinting.NET: Properties on printer object
printer.Copies = 2;
printer.Duplex = true;

// IronPDF: Settings object
var settings = new PrintSettings
{
    NumberOfCopies = 2,
    DuplexMode = System.Drawing.Printing.Duplex.Vertical
};
pdf.Print(settings);
$vbLabelText   $csharpLabel

HTML 標題與文字標題

// PDFPrinting.NET: Simple text
converter.HeaderText = "Company Report";

// IronPDF: 完整 HTML with styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center'>Company Report</div>"
};
// PDFPrinting.NET: Simple text
converter.HeaderText = "Company Report";

// IronPDF: 完整 HTML with styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div style='text-align:center'>Company Report</div>"
};
$vbLabelText   $csharpLabel

遷移後的新功能

遷移到 IronPDF 後,您將獲得 PDFPrinting.NET 無法提供的功能:

PDF合併

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

水印

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

密碼保護

pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
$vbLabelText   $csharpLabel

文字擷取

string text = pdf.ExtractAllText();
string text = pdf.ExtractAllText();
$vbLabelText   $csharpLabel

生成後列印工作流程

使用 IronPDF,您可以在一個工作流程中產生 PDF 檔案並列印:

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1>");
pdf.Print("Invoice Printer");
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice</h1>");
pdf.Print("Invoice Printer");
$vbLabelText   $csharpLabel

跨平台列印

PDFPrinting.NET 僅適用於 Windows 系統。 IronPDF支援跨平台使用:

視窗

pdf.Print("HP LaserJet");
pdf.Print("HP LaserJet");
$vbLabelText   $csharpLabel

Linux

// Requires CUPS (Common Unix Printing System)
// Install: apt-get install cups
pdf.Print("HP_LaserJet");  // CUPS uses underscores instead of spaces
// Requires CUPS (Common Unix Printing System)
// Install: apt-get install cups
pdf.Print("HP_LaserJet");  // CUPS uses underscores instead of spaces
$vbLabelText   $csharpLabel

macOS

pdf.Print("HP LaserJet");
pdf.Print("HP LaserJet");
$vbLabelText   $csharpLabel

功能對比總結

特徵 PDFPrinting.NET IronPDF
靜默列印
列印設定
HTML 轉 PDF
PDF檔案的URL
頁首/頁尾 基本的 完整 HTML
合併PDF
拆分PDF
水印
文字擷取
密碼保護
跨平台

遷移清單

遷移前

  • 清點程式碼庫中所有 PDFPrinting.NET 的使用情況
  • 記錄目前使用的所有印表機名稱
  • 請注意所有列印設定配置
  • 確定是否需要跨平台支持
  • 規劃 IronPDF 許可證密鑰儲存(建議使用環境變數)
  • 先使用 IronPDF 試用許可證進行測試

軟體包變更

  • 刪除PDFPrinting.NET NuGet 包 安裝IronPdf NuGet 套件: dotnet add package IronPdf

程式碼更改

  • 更新命名空間匯入
  • HtmlToPdfConverter替換為ChromePdfRenderer
  • WebPageToPdfConverter替換為ChromePdfRenderer
  • ConvertHtmlToPdf(html, path)替換為RenderHtmlAsPdf(html).SaveAs(path)
  • Convert(url, path)替換為RenderUrlAsPdf(url).SaveAs(path)
  • 將頁首/頁尾從HeaderText / FooterText更新為HtmlHeader / HtmlFooter
  • 更新佔位符語法( {total}{total-pages}
  • 將列印呼叫轉換為先載入後列印模式
  • 將列印設定更新至PrintSettings對象

移民後

  • 在所有目標平台上進行測試列印
  • 驗證頁首/頁尾渲染效果
  • 考慮為動態文件添加 PDF 生成功能
  • 根據需要新增功能(合併、浮水印、安全)。

Curtis Chau
技術撰稿人

Curtis Chau 擁有電腦科學學士學位(卡爾頓大學),專長於前端開發,精通 Node.js、TypeScript、JavaScript 和 React。Curtis 對製作直覺且美觀的使用者介面充滿熱情,他喜歡使用現代化的架構,並製作結構良好且視覺上吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 也有濃厚的興趣,他喜歡探索整合硬體與軟體的創新方式。在空閒時間,他喜歡玩遊戲和建立 Discord bots,將他對技術的熱愛與創意結合。