在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
正在寻找适用于.NET框架的完美PDF工具吗?
在本文中,我们将探讨如何在C#中处理PDF文件(最流行的编程语言之一). 我们将讨论两个基于 .NET Framework 的 C# 领先行业的 PDF 工具,并使用代码示例来比较它们的性能和功能。 最后,我们将检查他们的许可证详情,并学习如何获取许可证密钥。
这两个PDF库是:
IronPDF 是 Iron Software 开发的一个 C# .NET 库,旨在使用单一库解决 C# .NET 开发人员的所有 PDF 问题。 IronPDF 由 chromium 引擎提供支持,具有多种有用且强大的功能,例如将 HTML5、JavaScript、CSS 和图像文件转换为 PDF,创建自定义页眉和页脚,以及精确显示 PDF 在浏览器中的显示效果。 IronPDF允许您从PDF文件中读取数据,并将其自动插入到您的.NET应用程序和数据存储系统中。 您可以从旧的PDF文档存储中导入、移动和索引内容到您的文档管理和商业应用程序中。
此功能允许您从多种格式(如HTML、MVC视图、Web表单、HTML字符串和URL)生成PDF文件。
在许多情况下,您可以轻松地从PDF中提取嵌入的文本。 然而,如果失败了,您的文本很可能嵌入在图像中。 要扫描文档以获取视觉文本而非纯文本,请使用IronOCR图书馆
在创建PDF或对现有PDF进行修改时,可以添加页眉和页脚。 使用 Print Options 属性,您可以为每个文档页面创建页眉和页脚。 这些参数在 ChromePdfRenderer 对象上可用。 此示例在 .NET Core 控制台应用程序中运行。
这使用户能够从PDF生成照片以及从照片生成PDF。它支持图像提取、各种图像扩展和PDF打印。
IronPDF还包括128位PDF加密、密码保护的PDF锁定以及PDF的数字签名。
IronPDF 工具允许您为您的 PDF 添加水印、添加页面、删除页面、背景、前景等功能。
IronPDF支持几乎所有与C#兼容的操作系统和框架,例如:
PDFTron 的 PDFNet .NET SDK 为 Web、移动设备、桌面或服务器上的任何框架或应用程序带来精确的 PDF 处理、注释、编辑和创建功能。 它管理整个文档和信息管理过程,并结合您的基础设施,消除了对第三方服务器依赖的需要。 PDFTron的网页平台配有支持平台的JS版本和所有PDF SDK的演示许可密钥。
PDFNet 最显著的好处之一是它真正的跨平台性,使我们的用户能够简单地将PDF兼容性和相关业务功能添加到他们的工作流程和多种不同的移动及桌面环境中的应用程序,同时几乎使用相同的界面。
PDFNet SDK 与多个平台和框架兼容。 为确保平台一致性,JavaScript API 的使用方式与 PDFNet API 相同。 还提供 Node.js 和 Electron 版本的 SDK。 此包需要非托管的附加二进制文件。
为在线、移动和桌面平台的用户带来安全、可扩展且高保真的PDF阅读和编辑能力。
创建自定义签名程序。 数字签名文件可以进行认证、验证和密封。
从文档中删除敏感数据,例如个人信息或个人健康信息,同时保持文档可搜索。
可以添加、删除或重新排列页面。 文档可以被组装、合并或分割成部分。 在同一个阅读器中或彼此相邻的位置同时查看多个文件。
在本文中,我们将使用控制台应用程序生成 PDF 文档。
打开 Visual Studio 软件,进入 "文件 "菜单。 选择 "新项目",然后选择控制台应用程序。
在相应文本框中输入项目名称并选择路径。 然后,点击创建按钮。 选择所需的 .NET Framework,如下图所示:
Visual Studio 项目现在将生成控制台应用程序的结构。 完成后,它将打开 program.cs
文件,您可以在其中编写和执行源代码。
现在我们可以添加库并测试程序了。
IronPDF 库可以通过四种不同的方式下载和安装。 它们是
Visual Studio 软件提供了 NuGet 软件包管理器选项,可直接将软件包安装到解决方案中。 下面的截图显示了如何打开 NuGet 包管理器。
打开软件包管理器图形用户界面后,单击 "浏览 "选项卡并搜索 "IronPDF:"。
在上图中,我们可以看到搜索到的相关软件包列表。 选择 IronPDF 选项并将包安装到我们的解决方案中。
在 Visual Studio 菜单中,转到 工具 > NuGet 包管理器 > 包管理器控制台
Install-Package IronPdf
现在项目中将安装 IronPDF 软件包。
第三种方法是直接从以下网站下载 NuGet 软件包NuGet Gallery IronPDF 软件包.
直接从IronPDF 下载页面. 下载完成后,请按照以下步骤将软件包添加到项目中。
PDFNet SDK 可以通过四种不同的方式下载和安装。
如上所述,转到Visual Studio中的工具,然后打开NuGet包管理器。 将出现一个列表--点击管理 NuGet 软件包以获取解决方案。
将出现一个带有搜索栏的窗口。 搜索PDFNet并将其安装在项目中。
Install-Package PDFNet ---Version 9.2.0
第三种方法是直接从以下网站下载 NuGet 软件包NuGet Gallery PDFNet 软件包.
您还可以使用 PDFNetLoader.dll 文件安装 PDFNet API。下载地址PDFNetLoader.dll 的 GitHub 发行版本.
下载包,将其放在项目的 bin 文件中,并运行。 在您的 Visual Studio 项目中,添加 PDFNetLoader.dll 作为引用。
打印 PDF 文件是现代应用程序处理 PDF 文件时必备的功能。 在这里,我们将讨论如何使用这两种工具打印PDF文件。
IronPDF 通过将 PDF 发送到计算机的默认打印机来打印 PDF。 这将打开 Windows 打印界面--只需单击打印即可实现。
using IronPdf;
// 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;
// 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
' Create a new PDF and print it
Private Renderer = New IronPdf.ChromePdfRenderer()
Private Pdf As PdfDocument = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
' Send the PDF to the default printer to print
Pdf.Print(300, False)
PDFTron的PDFNet SDK还提供了打印功能。 以下是在PDFNet中打印PDF文件的源代码片段。
using System;
using System.Drawing;
using System.Drawing.Printing;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;
namespace PDFPrintTestCS
{
Console.WriteLine("Opening the input file...");
using (pdfdoc = new PDFDoc(input_path + "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); // regardless of ordering, an explicit DPI setting overrides the OutputQuality setting
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 System.Drawing;
using System.Drawing.Printing;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;
namespace PDFPrintTestCS
{
Console.WriteLine("Opening the input file...");
using (pdfdoc = new PDFDoc(input_path + "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); // regardless of ordering, an explicit DPI setting overrides the OutputQuality setting
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 System.Drawing
Imports System.Drawing.Printing
Imports pdftron
Imports pdftron.PDF
Imports pdftron.Common
Imports pdftron.Filters
Namespace PDFPrintTestCS
Console.WriteLine("Opening the input file...")
pdfdoc = New PDFDoc(input_path & "tiger.pdf")
Using pdfdoc
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) ' regardless of ordering, an explicit DPI setting overrides the OutputQuality setting
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 Namespace
这两个库都具有HTML到PDF转换功能,但方法略有不同。
IronPDF 不需要使用 JSON 或加密机制。 IronPDF支持多种方法。 例如
using IronPdf;
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
using IronPdf;
var Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
Imports IronPdf
Private Renderer = New IronPdf.ChromePdfRenderer()
Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf")
using IronPdf;
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
using IronPdf;
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
Imports IronPdf
Private Renderer As New IronPdf.ChromePdfRenderer()
Private Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
Pdf.SaveAs("url.pdf")
PDFNet还提供了HTML转PDF的功能,包括页面转换和URL转换。 由于代码较长,我们在这里只给出一个示例。
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";
string page0 = "/";
string page1 = "/support";
string page2 = "/blog";
HTML2PDF.SetModulePath("../../../../../Lib");
if (!HTML2PDF.IsModuleAvailable())
{
Console.WriteLine();
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
Console.WriteLine("-------------------------------");
Console.WriteLine("The HTML2PDF module is an optional add-on, available for download");
Console.WriteLine("at http://www.pdftron.com/. If you have already downloaded this");
Console.WriteLine("module, ensure that the SDK is able to find the required files");
Console.WriteLine("using the HTML2PDF.SetModulePath() function.");
Console.WriteLine();
return;
}
try
{
using (PDFDoc doc = new PDFDoc())
{
if ( HTML2PDF.Convert(doc, host + page0) )
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";
string page0 = "/";
string page1 = "/support";
string page2 = "/blog";
HTML2PDF.SetModulePath("../../../../../Lib");
if (!HTML2PDF.IsModuleAvailable())
{
Console.WriteLine();
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
Console.WriteLine("-------------------------------");
Console.WriteLine("The HTML2PDF module is an optional add-on, available for download");
Console.WriteLine("at http://www.pdftron.com/. If you have already downloaded this");
Console.WriteLine("module, ensure that the SDK is able to find the required files");
Console.WriteLine("using the HTML2PDF.SetModulePath() function.");
Console.WriteLine();
return;
}
try
{
using (PDFDoc doc = new PDFDoc())
{
if ( HTML2PDF.Convert(doc, host + page0) )
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"
Dim page0 As String = "/"
Dim page1 As String = "/support"
Dim page2 As String = "/blog"
HTML2PDF.SetModulePath("../../../../../Lib")
If Not HTML2PDF.IsModuleAvailable() Then
Console.WriteLine()
Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.")
Console.WriteLine("-------------------------------")
Console.WriteLine("The HTML2PDF module is an optional add-on, available for download")
Console.WriteLine("at http://www.pdftron.com/. If you have already downloaded this")
Console.WriteLine("module, ensure that the SDK is able to find the required files")
Console.WriteLine("using the HTML2PDF.SetModulePath() function.")
Console.WriteLine()
Return
End If
Try
Using doc As New PDFDoc()
If HTML2PDF.Convert(doc, host & page0) 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
IronPDF是一个提供免费开发者许可的库。 IronPDF还提供特殊的价格结构:轻量包从$749起,没有隐藏费用。 也可以重新分配 SaaS 和 OEM 产品。 所有许可证包括30天退款保证、一年的软件支持和升级服务、开发/测试/分期/生产环境的有效性,以及永久许可证。(一次性购买). IronPDF 许可证为用户需求提供最大化的性能。 转到这里IronPDF 许可页面查看 IronPDF 的整个定价结构和许可证。
PDFTron PDFNet SDK 提供了几种针对您业务需求的许可选择。 三种许可证附带企业和OEM再分销。 企业许可证仅限组织使用,不能用于应用程序分发。 附加的 API 需要文件系统访问权限也包含在许可证中。 所有许可证都附带一个许可证密钥。 三种许可证类型是
核心SDK
有关其许可证结构的更多信息,请访问此处PDFTron 许可证信息页面.
IronPDF提供了许多功能,用于处理PDF文件并将其转换为不同的格式。 HTML转换为PDF的过程中,将生成适用于高质量商业印刷的矢量格式。 因此,您将获得清晰、高质量的PDF。 许可证和定价信息可以在网站上找到。
与IronPDF类似,PDFNet帮助进行PDF文件的转换、注释、签名、填充、转换和编辑。 它支持多个平台,包括Windows、IOS、Android、WEB和Linux。 对于生产使用,PDFNet SDKs 需要一个产品密钥。
IronPDF的许可证以开发者为中心,这意味着您需要根据将要使用该产品的开发者数量来获取许可证。 另一方面,PDFNet许可证的工作方式并不相同,而是基于功能的许可证。 这意味着您需要获取支持所需功能的许可证。 IronPDF许可证包括开箱即用的所有功能。 使用PDFNet时,某些功能,如文档转换,需要作为附加组件购买。
IronPDF库以有序的方式提供功能,使编写使用几行代码执行大任务的代码变得简单。 Iron Software 目前提供五工具包,价格仅为两包。 IronSuite 中包含的工具有