如何在 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文件列印 的架構限制。
開始之前
先決條件
- .NET 環境: .NET Framework 4.6.2+ 或 .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet 存取權限:能夠安裝 NuGet 套件
- 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許可證配置
// 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";識別 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"完整 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;核心類別映射
| PDF文件列印 | IronPDF | 筆記 |
|---|---|---|
new PDFFile() | new ChromePdfRenderer() | 用於建立 PDF |
new PDFFile() | PdfDocument.FromFile() | 用於載入現有PDF文件 |
PDFFile | PdfDocument | 文件對象 |
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" | PrinterName | string |
-copies N | NumberOfCopies | int |
-silent | ShowPrintDialog = false | 反向邏輯 |
-pages "1-5" | FromPage , ToPage | int |
-orientation landscape | PaperOrientation | PdfPrintOrientation |
-duplex | Duplex | Duplex枚舉 |
-collate | Collate | bool |
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");
}
}(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");
}
}根本差別在於 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");
}
}(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");
}
}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");
}
}(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");
}
}這個範例展示了PDF載入和列印方面的基本架構差異。 PDF文件列印 使用new PDFFile() ,然後使用LoadFromFile() ,最後Print(printerName) 。 IronPDF 使用靜態工廠方法PdfDocument.FromFile()直接載入文件,然後使用Print()方法,該方法使用預設印表機(或您可以傳遞印表機名稱)。
關鍵遷移變更:
new PDFFile()+LoadFromFile(path)→PdfDocument.FromFile(path)Print("Default Printer")→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);靜默模式標誌轉換
注意靜默列印的邏輯與此相反:
// 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 };遷移後的新功能
移轉到 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");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");水印
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");密碼保護
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");文字擷取
var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();var pdf = PdfDocument.FromFile("document.pdf");
string text = pdf.ExtractAllText();關鍵遷移說明
課程模式變化
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);方法命名變更
// 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()退出代碼到例外處理
如果使用命令列 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
}移除外部依賴項
如果使用命令列 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功能對比總結
| 特徵 | PDF文件列印 | IronPDF |
|---|---|---|
| 基本列印 | ✓ | ✓ |
| 靜默列印 | ✓ | ✓ |
| 多份 | ✓ | ✓ |
| 頁面範圍 | ✓ | ✓ |
| 複式公寓 | 因情況而異 | ✓ |
| 從 HTML 創建 | 有限的 | ✓ |
| 從 URL 建立 | 有限的 | ✓ |
| 合併PDF | ✗ | ✓ |
| 拆分PDF | ✗ | ✓ |
| 添加浮水印 | ✗ | ✓ |
| 提取文字 | ✗ | ✓ |
| 密碼保護 | ✗ | ✓ |
| 數位簽名 | ✗ | ✓ |
| 跨平台 | ✗ | ✓ |
| 原生 .NET API | 有限的 | ✓ |
遷移清單
遷移前
- 在程式碼庫中尋找所有 PDF文件列印 引用
- 記錄目前使用的方法(CreateFromHtml、CreateFromUrl、Print 等)
- 識別不同環境中使用的印表機名稱
- 如果使用 Process.Start 模式,請列出所有命令列參數
- 尋找新功能的機會(合併、浮水印、安全)
- 取得 IronPDF 許可證密鑰
軟體包變更
- 刪除
PDFFilePrintNuGet 包 - 從部署中移除捆綁的 PDFFilePrint.exe(如果適用) 安裝
IronPdfNuGet 套件:dotnet add package IronPdf - 更新命名空間匯入
程式碼更改
- 在啟動時新增許可證金鑰配置
- 將
new PDFFile()+CreateFromHtml()替換為ChromePdfRenderer.RenderHtmlAsPdf() - 將
new PDFFile()+CreateFromUrl()替換為ChromePdfRenderer.RenderUrlAsPdf() - 將
LoadFromFile()替換為PdfDocument.FromFile() - 將
SaveToFile()替換為SaveAs() - 根據需要更新
Print()調用 - 將退出代碼檢查替換為異常處理(如果適用)
移民後
- 從原始碼控制中移除 PDFFilePrint.exe
- 更新建置腳本,移除 PDF文件列印 複製功能
- 在所有目標印表機上進行測試列印
- 如適用,進行跨平台測試
- 依需求新增功能(浮水印、安全功能)
- 更新文檔






