在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
您在为 .NET Framework 寻找完美的 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 中添加页眉和页脚。使用打印选项属性,您可以为每个文档页面创建页眉和页脚。这些参数在 ChromePdfRenderer 对象中可用。本示例在 .NET Core 控制台应用程序中运行。
它能让用户从 PDF 生成照片,也能从照片生成 PDF。它支持图像提取、各种图像扩展和 PDF 打印。
IronPDF 还包括 128 位 PDF 加密、密码保护 PDF 锁定和 PDF 数字签名。
IronPDF 工具允许您为 PDF 添加水印、添加页面、删除页面、背景、前景等。
IronPDF 支持几乎所有与 C# 兼容的操作系统和框架,例如
PDFTron 的 PDFNet .NET SDK 为网络、移动、桌面或服务器上的任何框架或应用程序带来了精确的 PDF 处理、注释、编辑和创建功能。它利用您的基础架构管理整个文档和信息管理流程,无需依赖第三方服务器。PDFTron 的网络平台附带支持平台的 JS 版本和所有 PDF SDK 的演示许可证密钥。
PDFNet 最显著的优势之一是它真正实现了跨平台,允许我们的用户在许多不同的移动和桌面环境中为其工作流程和应用程序简单地添加 PDF 兼容性和相关业务功能,同时使用几乎相同的界面。
PDFNet SDK 与许多平台和框架兼容。为确保平台一致性,JavaScript API 的使用方式与 PDFNet API 相同。还提供 Node.js 和 Electron 版本的 SDK。该软件包需要非托管的附加二进制文件。
为跨在线、移动和桌面平台的用户提供安全、可扩展和高保真的 PDF 阅读和编辑功能。
创建自定义签名程序。数字签名文件可进行认证、验证和密封。
删除文档中的敏感数据,如个人信息或个人健康信息,同时保留文档的可搜索性。
可以添加、删除或重新排列页面。文件可以组合、合并或分割成不同部分。在同一阅读器中或旁边同时查看多个文档。
在本文中,我们将使用控制台应用程序生成 PDF 文档。
打开 Visual Studio 软件,进入 "文件 "菜单。选择 "新建项目",然后选择控制台应用程序。
在相应的文本框中输入项目名称并选择路径。然后点击创建按钮。选择所需的 .NET 框架,如下图所示:
Visual Studio 项目现在将生成控制台应用程序的结构。完成后,它将打开 program.cs 文件,你可以在其中编写和执行源代码。
现在我们可以添加库并测试程序了。
IronPDF 库可以通过四种不同方式下载和安装。它们是
Visual Studio 软件提供了 NuGet 包管理器选项,可直接将软件包安装到解决方案中。下面的截图显示了如何打开 NuGet 包管理器。
打开软件包管理器图形用户界面后,单击 "浏览 "选项卡并搜索 "IronPDF:"。
在上图中,我们可以看到搜索到的相关软件包列表。选择 IronPDF 选项并将软件包安装到我们的解决方案中。
Install-Package IronPdf
现在项目中将安装 IronPDF 软件包。
第三种方法是直接从网页下载 NuGet 软件包。
点击 这里 直接从网页下载最新软件包。下载完成后,按照以下步骤将软件包添加到项目中。
PDFNet SDK 可通过四种不同方式下载和安装。
如上所述,进入 Visual Studio 中的工具并打开 NuGet 包管理器。这时会出现一个列表--点击管理解决方案的 NuGet 包。
此时会出现一个带有搜索栏的窗口。搜索 PDFNet 并将其安装到项目中。
Install-Package PDFNet ---Version 9.2.0
第三种方法是直接从网页下载 NuGet 软件包。
您还可以使用 PDFNetLoader.dll 文件安装 PDFNet API。下载地址 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 的整个定价结构和许可证。
PDFTron PDFNet SDK 有多种许可证可供选择,以满足您的业务需求。企业和 OEM 再分发有三种许可证。企业许可证仅供组织使用,不能用于应用程序分发。许可证还包含需要文件系统访问权限的附加 API。所有许可证都附带一个许可证密钥。三种许可证分别是
有关其许可证结构的更多信息,请访问此处 链接.
IronPDF 为处理 PDF 文件并将其转换为不同格式提供了大量功能和特性。从 HTML 到 PDF 的转换是以适合高质量商业印刷的矢量格式进行的。因此,您将收到清晰、高质量的 PDF 文件。许可证和价格信息可在网站上找到。
与 IronPDF 相似,PDFNet 可帮助转换、注释、签名、填充、转换和编辑 PDF 文件。它支持多种平台,包括 Windows、IOS、Android、WEB 和 Linux。生产使用时,PDFNet SDK 需要产品密钥。
IronPDF 的许可证是以开发人员为中心的,这意味着您必须根据有多少开发人员将使用该产品来获得许可证。另一方面,PDFNet 许可证的工作方式与此不同,它是基于功能的许可证。这意味着您必须获得支持所需功能的许可证。IronPDF 许可证包括开箱即用的所有功能。而 PDFNet 的某些功能(如文档转换)需要作为附加组件购买。
IronPDF 库以有组织的方式提供各种功能,使编写代码变得容易,只需几行代码就能完成大任务。目前,Iron Software 只需支付两个工具的价格,就能获得五个工具包。IronSuite 中包含的工具有
请访问此链接,了解 Iron Suite