如何在 C# 中從 PDFFilePrint 轉移到 IronPDF
從PDFFilePrint遷移到IronPDF會將您的.NET PDF工作流從僅列印的Pdfium包裝器轉移到一個可處理建立、操作和列印的綜合PDF程式庫,這一切都在一個統一的API中完成。 本指南提供了一個逐步的遷移路徑,用於將PrinterSettings,同時增加PDF生成和操作功能,而這是PDFFilePrint無法提供的。
為什麼要從PDFFilePrint遷移到IronPDF
了解PDFFilePrint
PDFFilePrint是一個小型開源NuGet套件(由Christian Andersen建立的MIT許可),它包裝了PdfiumViewer和谷歌的Pdfium,以靜默地將現有的PDF或XPS文件發送到列印機驅動。 最新版本是1.0.3,發佈於2020-02-10,針對Windows上的.NET Framework 4.6.1+。 雖然對於針對性的列印任務有用,但其功能僅限於文件處理的一個方面——公共介面基本上是app.config / Properties.Settings.Default鍵驅動。
PDFFilePrint的關鍵限制
-
僅列印:不能建立、編輯、合併或修改PDF——
FilePrint類消耗現有的PDF/XPS文件並將它們交給列印器。 -
配置文件驅動的API:列印機名稱、紙張大小、份數和"列印到文件"模式從
app.config(Properties.Settings.Default) 讀取,而不是作為強型別的選項物件傳遞。 -
僅限Windows + .NET Framework:針對
net461,並引入PdfiumViewer的Win32原生二進制文件。 無.NET Core / .NET 6+目標框架,且無Linux/macOS支持。 -
有限的列印旋鈕:雙面列印、頁面範圍、方向和顏色依賴於列印機驅動預設值——沒有一流的API可用。
-
實際上無人維護:自1.0.3(2020年2月)以來沒有發佈版本,且NuGet列表中沒有鏈結到公共源程式碼庫。
-
普通異常介面:故障從PdfiumViewer / 列印器作為一般異常而不是型別化的錯誤階層浮現。
- 無PDF生成:無法建立PDF——從HTML、網址或圖像到列印頁面,您必須將PDFFilePrint與一個單獨的渲染器配對。
PDFFilePrint與IronPDF比較
| 方面 | PDFFilePrint | IronPDF |
|---|---|---|
| 主要重點 | PDF/XPS列印 | 綜合PDF API |
| 型別 | Pdfium列印包裝器 | 原生.NET程式庫 + Chromium渲染引擎 |
| 整合 | new FilePrint(...).Print() + app.config |
直接PdfDocument API |
| PDF列印 | 是 | 是 |
| PDF建立 | 否 | 是(HTML,網址,圖像) |
| PDF 操作 | 否 | 是(合併,分割,編輯) |
| 跨平台 | 僅Windows(net461) | Windows, Linux, macOS, Docker |
| 錯誤處理 | 來自PdfiumViewer的普通異常 | 型別化IronPdfException |
| IntelliSense | 最小(小表面) | 全面 |
| NuGet套件 | PDFFilePrint 1.0.3(MIT,2020年2月) |
IronPdf |
| 最新版本 | 1.0.3(2020年2月) | 活躍版本 |
對於旨在使用現代.NET(Framework 4.6.2+和.NET 6/7/8/9/10)的團隊,IronPDF提供了跨平台支持和積極開發的綜合基礎,解決了PDFFilePrint的架構限制。
開始之前
前提條件
- .NET環境: .NET Framework 4.6.2+ 或 .NET 6/7/8/9/10
- NuGet存取: 有能力安裝NuGet套件
- IronPDF授權: 從ironpdf.com獲取您的授權金鑰
NuGet包變更
# Remove PDFFilePrint package
dotnet remove package PDFFilePrint
# Install IronPDF
dotnet add package IronPdf
# Remove PDFFilePrint package
dotnet remove package PDFFilePrint
# 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";
' Add at application startup (Program.vb or Startup.vb)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
識別PDFFilePrint的使用
# Find PDFFilePrint API usages
grep -r "using PDFFilePrint\|new FilePrint" --include="*.cs" .
# Find related app.config keys
grep -r "PrinterName\|PaperName\|PrintToFile\|DefaultPrintToDirectory" \
--include="*.config" --include="*.settings" .
# Find PDFFilePrint API usages
grep -r "using PDFFilePrint\|new FilePrint" --include="*.cs" .
# Find related app.config keys
grep -r "PrinterName\|PaperName\|PrintToFile\|DefaultPrintToDirectory" \
--include="*.config" --include="*.settings" .
完整API參考
名稱空間變更
// PDFFilePrint
using PDFFilePrint;
//IronPDF— printing flows through System.Drawing.Printing
using IronPdf;
using System.Drawing.Printing;
// PDFFilePrint
using PDFFilePrint;
//IronPDF— printing flows through System.Drawing.Printing
using IronPdf;
using System.Drawing.Printing;
Imports PDFFilePrint
Imports IronPdf
Imports System.Drawing.Printing
核心類別映射
| PDFFilePrint | IronPDF |
|---|---|
new FilePrint(path, null) (載入) |
PdfDocument.FromFile(path) |
new ChromePdfRenderer() (無等效——PDFFilePrint無法建立PDF) |
new ChromePdfRenderer() |
FilePrint |
PdfDocument |
PDF生成方法映射
| PDFFilePrint | IronPDF |
|---|---|
| (不可用) | renderer.RenderHtmlAsPdf(html) |
| (不可用) | renderer.RenderUrlAsPdf(url) |
| (不可用——僅列印) | pdf.SaveAs(path) |
PDF載入和列印映射
| PDFFilePrint | IronPDF |
|---|---|
new FilePrint(path, null) |
PdfDocument.FromFile(path) |
fileprint.Print() (靜默,總是) |
pdf.Print() (靜默) / pdf.Print(true) (對話框) |
Properties.Settings.Default.PrinterName = "..." 接著 Print() |
pdf.GetPrintDocument(new PrinterSettings { PrinterName = "..." }).Print() |
列印設置映射(app.config到PrinterSettings)
PDFFilePrint設置 (Settings.Default) |
IronPDF(System.Drawing.Printing.PrinterSettings) |
|---|---|
PrinterName |
PrinterName |
Copies |
Copies |
| (無靜默標誌——總是靜默) | pdf.Print() (靜默) / pdf.Print(true) (顯示對話框) |
| (驅動預設值) | FromPage, ToPage, PrintRange |
| (驅動預設值) | DefaultPageSettings.Landscape |
| (驅動預設值) | Duplex |
| (驅動預設值) | Collate |
PaperName |
DefaultPageSettings.PaperSize |
PrintToFile + DefaultPrintToDirectory |
PrintToFile + PrintFileName |
PDFFilePrint中不存在的新功能
| IronPDF功能 | 說明 |
|---|---|
PdfDocument.Merge() |
合併多個PDF |
pdf.CopyPages() |
提取特定頁面 |
pdf.ApplyWatermark() |
新增水印 |
pdf.SecuritySettings |
密碼保護 |
pdf.ExtractAllText() |
提取文字內容 |
pdf.RasterizeToImageFiles() |
轉換為圖像 |
pdf.SignWithDigitalSignature() |
數位簽名 |
程式碼遷移範例
範例1:HTML轉PDF轉換
之前(PDFFilePrint):
// NuGet: Install-Package PDFFilePrint
// PDFFilePrint is a print-only wrapper around PdfiumViewer / Pdfium.
// Its FilePrint class only consumes existing PDF/XPS files — there is
// no CreateFromHtml or document-creation method.
using System;
class Program
{
static void Main()
{
throw new NotSupportedException(
"PDFFilePrint cannot convert HTML to PDF. Render the HTML to a PDF " +
"with another library, then pass the path to new FilePrint(path, null).Print().");
}
}
// NuGet: Install-Package PDFFilePrint
// PDFFilePrint is a print-only wrapper around PdfiumViewer / Pdfium.
// Its FilePrint class only consumes existing PDF/XPS files — there is
// no CreateFromHtml or document-creation method.
using System;
class Program
{
static void Main()
{
throw new NotSupportedException(
"PDFFilePrint cannot convert HTML to PDF. Render the HTML to a PDF " +
"with another library, then pass the path to new FilePrint(path, null).Print().");
}
}
Imports System
Class Program
Shared Sub Main()
Throw New NotSupportedException("PDFFilePrint cannot convert HTML to PDF. Render the HTML to a PDF " & _
"with another library, then pass the path to new FilePrint(path, null).Print().")
End Sub
End Class
之後(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");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
End Sub
End Class
這裡的根本區別在於範圍。 PDFFilePrint 沒有 HTML 到 PDF 的路徑——其公共介面是一個FilePrint類,將現有的PDF交給列印機。 IronPDF將渲染與文件物件分離:ChromePdfRenderer 處理 HTML 到 PDF 的轉換,並返回 PdfDocument,然後您用 SaveAs() 儲存。
這種分離也讓您在轉換之前配置渲染器上的渲染選項,並在儲存之前操作返回的PdfDocument(新增水印,與其他PDF合併,新增安全性)。 查看HTML到PDF文件以獲取其他渲染選項。
範例2:URL轉PDF轉換
之前(PDFFilePrint):
// NuGet: Install-Package PDFFilePrint
// PDFFilePrint cannot fetch a URL or render HTML — it only sends existing
// PDF/XPS files to a printer. URL-to-PDF requires a separate renderer.
using System;
class Program
{
static void Main()
{
throw new NotSupportedException(
"PDFFilePrint cannot convert URLs to PDF. Render the URL to a PDF with " +
"another library first, then call new FilePrint(pdfPath, null).Print().");
}
}
// NuGet: Install-Package PDFFilePrint
// PDFFilePrint cannot fetch a URL or render HTML — it only sends existing
// PDF/XPS files to a printer. URL-to-PDF requires a separate renderer.
using System;
class Program
{
static void Main()
{
throw new NotSupportedException(
"PDFFilePrint cannot convert URLs to PDF. Render the URL to a PDF with " +
"another library first, then call new FilePrint(pdfPath, null).Print().");
}
}
Imports System
Class Program
Shared Sub Main()
Throw New NotSupportedException("PDFFilePrint cannot convert URLs to PDF. Render the URL to a PDF with " & _
"another library first, then call new FilePrint(pdfPath, null).Print().")
End Sub
End Class
之後(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");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://www.example.com")
pdf.SaveAs("webpage.pdf")
End Sub
End Class
PDFFilePrint沒有網址抓取功能。 IronPDF使用ChromePdfRenderer上,該方法利用Chromium引擎來渲染現代CSS、JavaScript和網頁特徵。 了解有關URL到PDF轉換的更多資訊。
範例3:PDF列印
之前(PDFFilePrint):
// NuGet: Install-Package PDFFilePrint
using System;
using PDFFilePrint;
class Program
{
static void Main()
{
// Optional: override the configured printer / copy count at runtime.
Properties.Settings.Default.PrinterName = "Default Printer";
var fileprint = new FilePrint("document.pdf", null);
fileprint.Print();
Console.WriteLine("PDF sent to printer");
}
}
// NuGet: Install-Package PDFFilePrint
using System;
using PDFFilePrint;
class Program
{
static void Main()
{
// Optional: override the configured printer / copy count at runtime.
Properties.Settings.Default.PrinterName = "Default Printer";
var fileprint = new FilePrint("document.pdf", null);
fileprint.Print();
Console.WriteLine("PDF sent to printer");
}
}
Imports System
Imports PDFFilePrint
Module Program
Sub Main()
' Optional: override the configured printer / copy count at runtime.
Properties.Settings.[Default].PrinterName = "Default Printer"
Dim fileprint = New FilePrint("document.pdf", Nothing)
fileprint.Print()
Console.WriteLine("PDF sent to printer")
End Sub
End Module
之後(IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Drawing.Printing;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
// Silent print to the default printer
pdf.Print();
// Or print to a named printer with explicit PrinterSettings:
// var settings = new PrinterSettings { PrinterName = "HP LaserJet Pro" };
// pdf.GetPrintDocument(settings).Print();
Console.WriteLine("PDF sent to printer");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Drawing.Printing;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
// Silent print to the default printer
pdf.Print();
// Or print to a named printer with explicit PrinterSettings:
// var settings = new PrinterSettings { PrinterName = "HP LaserJet Pro" };
// pdf.GetPrintDocument(settings).Print();
Console.WriteLine("PDF sent to printer");
}
}
Imports IronPdf
Imports System
Imports System.Drawing.Printing
Module Program
Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
' Silent print to the default printer
pdf.Print()
' Or print to a named printer with explicit PrinterSettings:
' Dim settings As New PrinterSettings With {.PrinterName = "HP LaserJet Pro"}
' pdf.GetPrintDocument(settings).Print()
Console.WriteLine("PDF sent to printer")
End Sub
End Module
此範例顯示了兩個程式庫之間的架構差異。 PDFFilePrint實例化app.config (Properties.Settings.Default) 讀取。 IronPDF使用靜態工廠System.Drawing.Printing.PrinterSettings以獲得顯式控制。
遷移的關鍵改變:
new FilePrint(path, null)→PdfDocument.FromFile(path)Properties.Settings.Default.PrinterName = "..."+Print()→pdf.GetPrintDocument(new PrinterSettings { PrinterName = "..." }).Print()- 預設列印機:在
pdf.Print()
對於高級列印設置,IronPDF使用System.Drawing.Printing.PrinterSettings。 請查看印刷文件以獲取更多選項。
高級列印設置遷移
對於使用PDFFilePrint的PrinterSettings:
// PDFFilePrint approach — settings live in app.config and are read via
// Properties.Settings.Default. To override at runtime you mutate Settings.Default
// before instantiating FilePrint:
// Properties.Settings.Default.PrinterName = "HP LaserJet";
// Properties.Settings.Default.Copies = 3;
// new FilePrint("document.pdf", null).Print();
//
//IronPDFequivalent — pass a System.Drawing.Printing.PrinterSettings per call:
using IronPdf;
using System.Drawing.Printing;
var pdf = PdfDocument.FromFile("document.pdf");
var settings = new PrinterSettings
{
PrinterName = "HP LaserJet",
Copies = 3,
FromPage = 1,
ToPage = 5,
PrintRange = PrintRange.SomePages
};
pdf.GetPrintDocument(settings).Print();
// PDFFilePrint approach — settings live in app.config and are read via
// Properties.Settings.Default. To override at runtime you mutate Settings.Default
// before instantiating FilePrint:
// Properties.Settings.Default.PrinterName = "HP LaserJet";
// Properties.Settings.Default.Copies = 3;
// new FilePrint("document.pdf", null).Print();
//
//IronPDFequivalent — pass a System.Drawing.Printing.PrinterSettings per call:
using IronPdf;
using System.Drawing.Printing;
var pdf = PdfDocument.FromFile("document.pdf");
var settings = new PrinterSettings
{
PrinterName = "HP LaserJet",
Copies = 3,
FromPage = 1,
ToPage = 5,
PrintRange = PrintRange.SomePages
};
pdf.GetPrintDocument(settings).Print();
Imports IronPdf
Imports System.Drawing.Printing
' PDFFilePrint approach — settings live in app.config and are read via
' Properties.Settings.Default. To override at runtime you mutate Settings.Default
' before instantiating FilePrint:
' Properties.Settings.Default.PrinterName = "HP LaserJet"
' Properties.Settings.Default.Copies = 3
' new FilePrint("document.pdf", null).Print()
'
' IronPDFequivalent — pass a System.Drawing.Printing.PrinterSettings per call:
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim settings As New PrinterSettings With {
.PrinterName = "HP LaserJet",
.Copies = 3,
.FromPage = 1,
.ToPage = 5,
.PrintRange = PrintRange.SomePages
}
pdf.GetPrintDocument(settings).Print()
靜默模式
// PDFFilePrint is always silent — there is no print-dialog code path.
//IronPDFis silent by default. Pass true explicitly to show the print dialog:
pdf.Print(); // silent
pdf.Print(true); // shows print dialog
// PDFFilePrint is always silent — there is no print-dialog code path.
//IronPDFis silent by default. Pass true explicitly to show the print dialog:
pdf.Print(); // silent
pdf.Print(true); // shows print dialog
' PDFFilePrint is always silent — there is no print-dialog code path.
' IronPDF is silent by default. Pass True explicitly to show the print dialog:
pdf.Print() ' silent
pdf.Print(True) ' shows print dialog
遷移後的新能力
遷移到IronPDF後,您將獲得PDFFilePrint無法提供的功能:
一步建立和列印
using IronPdf;
using System.Drawing.Printing;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Thank you for your order.</p>");
var settings = new PrinterSettings { PrinterName = "Office Printer" };
pdf.GetPrintDocument(settings).Print();
using IronPdf;
using System.Drawing.Printing;
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Thank you for your order.</p>");
var settings = new PrinterSettings { PrinterName = "Office Printer" };
pdf.GetPrintDocument(settings).Print();
Imports IronPdf
Imports System.Drawing.Printing
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Invoice #12345</h1><p>Thank you for your order.</p>")
Dim settings As New PrinterSettings With {.PrinterName = "Office Printer"}
pdf.GetPrintDocument(settings).Print()
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");
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim 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");
Dim 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");
Dim 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();
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim text As String = pdf.ExtractAllText()
關鍵遷移注意事項
類模式改變
PDFFilePrint使用一個小app.config驅動。 IronPDF將渲染,文件操作和列印分成不同的型別:
// PDFFilePrint: load + silent print (settings come from app.config)
Properties.Settings.Default.PrinterName = "HP LaserJet";
var fileprint = new FilePrint(path, null);
fileprint.Print();
// IronPDF: PdfDocument for load/manipulate, PrinterSettings for print options
var pdf = PdfDocument.FromFile(path);
var settings = new PrinterSettings { PrinterName = "HP LaserJet" };
pdf.GetPrintDocument(settings).Print();
//IronPDFcan also create PDFs from HTML — PDFFilePrint cannot
var renderer = new ChromePdfRenderer();
var newPdf = renderer.RenderHtmlAsPdf(html);
newPdf.SaveAs(path);
// PDFFilePrint: load + silent print (settings come from app.config)
Properties.Settings.Default.PrinterName = "HP LaserJet";
var fileprint = new FilePrint(path, null);
fileprint.Print();
// IronPDF: PdfDocument for load/manipulate, PrinterSettings for print options
var pdf = PdfDocument.FromFile(path);
var settings = new PrinterSettings { PrinterName = "HP LaserJet" };
pdf.GetPrintDocument(settings).Print();
//IronPDFcan also create PDFs from HTML — PDFFilePrint cannot
var renderer = new ChromePdfRenderer();
var newPdf = renderer.RenderHtmlAsPdf(html);
newPdf.SaveAs(path);
' PDFFilePrint: load + silent print (settings come from app.config)
Properties.Settings.Default.PrinterName = "HP LaserJet"
Dim fileprint = New FilePrint(path, Nothing)
fileprint.Print()
' IronPDF: PdfDocument for load/manipulate, PrinterSettings for print options
Dim pdf = PdfDocument.FromFile(path)
Dim settings = New PrinterSettings With {.PrinterName = "HP LaserJet"}
pdf.GetPrintDocument(settings).Print()
' IronPDF can also create PDFs from HTML — PDFFilePrint cannot
Dim renderer = New ChromePdfRenderer()
Dim newPdf = renderer.RenderHtmlAsPdf(html)
newPdf.SaveAs(path)
方法/設置命名更改
// PDFFilePrint → IronPDF
new FilePrint(path, null) → PdfDocument.FromFile(path)
fileprint.Print() → pdf.Print() // silent default
Properties.Settings.Default.PrinterName = "X" → new PrinterSettings { PrinterName = "X" }
Properties.Settings.Default.Copies = 3 → new PrinterSettings { Copies = 3 }
Properties.Settings.Default.PaperName = "A4" → settings.DefaultPageSettings.PaperSize = ...
// PDFFilePrint has no native HTML/URL/merge/watermark methods — these are IronPDF-only.
// PDFFilePrint → IronPDF
new FilePrint(path, null) → PdfDocument.FromFile(path)
fileprint.Print() → pdf.Print() // silent default
Properties.Settings.Default.PrinterName = "X" → new PrinterSettings { PrinterName = "X" }
Properties.Settings.Default.Copies = 3 → new PrinterSettings { Copies = 3 }
Properties.Settings.Default.PaperName = "A4" → settings.DefaultPageSettings.PaperSize = ...
// PDFFilePrint has no native HTML/URL/merge/watermark methods — these are IronPDF-only.
' PDFFilePrint → IronPDF
PdfDocument.FromFile(path) ' new FilePrint(path, null)
pdf.Print() ' fileprint.Print() // silent default
Dim printerSettings As New PrinterSettings With {
.PrinterName = "X",
.Copies = 3
}
settings.DefaultPageSettings.PaperSize = ... ' Properties.Settings.Default.PaperName = "A4"
' PDFFilePrint has no native HTML/URL/merge/watermark methods — these are IronPDF-only.
異常處理
// PDFFilePrint: failures bubble up from PdfiumViewer as plain exceptions
try {
new FilePrint(path, null).Print();
}
catch (Exception ex) {
// 否 granular error type — log the message and inner exception.
}
// IronPDF: typed exception hierarchy
try {
pdf.Print();
}
catch (IronPdf.Exceptions.IronPdfException ex) {
// Granular error details
}
// PDFFilePrint: failures bubble up from PdfiumViewer as plain exceptions
try {
new FilePrint(path, null).Print();
}
catch (Exception ex) {
// 否 granular error type — log the message and inner exception.
}
// IronPDF: typed exception hierarchy
try {
pdf.Print();
}
catch (IronPdf.Exceptions.IronPdfException ex) {
// Granular error details
}
Imports IronPdf.Exceptions
' PDFFilePrint: failures bubble up from PdfiumViewer as plain exceptions
Try
Dim filePrint As New FilePrint(path, Nothing)
filePrint.Print()
Catch ex As Exception
' 否 granular error type — log the message and inner exception.
End Try
' IronPDF: typed exception hierarchy
Try
pdf.Print()
Catch ex As IronPdfException
' Granular error details
End Try
不論哪種情況都無外部可執行文件
兩個程式庫都是作為NuGet包進行分發。 沒有捆綁或刪除IronPdf包自給自足的,原生依賴項在恢復時解決。
功能比較總結
| 功能 | PDFFilePrint | IronPDF |
|---|---|---|
| 基本列印 | ✓ | ✓ |
| 靜默列印 | ✓(總是靜默) | ✓ |
| 多次拷貝 | ✓(通過app.config) | ✓ |
| 頁碼範圍 | 僅限驅動程式預設 | ✓ |
| 雙面 | 僅限驅動程式預設 | ✓ |
| 從HTML建立 | ✗ | ✓ |
| 從URL建立 | ✗ | ✓ |
| 合併PDF | ✗ | ✓ |
| 拆分PDF | ✗ | ✓ |
| 新增水印 | ✗ | ✓ |
| 提取文字 | ✗ | ✓ |
| 密碼保護 | ✗ | ✓ |
| 數位簽名 | ✗ | ✓ |
| 跨平台 | ✗(Windows / net461) | ✓ |
| 原生.NET API | ✓(小表面) | ✓ |
遷移檢查表
遷移前
- 定位所有
new FilePrint(...)調用點 - 當前文件
app.config設置 (PrinterName,PaperName,Copies,PrintToFile,DefaultPrintToDirectory) - 識別跨環境使用的列印機名稱
- 記錄任何在運行時變更
Properties.Settings.Default的程式碼 - 識別新特徵的機會(HTML/URL渲染、合併、水印、安全)
- 獲得IronPDF授權金鑰
套件變更
- 移除
PDFFilePrintNuGet包:dotnet remove package PDFFilePrint - 安裝
IronPdfNuGet包:dotnet add package IronPdf - 將
using System.Drawing.Printing;)
程式碼變更
- 在啟動時加入授權金鑰配置
- 將
PdfDocument.FromFile(path) - 將列印機/復印/紙張設置從
System.Drawing.Printing.PrinterSettings中 - 使用
pdf.GetPrintDocument(settings).Print()進行顯式選項 - 在先前捕獲一般異常的地方,將
try/catch IronPdfException中包裹 - 對於HTML/URL/合併/水印功能(PDFFilePrint從未提供過),使用
PdfDocument操作API
遷移後
- 從
app.config中刪除PDFFilePrint特定鍵 - 在所有目標列印機上進行測試列印
- 如適用,進行跨平台測試(Linux列印需要CUPS)
- 根據需要新增新功能(水印、安全、合併)
- 更新文件

