跳至页脚内容
产品比较

IronPDF与PDFNet之间的比较

1.简介

寻找适合.NET Framework的完美PDF工具?

在本文中,我们将看看如何在C#中使用PDF文件(C#是最流行的编程语言之一)。 我们将讨论两个面向C#在.NET Framework上的领先PDF工具,使用代码示例根据其性能和功能进行比较。 最后,我们将检查它们的许可详细信息,并学习如何获取许可证密钥。

这两个PDF库是:

  • PDFNet
  • IronPDF

2. IronPDF

IronPDF是由Iron Software开发的C#.NET库,旨在使用单个库解决C# .NET开发人员的所有PDF问题。 IronPDF由Chromium引擎驱动,具有多种有用且强大的功能,如将HTML5、JavaScript、CSS和图像文件转换为PDF,创建自定义页眉和页脚,以及精确呈现PDF,使其在浏览器中显示如常。 IronPDF允许您从PDF文件中读取数据,并自动将其插入到您的.NET应用程序和数据存储系统中。 您可以将旧的PDF文档存储中的内容导入、移动和索引到您的文档管理和业务应用程序中。

2.1. IronPDF功能

2.1.1. PDF 转换

此功能允许您从多种格式生成PDF文件,如HTML、MVC视图、Web表单、HTML字符串和URL。

2.1.2. 提取PDF内容

在许多情况下,您可以轻松地从PDF中提取嵌入的文本。 然而,如果失败了,您的文本可能嵌入在图像中。 要扫描文档中的视觉文本而不是纯文本,请使用IronOCR库。

2.1.3 页眉和页脚

在创建PDF或现有PDF时可以添加页眉和页脚。 使用打印选项属性,您可以为每个文档页创建页眉和页脚。 这些参数在ChromePdfRenderer对象上可用。 此示例在.NET Core控制台应用程序中运行。

2.1.4. PDF图像处理

这允许用户生成PDF图像,也可以从照片生成PDF。它支持图像提取、各种图像扩展和PDF打印。

2.1.5. PDF文档IO

IronPDF还包括128位PDF加密、密码保护的PDF锁定和PDF的数字签名。

2.1.6. PDF编辑

IronPDF工具允许您为PDF添加水印、添加页面、删除页面、背景、前景等。

2.1.7. 兼容性

IronPDF支持几乎所有与C#兼容的操作系统和框架,如:

  • Windows
  • .NET Core 2.1、3.0、3.1、.NET 6 & 5
  • 符合 .NET 标准 2.0,实现通用兼容性
  • Azure
  • AWS
  • Docker
  • Linux

3. PDFNet

PDFNet .NET SDK由PDFTron提供,带来精确的PDF处理、注释、编辑和创建功能,并适用于网络、移动、桌面或服务器上的任何框架或应用程序。 它管理您的基础设施中的整个文档和信息管理过程,消除对第三方服务器依赖的需求。 PDFTron的网络平台附带支持的JS版本和针对所有PDF SDKs的演示许可证密钥。

PDFNet的一个显著优势是它是真正的跨平台,这使得我们的用户可以简单地为其工作流程和应用程序在多个不同的移动和桌面上下文中添加PDF兼容性和相关的业务功能,同时使用几乎相同的界面。

3.1. PDFNet SDK功能

3.1.1. 兼容性

PDFNet SDK与许多平台和框架兼容。 为了确保平台一致性,JavaScript API与PDFNet API以相同的方式使用。 SDK的Node.js和Electron版本也可用。 此包需要非托管插件二进制文件。

3.1.2. 编辑和查看

为用户带来了安全、可扩展和高保真的PDF阅读和编辑能力,适用于在线、移动和桌面平台。

3.1.3. 签署

创建定制的签署流程。 数字签名的文件可被认证、验证和封印。

3.1.4. 真正的删减

从文档中删除敏感数据,如个人信息或个人健康信息,同时保持文档可搜索。

3.1.5. 页面操作

页面可以添加、删除或重新排列。 文档可以被组合、合并或分割成部分。 可以同时在同一读取器或并排查看多个文档。

4. 在 Visual Studio 中创建一个新项目

在这篇文章中,我们将使用控制台应用程序生成PDF文档。

打开 Visual Studio 软件并转到文件菜单。 选择"新项目",然后选择控制台应用程序。

在适当的文本框中输入项目名称并选择路径。 然后,单击创建按钮。 根据下面的截图选择所需的 .NET 框架:

class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 1

Visual Studio项目现在将为控制台应用程序生成结构。 完成后,它将打开Program.cs文件,您可以在其中编写和执行源代码。

class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 2

现在我们可以添加库并测试程序。

5. 安装 IronPDF 库

IronPDF库有四种不同的下载和安装方式。 这些是:

5.1 使用 Visual Studio NuGet 包管理器

Visual Studio软件提供NuGet包管理器选项直接将包安装到解决方案。 下面的截图显示了如何打开NuGet包管理器。

class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 3

在包管理器GUI打开时,点击浏览选项卡并搜索"IronPDF:"

class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 4

在上图中,我们可以看到从搜索中获得的相关包列表。 选择IronPDF选项并将包安装到我们的解决方案中。

5.2 使用 Visual Studio 命令行

  • 在Visual Studio菜单中,转到工具 > NuGet包管理器 > 包管理器控制台
class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 5

  • 在包管理器控制台标签中输入以下行:
Install-Package IronPdf

IronPDF包现在将被安装在项目中。

class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 6

5.3从 NuGet 网页直接下载

第三种方法是直接从NuGet库IronPDF包下载NuGet包。

  • 从右侧菜单中选择下载包选项。
  • 双击下载的包; 它将自动安装。
  • 接下来,重新加载解决方案并开始在项目中使用它。

5.4 从 IronPDF 网页直接下载

IronPDF下载页面直接下载最新包。 下载后,按照以下步骤将包添加到项目中。

  • 从解决方案窗口右键点击项目。
  • 然后,选择选项引用并浏览已下载引用的位置。
  • 然后,单击确定以添加参考。

6. 安装PDFNet SDK

PDFNet SDK可以通过四种不同的方式下载和安装。

  • 使用 Visual Studio NuGet 包管理器.
  • 使用Visual Studio命令行。
  • NuGet库PDFNet包直接下载。
  • 使用PDFNetLoader.dll

6.1. 使用Visual Studio NuGet包管理器

如上所述,转到Visual Studio中的工具并打开NuGet包管理器。 将出现一个列表——点击管理解决方案的NuGet包。

class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 7

将出现一个带有搜索栏的窗口。 搜索PDFNet并将其安装在项目中。

6.2. 使用Visual Studio命令行

  • 在Visual Studio菜单中,转到工具 > NuGet包管理器 > 包管理器控制台
  • 在包管理器控制台标签中输入以下行:
Install-Package PDFNet -Version 9.2.0
class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 8

6.3. 从NuGet网页直接下载

第三种方法是直接从NuGet库PDFNet包下载NuGet包。

  • 从右侧菜单中选择下载包选项。
  • 双击已下载的包以启动安装过程。

6.4. 使用PDFNetLoader.dll

您还可以使用PDFNetLoader.dll文件安装PDFNet API。从GitHub PDFNetLoader.dll发布下载它。

下载该包,将其放置在项目的bin文件中,并运行它。 在您的Visual Studio项目中,将PDFNetLoader.dll添加为引用。

Bootstrap和CSS框架呈现

现代网络应用程序严重依赖Bootstrap和CSS框架以确保一致、响应的设计。 从网络内容生成PDF时,准确呈现这些框架而无需修改是确保设计一致性和减少开发工作的关键。

IronPDF:完整的 Bootstrap 框架支持

  • Bootstrap 5:完整的flexbox布局系统、CSS Grid、实用类和所有组件库
  • Bootstrap 4:完整的卡片组件、导航、flex实用工具和响应设计
  • Tailwind CSS:所有实用类首先提供浏览器精确渲染
  • 基础:完整的网格系统和组件支持
  • 现代 CSS3:Flexbox、CSS 网格、自定义属性、动画、过渡和转换

Real-world validation: IronPDF renders the Bootstrap homepage and all official examples with pixel-perfect fidelity.

代码示例:学习管理系统仪表板

using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container-fluid py-4'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
                <p class='text-muted mb-0'>Spring Semester 2025</p>
            </div>
            <span class='badge bg-success fs-5'>92% Overall Progress</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-primary'>
                    <div class='card-body'>
                        <div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
                        <h3 class='mb-1'>6/8</h3>
                        <p class='text-muted mb-0'>Courses Completed</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-success'>
                    <div class='card-body'>
                        <div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
                        <h3 class='mb-1'>24/28</h3>
                        <p class='text-muted mb-0'>Assignments Submitted</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-warning'>
                    <div class='card-body'>
                        <div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
                        <h3 class='mb-1'>48hrs</h3>
                        <p class='text-muted mb-0'>Study Time This Week</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-info'>
                    <div class='card-body'>
                        <div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
                        <h3 class='mb-1'>A- Average</h3>
                        <p class='text-muted mb-0'>Current GPA: 3.7</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-8'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-primary text-white'>
                        <h5 class='mb-0'>Current Courses</h5>
                    </div>
                    <div class='card-body p-0'>
                        <div class='list-group list-group-flush'>
                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Advanced Web Development</h6>
                                        <small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 95%'></div>
                                </div>
                                <small class='text-muted'>95% Complete | Final Project Due: May 15</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Database Systems</h6>
                                        <small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
                                    </div>
                                    <span class='badge bg-primary'>Grade: A-</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-primary' style='width: 88%'></div>
                                </div>
                                <small class='text-muted'>88% Complete | Midterm: April 28</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
                                        <small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
                                    </div>
                                    <span class='badge bg-warning text-dark'>Grade: B+</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-warning' style='width: 75%'></div>
                                </div>
                                <small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Computer Networks</h6>
                                        <small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 92%'></div>
                                </div>
                                <small class='text-muted'>92% Complete | Lab Exam: April 30</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card shadow-sm mb-3'>
                    <div class='card-header bg-warning text-dark'>
                        <h5 class='mb-0'>Upcoming Deadlines</h5>
                    </div>
                    <div class='card-body p-0'>
                        <ul class='list-group list-group-flush'>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-danger me-2'>Today</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Assignment 4</strong></small>
                                        <br><small class='text-muted'>Neural Networks Lab</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-warning text-dark me-2'>Apr 28</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Database Midterm</strong></small>
                                        <br><small class='text-muted'>Chapters 1-8</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-info me-2'>Apr 30</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Networks Lab Exam</strong></small>
                                        <br><small class='text-muted'>Practical Assessment</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-primary me-2'>May 5</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Research Paper</strong></small>
                                        <br><small class='text-muted'>15-20 pages</small>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>

                <div class='card shadow-sm'>
                    <div class='card-header bg-info text-white'>
                        <h5 class='mb-0'>Study Resources</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-grid gap-2'>
                            <button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
                            <button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
                            <button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
                            <button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");
using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container-fluid py-4'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
                <p class='text-muted mb-0'>Spring Semester 2025</p>
            </div>
            <span class='badge bg-success fs-5'>92% Overall Progress</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-primary'>
                    <div class='card-body'>
                        <div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
                        <h3 class='mb-1'>6/8</h3>
                        <p class='text-muted mb-0'>Courses Completed</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-success'>
                    <div class='card-body'>
                        <div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
                        <h3 class='mb-1'>24/28</h3>
                        <p class='text-muted mb-0'>Assignments Submitted</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-warning'>
                    <div class='card-body'>
                        <div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
                        <h3 class='mb-1'>48hrs</h3>
                        <p class='text-muted mb-0'>Study Time This Week</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-info'>
                    <div class='card-body'>
                        <div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
                        <h3 class='mb-1'>A- Average</h3>
                        <p class='text-muted mb-0'>Current GPA: 3.7</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-8'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-primary text-white'>
                        <h5 class='mb-0'>Current Courses</h5>
                    </div>
                    <div class='card-body p-0'>
                        <div class='list-group list-group-flush'>
                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Advanced Web Development</h6>
                                        <small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 95%'></div>
                                </div>
                                <small class='text-muted'>95% Complete | Final Project Due: May 15</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Database Systems</h6>
                                        <small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
                                    </div>
                                    <span class='badge bg-primary'>Grade: A-</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-primary' style='width: 88%'></div>
                                </div>
                                <small class='text-muted'>88% Complete | Midterm: April 28</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
                                        <small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
                                    </div>
                                    <span class='badge bg-warning text-dark'>Grade: B+</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-warning' style='width: 75%'></div>
                                </div>
                                <small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Computer Networks</h6>
                                        <small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 92%'></div>
                                </div>
                                <small class='text-muted'>92% Complete | Lab Exam: April 30</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card shadow-sm mb-3'>
                    <div class='card-header bg-warning text-dark'>
                        <h5 class='mb-0'>Upcoming Deadlines</h5>
                    </div>
                    <div class='card-body p-0'>
                        <ul class='list-group list-group-flush'>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-danger me-2'>Today</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Assignment 4</strong></small>
                                        <br><small class='text-muted'>Neural Networks Lab</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-warning text-dark me-2'>Apr 28</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Database Midterm</strong></small>
                                        <br><small class='text-muted'>Chapters 1-8</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-info me-2'>Apr 30</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Networks Lab Exam</strong></small>
                                        <br><small class='text-muted'>Practical Assessment</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-primary me-2'>May 5</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Research Paper</strong></small>
                                        <br><small class='text-muted'>15-20 pages</small>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>

                <div class='card shadow-sm'>
                    <div class='card-header bg-info text-white'>
                        <h5 class='mb-0'>Study Resources</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-grid gap-2'>
                            <button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
                            <button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
                            <button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
                            <button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

输出:专业的学习管理系统PDF,包含Bootstrap 5的网格系统、卡片组件、进度条、徽章、flexbox布局和列表组——都以完美的间距、排版和颜色准确性渲染。

PDFNet (Apryse) 部分现代CSS支持

PDFNet使用具有选择性CSS3支持的自定义HTML渲染引擎:

  • 有限的flexbox实现:Bootstrap 4/5基于flex的布局可能呈现不一致
  • 部分CSS Grid支持:基于网格的设计通常需要备用方案
  • JavaScript限制:与完整浏览器环境相比,执行较少
  • 框架测试所需:在生产使用前Bootstrap组件需验证

开发影响:团队必须单独测试每个Bootstrap组件,并且经常需要为PDFNet创建简化布局或替代CSS,增加复杂性并降低设计一致性。

全面的Bootstrap框架指导和现代CSS渲染功能,请参阅Bootstrap & Flexbox CSS指南

7. 打印PDF文件(代码示例)

打印PDF文件是现代应用程序处理PDF必须具备的功能。 在这里,我们将讨论如何使用这两个工具打印PDF文件。

7.1. 使用IronPDF打印PDF文件

IronPDF通过将PDF发送到计算机的默认打印机来打印PDF。 这将打开Windows打印接口——只需单击打印即可。

using IronPdf;

class PrintPDF
{
    static void Main(string[] args)
    {
        // Create a new PDF and print it
        var Renderer = new IronPdf.ChromePdfRenderer();
        PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

        // Send the PDF to the default printer to print
        Pdf.Print(300, false);
    }
}
using IronPdf;

class PrintPDF
{
    static void Main(string[] args)
    {
        // Create a new PDF and print it
        var Renderer = new IronPdf.ChromePdfRenderer();
        PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

        // Send the PDF to the default printer to print
        Pdf.Print(300, false);
    }
}
Imports IronPdf

Friend Class PrintPDF
	Shared Sub Main(ByVal args() As String)
		' Create a new PDF and print it
		Dim Renderer = New IronPdf.ChromePdfRenderer()
		Dim Pdf As PdfDocument = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")

		' Send the PDF to the default printer to print
		Pdf.Print(300, False)
	End Sub
End Class
$vbLabelText   $csharpLabel

7.2. 使用PDFNet打印PDF文件

PDFTron的PDFNet SDK也提供打印功能。 下面是使用PDFNet打印PDF文件的源代码片段。

using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;

namespace PDFPrintTestCS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Opening the input file...");
            using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
            {
                pdfdoc.InitSecurityHandler();
                Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
                PrinterMode printerMode = new PrinterMode();
                printerMode.SetAutoCenter(true);
                printerMode.SetAutoRotate(true);
                printerMode.SetCollation(true);
                printerMode.SetCopyCount(1);
                printerMode.SetDPI(300); // Set print quality to 300 DPI
                printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
                printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
                printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
                printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
                printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
                printerMode.SetOutputPageBorder(false);
                printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
                printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
                PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
                Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
            }
        }
    }
}
using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;

namespace PDFPrintTestCS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Opening the input file...");
            using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
            {
                pdfdoc.InitSecurityHandler();
                Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
                PrinterMode printerMode = new PrinterMode();
                printerMode.SetAutoCenter(true);
                printerMode.SetAutoRotate(true);
                printerMode.SetCollation(true);
                printerMode.SetCopyCount(1);
                printerMode.SetDPI(300); // Set print quality to 300 DPI
                printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
                printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
                printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
                printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
                printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
                printerMode.SetOutputPageBorder(false);
                printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
                printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
                PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
                Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
            }
        }
    }
}
Imports System
Imports pdftron
Imports pdftron.PDF
Imports pdftron.Common
Imports pdftron.Filters

Namespace PDFPrintTestCS
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Console.WriteLine("Opening the input file...")
			Using pdfdoc As New PDFDoc("tiger.pdf")
				pdfdoc.InitSecurityHandler()
				Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...")
				Dim printerMode As New PrinterMode()
				printerMode.SetAutoCenter(True)
				printerMode.SetAutoRotate(True)
				printerMode.SetCollation(True)
				printerMode.SetCopyCount(1)
				printerMode.SetDPI(300) ' Set print quality to 300 DPI
				printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto)
				printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom)
				printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait)
				printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations)
				printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale)
				printerMode.SetOutputPageBorder(False)
				printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium)
				printerMode.SetPaperSize(New Rect(0, 0, 612, 792))
				Dim pagesToPrint As New PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all)
				Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, Nothing)
			End Using
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

8. 从HTML生成PDF

两个库都具备HTML到PDF的转换功能,但方法略有不同。

8.1. 使用IronPDF从HTML生成PDF

IronPDF不需要使用JSON或加密机制。 IronPDF支持多种方法。 例如:

HTML文件到PDF

using IronPdf;

class HtmlToPdf
{
    static void Main(string[] args)
    {
        var Renderer = new IronPdf.ChromePdfRenderer();
        Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
    }
}
using IronPdf;

class HtmlToPdf
{
    static void Main(string[] args)
    {
        var Renderer = new IronPdf.ChromePdfRenderer();
        Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
    }
}
Imports IronPdf

Friend Class HtmlToPdf
	Shared Sub Main(ByVal args() As String)
		Dim Renderer = New IronPdf.ChromePdfRenderer()
		Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

URL到PDF

using IronPdf;

class UrlToPdf
{
    static void Main(string[] args)
    {
        IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
        var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
        Pdf.SaveAs("url.pdf");
    }
}
using IronPdf;

class UrlToPdf
{
    static void Main(string[] args)
    {
        IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
        var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
        Pdf.SaveAs("url.pdf");
    }
}
Imports IronPdf

Friend Class UrlToPdf
	Shared Sub Main(ByVal args() As String)
		Dim Renderer As New IronPdf.ChromePdfRenderer()
		Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
		Pdf.SaveAs("url.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 9

8.2. 使用PDFNet从HTML生成PDF

PDFNet还提供使用页面转换和URL转换的HTML到PDF转换功能。 由于代码冗长,这里只给出一个示例。

class HTML2PDFSample
{
    private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
    static HTML2PDFSample() {}

    static void Main(string[] args)
    {
        string output_path = "../../../../TestFiles/Output/html2pdf_example";
        string host = "https://www.pdftron.com";
        HTML2PDF.SetModulePath("../../../../../Lib");

        if (!HTML2PDF.IsModuleAvailable())
        {
            Console.WriteLine();
            Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
            return;
        }

        try
        {
            using (PDFDoc doc = new PDFDoc())
            {
                if (HTML2PDF.Convert(doc, host + "/"))
                    doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
                else
                    Console.WriteLine("Conversion failed.");
            }
        }
        catch (PDFNetException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
class HTML2PDFSample
{
    private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
    static HTML2PDFSample() {}

    static void Main(string[] args)
    {
        string output_path = "../../../../TestFiles/Output/html2pdf_example";
        string host = "https://www.pdftron.com";
        HTML2PDF.SetModulePath("../../../../../Lib");

        if (!HTML2PDF.IsModuleAvailable())
        {
            Console.WriteLine();
            Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
            return;
        }

        try
        {
            using (PDFDoc doc = new PDFDoc())
            {
                if (HTML2PDF.Convert(doc, host + "/"))
                    doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
                else
                    Console.WriteLine("Conversion failed.");
            }
        }
        catch (PDFNetException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
Friend Class HTML2PDFSample
	Private Shared pdfNetLoader As pdftron.PDFNetLoader = pdftron.PDFNetLoader.Instance()
	Shared Sub New()
	End Sub

	Shared Sub Main(ByVal args() As String)
		Dim output_path As String = "../../../../TestFiles/Output/html2pdf_example"
		Dim host As String = "https://www.pdftron.com"
		HTML2PDF.SetModulePath("../../../../../Lib")

		If Not HTML2PDF.IsModuleAvailable() Then
			Console.WriteLine()
			Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.")
			Return
		End If

		Try
			Using doc As New PDFDoc()
				If HTML2PDF.Convert(doc, host & "/") Then
					doc.Save(output_path & "_01.pdf", SDFDoc.SaveOptions.e_linearized)
				Else
					Console.WriteLine("Conversion failed.")
				End If
			End Using
		Catch e As PDFNetException
			Console.WriteLine(e.Message)
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel
class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 10

9. 许可

IronPDF是一个提供免费开发者许可证的库。 IronPDF还提供特殊的价格结构:轻量包从$799开始,没有隐藏费用。 也可以重新分发SaaS和OEM产品。 所有许可证包括30天退款保证、一年的软件支持和升级、开发/测试/阶段/生产有效性,以及永久许可证(一劳永逸)。 IronPDF许可证为用户的需求提供最大性能。 访问这个IronPDF许可页面以查看IronPDF的完整价格结构和许可证。

class="content-img-align-center">
class="center-image-wrapper"> A Comparison Between IronPDF and PDFNet, Figure 11

PDFTron PDFNet SDK提供多种许可证选项,以满足您的业务需求。 三种类型的许可证附带企业和OEM重新分发。 企业许可证仅用于组织使用,不能用于应用分发。 需要文件系统访问的附加API也包括在许可证中。 所有许可证附带许可证密钥。 这三种类型的许可证是:

  • 查看器
  • 查看器 & Annotation
  • 核心SDK

有关其许可证结构的更多信息,请访问此PDFTron许可证信息页面

10. 结论

IronPDF提供了许多功能和功能,用于处理PDF文件并将其转换为不同的格式。 从HTML到PDF的转换以矢量格式生成,适合高质量的商业打印。 因此,您将获得清晰、高质量的PDF。 许可证和价格信息可以在网站上找到。

与IronPDF相似,PDFNet帮助转换、注解、签名、填写、转换和编辑PDF文件。 它支持多个平台,包括Windows、iOS、Android、WEB和Linux。 对于生产用途,PDFNet SDK需要产品密钥。

IronPDF的许可证是面向开发者的,这意味着您需要根据将要使用产品的开发者数量来获得许可证。 另一方面,PDFNet许可证的工作方式不一样,而是按功能许可证进行操作。 这意味着您需要获得支持所需功能的许可证。 IronPDF的许可证开箱即用地包含所有功能。 对于PDFNet,某些功能,如文档转换,需要作为附加组件购买。

IronPDF库以有组织的方式提供功能,使得可以使用几行代码执行大量任务。 Iron Software目前以两个工具的价格提供五个工具包。 Iron Suite中包含的工具是:

请访问此Iron Suite信息页面以探索Iron Suite

[{i:(PDFTron是其各自所有者的注册商标。 本网站与PDFTron无关、未经PDFTron批准或赞助。 所有产品名称、徽标和品牌均为其各自所有者的财产。 比较仅供参考,反映的是撰写时的公开信息。]

常见问题解答

文章中比较了哪些关键的 PDF 库?

文章比较了由 Iron Software 开发的 IronPDF 和 PDFTron 的 PDFNet,重点关注它们在 .NET Framework 中 C# 开发者的能力。

如何在C#中将HTML转换为PDF?

您可以使用 IronPDF 的 RenderHtmlAsPdf 方法将 HTML 字符串转换为 PDF。此外,您可以使用 IronPDF 强大的 Chromium 引擎将 HTML 文件和 URL 转换为 PDF。

IronPDF 支持哪些操作系统?

IronPDF 支持多个操作系统,包括 Windows、Azure 和 Docker,允许无缝集成到多样化的开发环境中。

IronPDF 如何处理 PDF 数据提取?

IronPDF 允许高效的 PDF 数据提取,使开发人员可以轻松地从 PDF 文档中检索文本和图像以供进一步处理。

IronPDF有哪些安装选项?

IronPDF 可以通过 Visual Studio NuGet 包管理器、Visual Studio 命令行或直接从 NuGet Gallery 安装,确保开发人员轻松设置。

IronPDF 和 PDFNet 在许可方面有哪些不同?

IronPDF 提供以开发人员为中心的许可证,其中包括所有功能,而 PDFNet 的许可证是基于功能的,可能需要额外购买特定功能。

IronPDF 适合大型 PDF 任务吗?

是的,IronPDF 因易于使用和代码需求少而受到赞誉,使其适合高效处理大型 PDF 任务。

Iron Software 套件中包含哪些附加工具?

Iron Software 套件包括 IronBarcode、IronXL、IronOCR、IronPDF 和 IronWebscraper,作为一个套装提供,增强了对开发人员的吸引力。

Curtis Chau
技术作家

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

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