跳至页脚内容
迁移指南

如何用 C# 从 PDFFilePrint 迁移到 IronPDF

从PDF 文件打印迁移到IronPDF可将您的 .NET PDF 工作流程从功能有限的以打印为重点的实用程序转变为综合 PDF 库,该库可在单一的统一 API 中处理创建、操作和打印。 本指南提供了完整的分步迁移路径,消除了命令行依赖性,同时增加了PDF 文件打印无法提供的 PDF 生成和处理功能。

为什么要从PDF 文件打印迁移到 IronPDF?

了解 PDFFilePrint

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
错误处理 解析 stdout/stderr 本地例外情况
智能感知 有限的 全面支持
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 软件包变更

# RemovePDF 文件打印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
# RemovePDF 文件打印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 文件打印的用法

# FindPDF 文件打印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"
# FindPDF 文件打印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
PDF 文件 PDF 文档 文档对象

PDF 生成方法映射

PDF 文件打印 IronPDF 备注
pdf.CreateFromHtml(html) renderer.RenderHtmlAsPdf(html) HTML 至 PDF
pdf.CreateFromUrl(url) renderer.RenderUrlAsPdf(url) URL 至 PDF
pdf.SaveToFile(路径) pdf.SaveAs(路径) 保存到文件

PDF 加载和打印映射

PDF 文件打印 IronPDF 备注
pdf.LoadFromFile(路径) PdfDocument.FromFile(路径) 加载现有 PDF
pdf.Print(打印机名称) pdf.Print(打印机名称) 打印到特定打印机
pdf.Print("默认打印机") pdf.Print() 打印为默认值

打印设置映射(命令行到 API)

PDFFilePrint 标志 IronPdf 打印设置属性 备注
-打印机 "名称" 打印机名称 字符串
-副本 N 份数 int
-无声 ShowPrintDialog = false 颠倒逻辑
-页码 "1-5" FromPage</code>,ToPage|int`
-面向景观 文件方向 PdfPrintOrientation
-duplex Duplex `双工枚举
-collate|Collate|布尔`

PDF 文件打印中没有的新功能

IronPdf 特点 说明
PdfDocument.Merge() 合并多个 PDF
pdf.CopyPages() 提取特定页面
pdf.ApplyWatermark() 添加水印
pdf.SecuritySettings 密码保护
pdf.ExtractAllText() 提取文本内容
pdf.RasterizeToImageFiles() 转换为图像
pdf.SignWithDigitalSignature() 数字签名

代码迁移示例

示例 1:HTML 到 PDF 的转换

之前(PDFFilePrint):

// 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

After (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 文件打印使用一个具有 CreateFromHtml()SaveToFile() 方法的PDF 文件类。IronPDF将渲染从文档对象中分离出来--ChromePdfRenderer处理 HTML 到 PDF 的转换并返回一个PDF 文档对象,然后您可以使用SaveAs()` 保存该对象。

这种分离提供了显著的优势:您可以在转换之前在渲染器上配置渲染选项,并且可以在保存之前对返回的PDF 文档进行操作(添加水印、与其他 PDF 合并、添加安全性)。 有关其他渲染选项,请参阅 HTML to PDF 文档

示例 2:URL 到 PDF 的转换

之前(PDFFilePrint):

// 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

After (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 在同一个PDF 文件类上使用 CreateFromUrl() 。IronPDF使用 ChromePdfRenderer 上专用的 RenderUrlAsPdf() 方法,该方法利用现代 Chromium 引擎准确呈现复杂的 CSS3、JavaScript 和现代网络功能。 渲染质量具有可预见性,并与您在 Chrome 浏览器中看到的内容相匹配。 了解有关 URL 至 PDF 转换的更多信息。

示例 3:PDF 打印

之前(PDFFilePrint):

// 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

After (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("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"

//IronPDFequivalent:
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"

//IronPDFequivalent:
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 使用一个PDF 文件类来处理所有事务; 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
//IronPDFis fully self-contained via NuGet
// Before: Required external executable
private readonly string _pdfFilePrintPath = @"C:\tools\PDFFilePrint.exe";

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

功能对比摘要

特征 PDF 文件打印 IronPDF
基本印刷
静音打印
一式多份
页面范围
双工 不同
从 HTML 创建 有限的
从 URL 创建 有限的
合并 PDF
拆分 PDF
添加水印
提取文本
密码保护
数字签名
跨平台
本地 .NET 应用程序接口 有限的

迁移清单

迁移前

  • 在代码库中查找所有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
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。