
如何在 C# 中使用虛擬視窗和縮放
從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
授權配置
// 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"' 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" .
完整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;' PDFFilePrint
Imports PDFFilePrint
'IronPDF— printing flows through System.Drawing.Printing
Imports IronPdf
Imports System.Drawing.Printing' PDFFilePrint
Imports PDFFilePrint
'IronPDF— printing flows through System.Drawing.Printing
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 ClassImports 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 ClassImports 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 ClassImports 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 ClassImports 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 ClassPDFFilePrint沒有網址抓取功能。 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 ModuleImports 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 ModuleImports 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
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim settings = New PrinterSettings With {
.PrinterName = "HP LaserJet",
.Copies = 3,
.FromPage = 1,
.ToPage = 5,
.PrintRange = PrintRange.SomePages
}
pdf.GetPrintDocument(settings).Print()Imports IronPdf
Imports System.Drawing.Printing
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim settings = 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.
' 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遷移後的新能力
遷移到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()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")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")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")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()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: 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 → 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
}' PDFFilePrint: failures bubble up from PdfiumViewer as plain exceptions
Try
Call (New FilePrint(path, Nothing)).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 IronPdf.Exceptions.IronPdfException
' Granular error details
End Try' PDFFilePrint: failures bubble up from PdfiumViewer as plain exceptions
Try
Call (New FilePrint(path, Nothing)).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 IronPdf.Exceptions.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)
- 根據需要新增新功能(水印、安全、合併)
- 更新文件
Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。
相關文章


