跳至頁尾內容
移民指南

如何在 C# 中將 PDFFilePrint 移轉到 IronPDF

從 PDF文件列印 遷移到 IronPDF 會將您的 .NET PDF 工作流程從一個功能有限的、以列印為中心的實用程式轉變為全面的 PDF 庫,該庫在一個統一的 API 中處理建立、操作和列印。 本指南提供了一個完整的、逐步的遷移路徑,消除了命令列依賴性,同時增加了 PDF文件列印 無法提供的 PDF 產生和操作功能。

為什麼要從 PDF文件列印 遷移到 IronPDF

了解 PDF 文件列印

PDFFilePrint 是一款專為從 C# 應用程式列印 PDF 檔案而設計的實用工具。 雖然它能很好地完成特定的 PDF 列印任務,但它的功能僅限於文件處理的一個方面。 PDF文件列印 的主要吸引力在於其簡潔性——專注於為 PDF 文件提供列印體驗。 然而,這種狹隘的關注點卻為全面的文件管理系統帶來了很大的限制。

PDF文件列印的關鍵限制

1.僅列印功能: PDF文件列印 的功能僅限於列印。 它缺少創建或修改 PDF 文件的功能,這對於更全面的文件管理系統而言是一個限制。

2.命令列依賴性: PDF文件列印 通常依賴Process.Start()呼叫進行命令列操作,因此可能無法滿足需要更強大的 API 的應用程式無縫整合的需求。

3.僅限 Windows:由於它嚴重依賴 Windows 列印系統,因此對於使用其他作業系統的環境來說,它可能不是最佳選擇。

4.不支援 .NET 整合:沒有原生 API,沒有 NuGet 包,且在某些使用模式下不支援 IntelliSense。

5.外部進程管理:必須處理進程生命週期、退出程式碼以及從 stdout/stderr 解析錯誤。

6.有限的錯誤處理:偵測錯誤需要解析標準輸出和錯誤流,而不是原生異常。

7.部署複雜性:在命令列使用場景中,必須將 PDFFilePrint.exe 與應用程式捆綁在一起。

8.不支援產生 PDF:無法建立 PDF,只能在命令列模式下列印現有 PDF。

PDF文件列印 與 IronPDF 對比

方面PDF文件列印IronPDF
主要關注點PDF列印全面的 PDF API
類型命令列實用程式/基本庫原生 .NET 函式庫
一體化Process.Start() / 基本 API直接 API 呼叫
PDF列印
PDF 建立有限的✓(HTML、URL、圖片)
PDF 處理✓(合併、拆分、編輯)
跨平台僅限 Windows 系統Windows、Linux、macOS
錯誤處理解析標準輸出/標準錯誤輸出原生異常
智慧感知有限的全力支持
NuGet 套件有限的
文件基本的廣泛的

對於計劃在 2025 年和 2026 年採用 .NET 10 和 C# 14 的團隊,IronPDF 提供了一個全面的基礎,具有跨平台支援和積極的開發,解決了 PDF文件列印 的架構限制。


開始之前

先決條件

  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 PDF文件列印 package (if installed via NuGet)
dotnet remove package PDFFilePrint

# If using command-line PDFFilePrint.exe, remove from deployment
# Delete bundled PDFFilePrint.exe from your project

# Install IronPDF
dotnet add package IronPdf
# Remove PDF文件列印 package (if installed via NuGet)
dotnet remove package PDFFilePrint

# If using command-line PDFFilePrint.exe, remove from deployment
# Delete bundled PDFFilePrint.exe from your project

# 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

識別 PDF 文件列印使用情況

# Find PDF文件列印 references
grep -r "PDFFilePrint\|PDFFile\|CreateFromHtml\|CreateFromUrl" --include="*.cs" .

# Find command-line execution patterns
grep -r "ProcessStartInfo.*pdf\|Process.Start.*print" --include="*.cs" .

# Find batch scripts
find . -name "*.bat" -o -name "*.cmd" | xargs grep -l "PDFFilePrint"
# Find PDF文件列印 references
grep -r "PDFFilePrint\|PDFFile\|CreateFromHtml\|CreateFromUrl" --include="*.cs" .

# Find command-line execution patterns
grep -r "ProcessStartInfo.*pdf\|Process.Start.*print" --include="*.cs" .

# Find batch scripts
find . -name "*.bat" -o -name "*.cmd" | xargs grep -l "PDFFilePrint"
SHELL

完整 API 參考

命名空間變更

// PDFFilePrint
using PDFFilePrint;
using System.Diagnostics; // For command-line usage

// IronPDF
using IronPdf;
using IronPdf.Printing;
// PDFFilePrint
using PDFFilePrint;
using System.Diagnostics; // For command-line usage

// IronPDF
using IronPdf;
using IronPdf.Printing;
$vbLabelText   $csharpLabel

核心類別映射

PDF文件列印IronPDF筆記
new PDFFile()new ChromePdfRenderer()用於建立 PDF
new PDFFile()PdfDocument.FromFile()用於載入現有PDF文件
PDFFilePdfDocument文件對象

PDF產生方法映射

PDF文件列印IronPDF筆記
pdf.CreateFromHtml(html)renderer.RenderHtmlAsPdf(html)HTML 轉 PDF
pdf.CreateFromUrl(url)renderer.RenderUrlAsPdf(url)PDF檔案的URL
pdf.SaveToFile(path)pdf.SaveAs(path)儲存到文件

PDF載入和列印地圖

PDF文件列印IronPDF筆記
pdf.LoadFromFile(path)PdfDocument.FromFile(path)載入現有PDF
pdf.Print(printerName)pdf.Print(printerName)列印到指定印表機
pdf.Print("Default Printer")pdf.Print()列印到預設值

列印設定映射(命令列到 API)

PDF檔案列印標誌IronPDF 列印設定屬性筆記
-printer "Name"PrinterNamestring
-copies NNumberOfCopiesint
-silentShowPrintDialog = false反向邏輯
-pages "1-5"FromPageToPageint
-orientation landscapePaperOrientationPdfPrintOrientation
-duplexDuplexDuplex枚舉
-collateCollatebool

PDF文件列印 中未包含的新功能

IronPDF 功能描述
PdfDocument.Merge()合併多個PDF文件
pdf.CopyPages()提取特定頁面
pdf.ApplyWatermark()添加浮水印
pdf.SecuritySettings密碼保護
pdf.ExtractAllText()提取文字內容
pdf.RasterizeToImageFiles()轉換為影像
pdf.SignWithDigitalSignature()數位簽名

程式碼遷移範例

範例 1:HTML 轉 PDF

之前(PDF文件列印):

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

class Program
{
    static void Main()
    {
        var pdf = new PDFFile();
        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        pdf.CreateFromHtml(htmlContent);
        pdf.SaveToFile("output.pdf");
    }
}
// NuGet: Install-Package PDFFilePrint
using System;
using PDFFilePrint;

class Program
{
    static void Main()
    {
        var pdf = new PDFFile();
        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        pdf.CreateFromHtml(htmlContent);
        pdf.SaveToFile("output.pdf");
    }
}
$vbLabelText   $csharpLabel

(IronPDF 之後):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

根本差別在於 API 模式。 PDF文件列印 使用單一PDFFile類,該類別具有CreateFromHtml()SaveToFile()方法。 IronPDF 將渲染與文件物件分開ChromePdfRenderer處理 HTML 到 PDF 的轉換,並傳回一個PdfDocument對象,然後您可以使用SaveAs()儲存該物件。

這種分離提供了顯著的優勢:您可以在轉換之前配置渲染器的渲染選項,並且可以在儲存之前對傳回的PdfDocument進行操作(新增浮水印、與其他 PDF 合併、新增安全措施)。 有關其他渲染選項,請參閱HTML 轉 PDF 文件

範例 2:URL 轉 PDF

之前(PDF文件列印):

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

class Program
{
    static void Main()
    {
        var pdf = new PDFFile();
        pdf.CreateFromUrl("https://www.example.com");
        pdf.SaveToFile("webpage.pdf");
    }
}
// NuGet: Install-Package PDFFilePrint
using System;
using PDFFilePrint;

class Program
{
    static void Main()
    {
        var pdf = new PDFFile();
        pdf.CreateFromUrl("https://www.example.com");
        pdf.SaveToFile("webpage.pdf");
    }
}
$vbLabelText   $csharpLabel

(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("webpage.pdf");
    }
}
// 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("webpage.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFFilePrint 使用同一個PDFFile類別上的CreateFromUrl() 。 IronPDF 使用ChromePdfRenderer上的專用RenderUrlAsPdf()方法,利用現代 Chromium 引擎來精確渲染複雜的 CSS3、JavaScript 和現代 Web 功能。 渲染品質穩定,與在 Chrome 瀏覽器中看到的效果一致。 了解更多關於URL轉PDF的資訊

範例 3:PDF 列印

之前(PDF文件列印):

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

class Program
{
    static void Main()
    {
        var pdf = new PDFFile();
        pdf.LoadFromFile("document.pdf");
        pdf.Print("Default Printer");
        Console.WriteLine("PDF sent to printer");
    }
}
// NuGet: Install-Package PDFFilePrint
using System;
using PDFFilePrint;

class Program
{
    static void Main()
    {
        var pdf = new PDFFile();
        pdf.LoadFromFile("document.pdf");
        pdf.Print("Default Printer");
        Console.WriteLine("PDF sent to printer");
    }
}
$vbLabelText   $csharpLabel

(IronPDF 之後):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");
        pdf.Print();
        Console.WriteLine("PDF sent to printer");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");
        pdf.Print();
        Console.WriteLine("PDF sent to printer");
    }
}
$vbLabelText   $csharpLabel

這個範例展示了PDF載入和列印方面的基本架構差異。 PDF文件列印 使用new PDFFile() ,然後使用LoadFromFile() ,最後Print(printerName) 。 IronPDF 使用靜態工廠方法PdfDocument.FromFile()直接載入文件,然後使用Print()方法,該方法使用預設印表機(或您可以傳遞印表機名稱)。

關鍵遷移變更:

  • new PDFFile() + LoadFromFile(path)PdfDocument.FromFile(path)
  • Print(&quot;Default Printer&quot;)Print() (預設印表機為自動列印)

對於進階列印設置,IronPDF 提供了一個PrintSettings類別。 有關進階選項,請參閱列印文件


進階列印設定遷移

對於使用 PDF文件列印 命令列標誌的應用程序,以下是如何移轉到 IronPDF 的PrintSettings

// PDF文件列印 command-line approach:
// PDFFilePrint.exe -silent -copies 3 -printer "HP LaserJet" -pages "1-5" "document.pdf"

// IronPDF equivalent:
using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

var settings = new PrintSettings
{
    ShowPrintDialog = false,    // -silent
    NumberOfCopies = 3,         // -copies 3
    PrinterName = "HP LaserJet", // -printer "HP LaserJet"
    FromPage = 1,               // -pages "1-5"
    ToPage = 5
};

pdf.Print(settings);
// PDF文件列印 command-line approach:
// PDFFilePrint.exe -silent -copies 3 -printer "HP LaserJet" -pages "1-5" "document.pdf"

// IronPDF equivalent:
using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

var settings = new PrintSettings
{
    ShowPrintDialog = false,    // -silent
    NumberOfCopies = 3,         // -copies 3
    PrinterName = "HP LaserJet", // -printer "HP LaserJet"
    FromPage = 1,               // -pages "1-5"
    ToPage = 5
};

pdf.Print(settings);
$vbLabelText   $csharpLabel

靜默模式標誌轉換

注意靜默列印的邏輯與此相反:

// PDFFilePrint: -silent flag enables silent mode
// IronPDF: ShowPrintDialog = false (false = silent)
var settings = new PrintSettings { ShowPrintDialog = false };
// PDFFilePrint: -silent flag enables silent mode
// IronPDF: ShowPrintDialog = false (false = silent)
var settings = new PrintSettings { ShowPrintDialog = false };
$vbLabelText   $csharpLabel

遷移後的新功能

移轉到 IronPDF 後,您將獲得 PDF文件列印 無法提供的功能:

一步完成創建和列印

using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Thank you for your order.</p>");
pdf.Print("Office Printer");
using IronPdf;

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Thank you for your order.</p>");
pdf.Print("Office Printer");
$vbLabelText   $csharpLabel

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

水印

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>");
pdf.SaveAs("watermarked.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>CONFIDENTIAL</h1>");
pdf.SaveAs("watermarked.pdf");
$vbLabelText   $csharpLabel

密碼保護

var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SaveAs("secured.pdf");
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SecuritySettings.UserPassword = "userpassword";
pdf.SecuritySettings.OwnerPassword = "ownerpassword";
pdf.SaveAs("secured.pdf");
$vbLabelText   $csharpLabel

文字擷取

var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();
$vbLabelText   $csharpLabel

關鍵遷移說明

課程模式變化

PDFFilePrint 使用單一PDFFile類別來處理所有事情; IronPDF 分離關注點:

// PDFFilePrint: Single class
var pdf = new PDFFile();
pdf.CreateFromHtml(html);
pdf.SaveToFile(path);

// IronPDF: Renderer for creation, Document for manipulation
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
// PDFFilePrint: Single class
var pdf = new PDFFile();
pdf.CreateFromHtml(html);
pdf.SaveToFile(path);

// IronPDF: Renderer for creation, Document for manipulation
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
$vbLabelText   $csharpLabel

方法命名變更

// PDF文件列印 → IronPDF
CreateFromHtml() → RenderHtmlAsPdf()
CreateFromUrl() → RenderUrlAsPdf()
LoadFromFile() → PdfDocument.FromFile()
SaveToFile() → SaveAs()
Print(printerName) → Print(printerName) or Print()
// PDF文件列印 → IronPDF
CreateFromHtml() → RenderHtmlAsPdf()
CreateFromUrl() → RenderUrlAsPdf()
LoadFromFile() → PdfDocument.FromFile()
SaveToFile() → SaveAs()
Print(printerName) → Print(printerName) or Print()
$vbLabelText   $csharpLabel

退出代碼到例外處理

如果使用命令列 PDFFilePrint:

// PDFFilePrint: Check process exit code
if (process.ExitCode != 0) {
    var error = process.StandardError.ReadToEnd();
    throw new Exception($"Print failed: {error}");
}

// IronPDF: Use try-catch
try {
    pdf.Print();
}
catch (Exception ex) {
    // Handle error with full exception details
}
// PDFFilePrint: Check process exit code
if (process.ExitCode != 0) {
    var error = process.StandardError.ReadToEnd();
    throw new Exception($"Print failed: {error}");
}

// IronPDF: Use try-catch
try {
    pdf.Print();
}
catch (Exception ex) {
    // Handle error with full exception details
}
$vbLabelText   $csharpLabel

移除外部依賴項

如果使用命令列 PDFFilePrint,請刪除已捆綁的可執行檔:

// Before: Required external executable
private readonly string _pdfFilePrintPath = @"C:\tools\PDFFilePrint.exe";

// After: No external dependencies
// IronPDF is fully self-contained via NuGet
// Before: Required external executable
private readonly string _pdfFilePrintPath = @"C:\tools\PDFFilePrint.exe";

// After: No external dependencies
// IronPDF is fully self-contained via NuGet
$vbLabelText   $csharpLabel

功能對比總結

特徵PDF文件列印IronPDF
基本列印
靜默列印
多份
頁面範圍
複式公寓因情況而異
從 HTML 創建有限的
從 URL 建立有限的
合併PDF
拆分PDF
添加浮水印
提取文字
密碼保護
數位簽名
跨平台
原生 .NET API有限的

遷移清單

遷移前

  • 在程式碼庫中尋找所有 PDF文件列印 引用
  • 記錄目前使用的方法(CreateFromHtml、CreateFromUrl、Print 等)
  • 識別不同環境中使用的印表機名稱
  • 如果使用 Process.Start 模式,請列出所有命令列參數
  • 尋找新功能的機會(合併、浮水印、安全)
  • 取得 IronPDF 許可證密鑰

軟體包變更

  • 刪除PDFFilePrint NuGet 包
  • 從部署中移除捆綁的 PDFFilePrint.exe(如果適用) 安裝IronPdf NuGet 套件: dotnet add package IronPdf
  • 更新命名空間匯入

程式碼更改

  • 在啟動時新增許可證金鑰配置
  • new PDFFile() + CreateFromHtml()替換為ChromePdfRenderer.RenderHtmlAsPdf()
  • new PDFFile() + CreateFromUrl()替換為ChromePdfRenderer.RenderUrlAsPdf()
  • LoadFromFile()替換為PdfDocument.FromFile()
  • SaveToFile()替換為SaveAs()
  • 根據需要更新Print()調用
  • 將退出代碼檢查替換為異常處理(如果適用)

移民後

  • 從原始碼控制中移除 PDFFilePrint.exe
  • 更新建置腳本,移除 PDF文件列印 複製功能
  • 在所有目標印表機上進行測試列印
  • 如適用,進行跨平台測試
  • 依需求新增功能(浮水印、安全功能)
  • 更新文檔

柯蒂斯·週
技術撰稿人

Curtis Chau擁有卡爾頓大學電腦科學學士學位,專長於前端開發,精通Node.js、TypeScript、JavaScript和React。他熱衷於打造直覺美觀的使用者介面,喜歡使用現代框架,並擅長撰寫結構清晰、視覺效果出色的使用者手冊。

除了開發工作之外,柯蒂斯對物聯網 (IoT) 也抱有濃厚的興趣,致力於探索硬體和軟體整合的創新方法。閒暇時,他喜歡玩遊戲和製作 Discord 機器人,將他對科技的熱愛與創造力結合。