跳至页脚内容
产品比较

IronPDF与XFINIUM.PDF之间的比较

不断进步的技术意味着为所有人,特别是开发人员提供更智能的解决方案。 现在,自动化是软件开发流程的关键。 多年来,处理 C# PDF 文件一直是开发人员面临的问题。 创建 PDF 文件内容时需要考虑许多因素,尤其是在将内容从不同格式转换为 PDF 时。 现在,这些问题已通过构建多个库解决,旨在帮助从不同格式读取、编写、创建和转换为 PDF。

本文将比较两个最受欢迎的 .NET 和 .NET Core 开发人员使用的 PDF 库。 这两个库是:

  • IronPDF 库
  • XFININIUM.PDF 库

IronPDF 和 XFINIUM.PDF 是两个提供在 .NET 和 .NET Core 中创建、操作和打印 PDF 方法的库。 接下来的问题是决定哪个 C# PDF 库最适合您的 .NET 项目。 您可以通过阅读以下两个库之间的比较及其各自优秀的 PDF 转换和操作特性来权衡您的决定。

首先,让我们来看看这两个库都有哪些功能,然后再进行比较。

XFINIUM.PDF 库及其功能

XFINIUM.PDF 库是跨平台的 PDF 开发库。 它提供了多种功能,适用于初学者和高级 PDF 开发者。 无论您是想创建报告、填写 PDF 表单、构建 PDF 组合、从 PDF 报告中删除敏感数据或将 PDF 报告转换为多页 TIFF 图像。

XFINIUM.PDF 有两个版本可供选择:Generator Edition 包括 PDF 生产和编辑,Viewer Edition 包含 Generator Edition 的所有功能以及 PDF 渲染和查看。 功能部分说明了哪些功能包含在两个版本中,哪些仅在 Viewer Edition 中可用。

XFINIUM.PDF 完全用 C# 编写,是完全托管的代码。 它按每个开发者许可,免版税分发,允许您自由分发程序而无需产生额外费用。

生成器版和查看器版之间有什么区别?

生成器版是查看器版的一个子集。 生成器版提供创建和编辑 PDF 的功能,而查看器版为生成器版添加了 PDF 渲染功能。 查看器版可以将 PDF 页转换为 RAW、BMP、GIF、JPG、PNG 和 TIFF 图像。

XFINIUM.PDF 规范

一些重要的功能包括:

安全性

  • 用户和所有者密码
  • 文档访问权限
  • 40 位和 128 位 RC4 加密
  • 128 位和 256 位 AES 加密
  • 内容遮盖
  • 禁用文本复制/粘贴

数字签名

  • 用 X509 证书批准和认证数字签名
  • 基本 CMS 和 PAdES 数字签名使用 SHA256 / SHA384 / SHA512
  • 签名时间戳
  • OCSP 和 CRL 信息包含在数字签名中
  • 文档安全存储
  • 文档时间戳
  • 启用 LTV(长期验证)数字签名
  • 将现有签名解码为 ASN.1 对象
  • 从数字签名中提取证书
  • 保存已签名的 PDF 文档副本

条码

  • 内置矢量条码引擎,无需条码图像或条码字体
  • 一维条码:
  • 通用条码:Codabar、Code 11、Code 25、Code 25 Interleaved、Code 39、Code 39 Extended、Code 93、Code 93 Extended、Code 128 A、Code 128 B、Code 128 C、COOP 25、Matrix 25、MSI/Plessey
  • 医药条码:Code 32、Pharmacode、PZN(Pharma-Zentral-Nummer)
  • 二维条码:
  • DataMatrix、QR、PDF417、Micro PDF417、Codablock F、Code 16K

内容提取

  • 提取具有位置信息的文本片段级别和字形级别
  • 提取文本作为带有位置信息的单词,单词级别和字形级别
  • 从用户定义的区域提取文本和单词
  • 提取图像,包括图像信息,例如图像的像素大小、每像素位数、颜色空间、PDF 页面上的图像位置、PDF 页面的图像大小、图像水平和垂直分辨率

低级 COS API

  • 添加、编辑和删除 COS 对象
  • 支持的 COS 对象:字符串、数字、名称、布尔值、空值、数组、字典和流

PDF 渲染(仅限查看器版)

  • 将 PDF 页面渲染为图像:RAW、BMP、GIF、JPG、PNG 和 TIFF ARGB、RGBA、BGRA、RGB、BGR 和灰度字节布局用于 RAW 图像
  • PDF 到多页 TIFF(彩色/灰度/黑白 CCITT G4)

IronPDF 的主要功能

IronPDF .NET PDF 库是开发人员特别是 C# 程序员的梦想成真。 使用这个令人惊叹的工具,您可以轻松构建 .NET 的核心 PDF 库。

IronPDF 使用 .NET Chromium 引擎将 HTML 页面转换为 PDF 文件。无需使用复杂的 API 来设计或定位 PDF。 IronPDF 支持标准在线文档,包括 HTML、ASPX、JS、CSS 和图片。

您还可以使用 HTML5、CSS、JavaScript 和图片来开发 .NET PDF 库。 PDF 可轻松编辑、盖章并添加页眉和页脚。 它还能让阅读 PDF 文本和提取图形变得轻而易举。

免费下载 IronPDF,并立即在您的 .NET 项目中使用。

IronPDF C# 库的突出特点

以下是一些关键特性:

生成 PDF(HTML 到 PDF)

  • HTML4/5、CSS 和 JavaScript 都可以用来创建 PDF 文档。
  • 加载具有自定义网络登录凭据、用户代理、代理、Cookie、HTTP 头和表单变量的 URL,以启用 HTML 登录表单后的登录。

您可以在没有 Adobe Acrobat 的情况下编辑现有 PDF 文档

  • 应该读取并填写表单字段中的数据。
  • 从 PDF 中提取图形和文本。
  • 可以用新的 HTML 内容更新任何当前的 PDF 页。
  • 页眉和页脚应该是逻辑或 HTML。

现有 PDF 文档可以被操作

  • 可以加载和解析现有的 PDF 文档。
  • PDF 文档中的内容可以合并和分离。
  • 添加页眉、页脚、注释、书签、水印、文本和图像资产。

从多种文件格式转换

  • ASPX WebForms - 将 ASP.NET webforms 转换为可以在浏览器中查看的可打印 PDF,仅需三行代码。
  • 在文档中将 HTML 转换为 PDF。
  • 自定义“基本 URL”,允许从 Internet 上的任何地方访问资产文件。
  • 虚拟视口允许响应式设计(宽度和高度)。
  • 接受以任何主要文件格式编码的 HTML 文件(默认为 UTF-8)。

打印和保存

  • 文件、二进制数据和 MemoryStreams 都可以保存和加载。
  • 电视或计算机屏幕的 CSS 介质类型用于打印。
  • 通过将 PDF 文件转换为 PrintDocument 对象(代码最少)而无需 Adobe Acrobat 即可打印 PDF 文件。
  • 可以导出包含有关成功与调试错误的 API 正式日志文件,以便在源代码中解决问题。

IronPDF 可以在几乎所有与 C# 兼容的操作系统和框架上使用,包括以下:

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

IronPDF C# 库安装

有四种下载和安装 IronPDF 库的方法。 具体如下

  1. 使用 Visual Studio 2.开发人员命令提示符 3.直接下载 NuGet 软件包
  2. 下载 IronPDF .DLL 库

使用Visual Studio

Visual Studio 提供 NuGet 包管理器以便在您的项目中安装 NuGet 包。 您可以通过项目菜单或通过右键点击解决方案资源管理器中的项目访问它。 以下截图显示了这两个选项,如图 1 和图 2 所示。

class="content-img-align-center">使用 Visual Studio 中的项目菜单访问 NuGet 包管理器

class="content__image-caption">图 1. 使用 Visual Studio 中的项目菜单访问 NuGet 包管理器

class="content-img-align-center">使用 Visual Studio 中的上下文菜单访问 NuGet 包管理器

class="content__image-caption">图 2. 使用 Visual Studio 中的上下文菜单访问 NuGet 包管理器

选定后,浏览 IronPdf 软件包并安装,如下图所示。

class="content-img-align-center">使用 Visual Studio 中的 NuGET 包管理器安装 IronPDF 库

class="content__image-caption">图 3. 使用 Visual Studio 中的 NuGET 包管理器安装 IronPDF 库

使用开发人员命令提示

另一个下载和安装 IronPDF C# 库的方法是按照以下步骤使用开发人员命令提示安装 IronPDF NuGet 包

  • 打开 开发人员命令提示 通常在 Visual Studio 文件夹下
  • 键入以下命令:

    nuget install IronPdf
    nuget install IronPdf
    SHELL
  • 按回车键
  • 这将下载并安装软件包
  • 重新加载 Visual Studio 项目并开始使用

直接下载 NuGet 包

下载并安装 IronPDF 第三种方法是按照下面的步骤进行。 可以通过直接访问 NuGet 站点并下载包来完成。 步骤如下

  • 导航到 IronPdf NuGet 页面
  • 选择下载包
  • 双击下载的软件包
  • 软件包将安装
  • 重新加载 Visual Studio 项目并开始使用

通过下载库安装 IronPDF

您可以从 IronPDF 下载直接下载 IronPDF .DLL 文件。

class="content-img-align-center">从 IronPDF 网站下载 IronPDF 库 DLL

class="content__image-caption">图 4. 从 IronPDF 网站下载 IronPDF 库 DLL

通过使用以下步骤在您的项目中引用库:

  • 右键点击解决方案资源管理器中的解决方案
  • 选择引用
  • 浏览 IronPDF.dll 库
  • 点击确定

全部完成了! IronPDF 已经下载、安装并准备使用。 但是,在此之前,我们应该安装 XFINIUM.PDF API。

XFINIUM.PDF 安装

在 .NET Core 中,我们可以将 Xfinium PDF 安装为 cake 插件或 cake 工具。

# Install Xfinium.Pdf.NetCore as a Cake Addin
#addin nuget:?package=Xfinium.Pdf.NetCore&version=10.2.0
# Install Xfinium.Pdf.NetCore as a Cake Addin
#addin nuget:?package=Xfinium.Pdf.NetCore&version=10.2.0
SHELL
# Install Xfinium.Pdf.NetCore as a Cake Tool
#tool nuget:?package=Xfinium.Pdf.NetCore&version=10.2.0
# Install Xfinium.Pdf.NetCore as a Cake Tool
#tool nuget:?package=Xfinium.Pdf.NetCore&version=10.2.0
SHELL

接下来,让我们深入比较 IronPDF 和 XFINIUM.PDF。

在 .NET Core 中创建简单的 PDF 文档

在当今世界软件开发人员必须知道如何通过 C# 代码动态创建 PDF 文件,因为几乎所有项目中都需要这样做。 您可能需要出于各种原因创建 PDF 文件,例如根据用户输入生成报告、将用户文本保存为 PDF、提取 HTML 信息并将其转换为 PDF 等。

两种库均包含将 HTML 网页转换为 PDF 的功能。 让我们逐个查看每个库的代码。

使用 IronPDF.

IronPDF 有多个创建 PDF 文件的方法。

将现有 URL 转换为 PDF.

IronPDF 使得从现有 URL 转换 HTML 为 PDF 文档变得简单。 JavaScript、图像、表单和 CSS 均获得高水平支持。

下面的代码使用 IronPDF 直接从网站地址创建 PDF 文档。

// Create an instance of the ChromePdfRenderer
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();

// Render a URL to PDF
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");

// Save the PDF
Pdf.SaveAs("url.pdf");
// Create an instance of the ChromePdfRenderer
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();

// Render a URL to PDF
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");

// Save the PDF
Pdf.SaveAs("url.pdf");
' Create an instance of the ChromePdfRenderer
Dim Renderer As New IronPdf.ChromePdfRenderer()

' Render a URL to PDF
Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")

' Save the PDF
Pdf.SaveAs("url.pdf")
$vbLabelText   $csharpLabel

将 HTML 输入字符串转换为 PDF 文件

下面的代码演示了如何使用 HTML 输入字符串渲染 PDF 页面。 您可以只使用 HTML,也可以将其与 CSS、图片和 JavaScript 结合使用。

// Create an instance of the ChromePdfRenderer
var Renderer = new IronPdf.ChromePdfRenderer();

// Render a simple HTML string to PDF
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");

// Save the PDF
PDF.SaveAs("pixel-perfect.pdf");

// Load external HTML assets: images, CSS, and javascript
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from 
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");

// Save the advanced PDF with external assets
AdvancedPDF.SaveAs("html-with-assets.pdf");
// Create an instance of the ChromePdfRenderer
var Renderer = new IronPdf.ChromePdfRenderer();

// Render a simple HTML string to PDF
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");

// Save the PDF
PDF.SaveAs("pixel-perfect.pdf");

// Load external HTML assets: images, CSS, and javascript
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from 
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");

// Save the advanced PDF with external assets
AdvancedPDF.SaveAs("html-with-assets.pdf");
' Create an instance of the ChromePdfRenderer
Dim Renderer = New IronPdf.ChromePdfRenderer()

' Render a simple HTML string to PDF
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>")

' Save the PDF
PDF.SaveAs("pixel-perfect.pdf")

' Load external HTML assets: images, CSS, and javascript
' An optional BasePath 'C:\site\assets\' is set as the file location to load assets from 
Dim AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")

' Save the advanced PDF with external assets
AdvancedPDF.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

使用 XFINIUM.PDF

使用 XFINIUM.PDF 创建空白 PDF 文档只需三行代码:一行用于创建文档,一行用于创建页面,另一行用于保存文档。

// Create a new PDF document
PdfFixedDocument document = new PdfFixedDocument();

// Add a page to the document
PdfPage page = document.Pages.Add();

// Save the document as a PDF file
document.Save("empty.pdf");
// Create a new PDF document
PdfFixedDocument document = new PdfFixedDocument();

// Add a page to the document
PdfPage page = document.Pages.Add();

// Save the document as a PDF file
document.Save("empty.pdf");
' Create a new PDF document
Dim document As New PdfFixedDocument()

' Add a page to the document
Dim page As PdfPage = document.Pages.Add()

' Save the document as a PDF file
document.Save("empty.pdf")
$vbLabelText   $csharpLabel

要将文本内容添加到上面的文档中,还需要额外三行代码:一行用于创建字体以绘制文本,一行用于创建画刷并设置文本颜色,另一行用于在页面上绘制文本和图形。

// Create a new PDF document
PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();

// Create a standard font with Helvetica face and 24 point size
PdfStandardFont helvetica = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);

// Create a solid RGB red brush.
PdfBrush brush = new PdfBrush(PdfRgbColor.Red);

// Draw the text on the page.
page.Graphics.DrawString("Hello World", helvetica, brush, 100, 100);

// Save the document as a PDF file
document.Save("helloworld.pdf");
// Create a new PDF document
PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();

// Create a standard font with Helvetica face and 24 point size
PdfStandardFont helvetica = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);

// Create a solid RGB red brush.
PdfBrush brush = new PdfBrush(PdfRgbColor.Red);

// Draw the text on the page.
page.Graphics.DrawString("Hello World", helvetica, brush, 100, 100);

// Save the document as a PDF file
document.Save("helloworld.pdf");
' Create a new PDF document
Dim document As New PdfFixedDocument()
Dim page As PdfPage = document.Pages.Add()

' Create a standard font with Helvetica face and 24 point size
Dim helvetica As New PdfStandardFont(PdfStandardFontFace.Helvetica, 24)

' Create a solid RGB red brush.
Dim brush As New PdfBrush(PdfRgbColor.Red)

' Draw the text on the page.
page.Graphics.DrawString("Hello World", helvetica, brush, 100, 100)

' Save the document as a PDF file
document.Save("helloworld.pdf")
$vbLabelText   $csharpLabel

我们的对象模型与 PDF 标准紧密相似。 这允许您轻松构建复杂的抽象,例如流式文档。

使生成的 PDF 文件可填写

使用 XFINIUM.PDF

XFINIUM.PDF 库既可以创建新的 PDF 表单,亦可填写现有 PDF 表单。

PDF 规范中支持的每种文本表单字段类型均使用相应的类表示:

  • PdfTextBoxField —— 文本框字段
  • PdfCheckBoxField —— 复选框
  • PdfRadioButtonField —— 一组选项按钮
  • PdfComboboxField —— 组合框
  • PdfListboxField —— 列表框
  • PdfPushbuttonField —— 按钮字段
  • PdfSignatureField —— 签名字段

创建表单字段需要的唯一信息是字段名称和其在页面上的位置。 在创建字段对象后,必须将其添加到页面,然后才可以指定任何其他属性。

// Create a text box field named "firstname"
PdfTextBoxField firstNameTextBox = new PdfTextBoxField("firstname");

// Add the field to a PDF page
pdfpage.Fields.Add(firstNameTextBox);

// Set the position of the field on the PDF page
firstNameTextBox.Widgets[0].VisualRectangle = new PdfVisualRectangle(150, 45, 200, 20);
// Create a text box field named "firstname"
PdfTextBoxField firstNameTextBox = new PdfTextBoxField("firstname");

// Add the field to a PDF page
pdfpage.Fields.Add(firstNameTextBox);

// Set the position of the field on the PDF page
firstNameTextBox.Widgets[0].VisualRectangle = new PdfVisualRectangle(150, 45, 200, 20);
' Create a text box field named "firstname"
Dim firstNameTextBox As New PdfTextBoxField("firstname")

' Add the field to a PDF page
pdfpage.Fields.Add(firstNameTextBox)

' Set the position of the field on the PDF page
firstNameTextBox.Widgets(0).VisualRectangle = New PdfVisualRectangle(150, 45, 200, 20)
$vbLabelText   $csharpLabel

如果现有的 PDF 表单在 PdfFixedDocument 对象中加载,表单可以被填充。 表单加载后,文档的字段集合会自动使用表单中定义的字段进行填充。 可以通过索引或字段名称在集合中查找到字段,然后通过设置 PdfField 基类中定义的一般值属性或每个字段类型上定义的特定值属性来填写。

// Load an existing PDF document with forms
PdfFixedDocument document = new PdfFixedDocument("form.pdf");

// Fill form fields with values
(document.Form.Fields["firstname"] as PdfTextBoxField).Text = "John";
(document.Form.Fields["lastname"] as PdfTextBoxField).Value = "Doe";
(document.Form.Fields["sex"].Widgets[0] as PdfRadioButtonWidget).Checked = true;
(document.Form.Fields["firstcar"] as PdfComboBoxField).SelectedIndex = 0;
(document.Form.Fields["secondcar"] as PdfListBoxField).SelectedIndex = 1;
(document.Form.Fields["agree"] as PdfCheckBoxField).Checked = true;

// Save the filled form as a new PDF file
document.Save("form_filled.pdf");
// Load an existing PDF document with forms
PdfFixedDocument document = new PdfFixedDocument("form.pdf");

// Fill form fields with values
(document.Form.Fields["firstname"] as PdfTextBoxField).Text = "John";
(document.Form.Fields["lastname"] as PdfTextBoxField).Value = "Doe";
(document.Form.Fields["sex"].Widgets[0] as PdfRadioButtonWidget).Checked = true;
(document.Form.Fields["firstcar"] as PdfComboBoxField).SelectedIndex = 0;
(document.Form.Fields["secondcar"] as PdfListBoxField).SelectedIndex = 1;
(document.Form.Fields["agree"] as PdfCheckBoxField).Checked = true;

// Save the filled form as a new PDF file
document.Save("form_filled.pdf");
' Load an existing PDF document with forms
Dim document As New PdfFixedDocument("form.pdf")

' Fill form fields with values
TryCast(document.Form.Fields("firstname"), PdfTextBoxField).Text = "John"
TryCast(document.Form.Fields("lastname"), PdfTextBoxField).Value = "Doe"
TryCast(document.Form.Fields("sex").Widgets(0), PdfRadioButtonWidget).Checked = True
TryCast(document.Form.Fields("firstcar"), PdfComboBoxField).SelectedIndex = 0
TryCast(document.Form.Fields("secondcar"), PdfListBoxField).SelectedIndex = 1
TryCast(document.Form.Fields("agree"), PdfCheckBoxField).Checked = True

' Save the filled form as a new PDF file
document.Save("form_filled.pdf")
$vbLabelText   $csharpLabel

使用 IronPDF.

让我们看看如何使用 IronPDF C# 库来创建可填写的 PDF。

// PM> Install-Package IronPdf
using IronPdf;

// Step 1. Creating a PDF with editable forms from HTML using form and input tags
var FormHtml = @"
<html>
    <body>
        <h2>Editable PDF Form</h2>
        <form>
          First name:<br> <input type='text' name='firstname' value=''   > <br>
          Last name:<br> <input type='text' name='lastname' value='' >
        </form>
    </body>
</html>";

// Create a PDF renderer
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

// Render the HTML as a PDF and save it
Renderer.RenderHtmlAsPdf(FormHtml).SaveAs("BasicForm.pdf");

// Step 2. Reading and Writing PDF form values.
var FormDocument = PdfDocument.FromFile("BasicForm.pdf");

//Set and Read the value of the "firstname" field
var FirstNameField = FormDocument.Form.FindFormField("firstname");
FirstNameField.Value = "Minnie";
Console.WriteLine("FirstNameField value: {0}", FirstNameField.Value);

//Set and Read the value of the "lastname" field
var LastNameField = FormDocument.Form.FindFormField("lastname");
LastNameField.Value = "Mouse";
Console.WriteLine("LastNameField value: {0}", LastNameField.Value);

// Save the form with filled values
FormDocument.SaveAs("FilledForm.pdf");
// PM> Install-Package IronPdf
using IronPdf;

// Step 1. Creating a PDF with editable forms from HTML using form and input tags
var FormHtml = @"
<html>
    <body>
        <h2>Editable PDF Form</h2>
        <form>
          First name:<br> <input type='text' name='firstname' value=''   > <br>
          Last name:<br> <input type='text' name='lastname' value='' >
        </form>
    </body>
</html>";

// Create a PDF renderer
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.CreatePdfFormsFromHtml = true;

// Render the HTML as a PDF and save it
Renderer.RenderHtmlAsPdf(FormHtml).SaveAs("BasicForm.pdf");

// Step 2. Reading and Writing PDF form values.
var FormDocument = PdfDocument.FromFile("BasicForm.pdf");

//Set and Read the value of the "firstname" field
var FirstNameField = FormDocument.Form.FindFormField("firstname");
FirstNameField.Value = "Minnie";
Console.WriteLine("FirstNameField value: {0}", FirstNameField.Value);

//Set and Read the value of the "lastname" field
var LastNameField = FormDocument.Form.FindFormField("lastname");
LastNameField.Value = "Mouse";
Console.WriteLine("LastNameField value: {0}", LastNameField.Value);

// Save the form with filled values
FormDocument.SaveAs("FilledForm.pdf");
' PM> Install-Package IronPdf
Imports IronPdf

' Step 1. Creating a PDF with editable forms from HTML using form and input tags
Private FormHtml = "
<html>
    <body>
        <h2>Editable PDF Form</h2>
        <form>
          First name:<br> <input type='text' name='firstname' value=''   > <br>
          Last name:<br> <input type='text' name='lastname' value='' >
        </form>
    </body>
</html>"

' Create a PDF renderer
Private Renderer As New IronPdf.ChromePdfRenderer()
Renderer.RenderingOptions.CreatePdfFormsFromHtml = True

' Render the HTML as a PDF and save it
Renderer.RenderHtmlAsPdf(FormHtml).SaveAs("BasicForm.pdf")

' Step 2. Reading and Writing PDF form values.
Dim FormDocument = PdfDocument.FromFile("BasicForm.pdf")

'Set and Read the value of the "firstname" field
Dim FirstNameField = FormDocument.Form.FindFormField("firstname")
FirstNameField.Value = "Minnie"
Console.WriteLine("FirstNameField value: {0}", FirstNameField.Value)

'Set and Read the value of the "lastname" field
Dim LastNameField = FormDocument.Form.FindFormField("lastname")
LastNameField.Value = "Mouse"
Console.WriteLine("LastNameField value: {0}", LastNameField.Value)

' Save the form with filled values
FormDocument.SaveAs("FilledForm.pdf")
$vbLabelText   $csharpLabel

首先,在下面的代码中使用 HTML 格式化标签创建一个表单。 之后,我们将其保存为 PDF 文档。 在步骤 #2 中,我们开始阅读和填写 PDF 表单值。使用字段名称可以访问表单字段。 IronPDF 中提供了 FindFormField 函数。 然后设置选择字段的值,并保存新填充的表单。

PDF 文件的数字签名

在现代社会中,许多人远程工作。 填写和签署表单、发送文件以及处理文件只是企业每天需要完成的主要活动中的一部分。 其中一个主要活动是签署 PDF 文件、PDF 组合和 PDF 表单作为纸质文件的替代品。 数字签名已成为必需品,因为公司需要找到签署协议和合同以及在线共享 PDF 表单的方法。

使用 XFINIUM.PDF

PDF 文件中的签名字段用于应用数字签名(PdfSignatureField 类)。 虽然签名字段是文档页面之一的表单字段,但数字签名用于签署整个文档,而不仅仅是该页面。

签署过程开始时,是使用 PdfDigitalSignature 对象来设置签名字段的签名属性。 由于签名基于 PDF 文件的实际二进制布局,因此它在保存文档时形成。

PdfDigitalSignature 类是所有 XFINIUM 数字签名的基础。

有几种签名类可供选择:

  • PdfCmsDigitalSignature —— 基于 CMS 标准的数字签名(继承自 PdfDigitalSignature)
  • PdfPadesDigitalSignature —— 实现 PADES 标准的数字签名(继承自 PdfCmsDigitalSignature)
  • PdfInteractiveCmsDigitalSignature —— 基于 CMS 标准的数字签名,可以使用硬件签名智能卡创建数字签名(继承自 PdfDigitalSignature)
  • PdfInteractivePadesDigitalSignature —— 实现 PADES 标准的数字签名,可以使用硬件签名智能卡创建数字签名(继承自 PdfInteractiveCmsDigitalSignature)
  • PdfDocumentTimeStamp —— 文档级时间戳(继承自 PdfDigitalSignature)

使用 IronPDF.

开发人员常常询问如何使用 IronPDF 和 C# 以编程方式添加PDF 的签名。 这对开发人员来说可以有多种含义:

  • 从图像文件中将图形数字签名图像添加到现有 PDF 文件。
  • 通过加密方式对 PDF 进行签名以确认其未被篡改。
  • 将人手署名图标添加到已加密签署的 PDF。

第一种方法涉及在已存在的 PDF 页面上加盖签名 PNG。 它可以用作签名或公司印章。提倡使用不透明度。 只需几行代码即可完成该过程。

// Open an existing PDF document or create a new one
var Pdf = PdfDocument.FromFile(@"C:\Path\To\ASPX to PDF.pdf");

// Define an HTML stamp with a signature image
var SignatureStamp = new HtmlStamp()
{
    Html = "<img src='signature.png' />",
    Width = 150,
    Height = 50,
    Bottom = 300,
    Left = 85,
    ZIndex = HtmlStamp.StampLayer.OnTopOfExistingPDFContent
};

// Stamp the signature on the first page of the PDF
Pdf.StampHTML(SignatureStamp, 1);

// Save the stamped PDF
Pdf.SaveAs(@"C:\Path\To\Stamped_PDF.pdf");
// Open an existing PDF document or create a new one
var Pdf = PdfDocument.FromFile(@"C:\Path\To\ASPX to PDF.pdf");

// Define an HTML stamp with a signature image
var SignatureStamp = new HtmlStamp()
{
    Html = "<img src='signature.png' />",
    Width = 150,
    Height = 50,
    Bottom = 300,
    Left = 85,
    ZIndex = HtmlStamp.StampLayer.OnTopOfExistingPDFContent
};

// Stamp the signature on the first page of the PDF
Pdf.StampHTML(SignatureStamp, 1);

// Save the stamped PDF
Pdf.SaveAs(@"C:\Path\To\Stamped_PDF.pdf");
' Open an existing PDF document or create a new one
Dim Pdf = PdfDocument.FromFile("C:\Path\To\ASPX to PDF.pdf")

' Define an HTML stamp with a signature image
Dim SignatureStamp = New HtmlStamp() With {
	.Html = "<img src='signature.png' />",
	.Width = 150,
	.Height = 50,
	.Bottom = 300,
	.Left = 85,
	.ZIndex = HtmlStamp.StampLayer.OnTopOfExistingPDFContent
}

' Stamp the signature on the first page of the PDF
Pdf.StampHTML(SignatureStamp, 1)

' Save the stamped PDF
Pdf.SaveAs("C:\Path\To\Stamped_PDF.pdf")
$vbLabelText   $csharpLabel

以下代码使用一个 .pfx 和 .p12 X509Certificate2 数字证书对 PDF 进行加密签名,该证书可以通过一行代码轻松创建。

// 123456 below represents the signature password
new IronPdf.PdfSignature("CertificateFile.p12", "123456").SignPdfFile("ASPX to PDF.pdf");
// 123456 below represents the signature password
new IronPdf.PdfSignature("CertificateFile.p12", "123456").SignPdfFile("ASPX to PDF.pdf");
' 123456 below represents the signature password
Call (New IronPdf.PdfSignature("CertificateFile.p12", "123456")).SignPdfFile("ASPX to PDF.pdf")
$vbLabelText   $csharpLabel

这个更高级的示例允许将 .pfx / .p12 X509Certificate2 数字 ID 签名方法与手写签名扫描结合使用。

// Create a digital signature using a certificate file
var Signature = new IronPdf.PdfSignature("Iron.pfx", "123456");

// Render a PDF document to be signed
PdfDocument doc = Renderer.RenderHtmlAsPdf("<h1>Testing 2048-bit digital security</h1>");

// Configure optional signing options and a handwritten signature graphic
Signature.SigningContact = "support@ironsoftware.com";
Signature.SigningLocation = "Chicago, USA";
Signature.SigningReason = "To show how to sign a PDF";
Signature.LoadSignatureImageFromFile("handwriting.png");

// Sign the PDF document with the digital signature
doc.SignPdfWithDigitalSignature(Signature);

// Save the signed PDF document
doc.SaveAs("Signed_ASPX_to_PDF.pdf");
// Create a digital signature using a certificate file
var Signature = new IronPdf.PdfSignature("Iron.pfx", "123456");

// Render a PDF document to be signed
PdfDocument doc = Renderer.RenderHtmlAsPdf("<h1>Testing 2048-bit digital security</h1>");

// Configure optional signing options and a handwritten signature graphic
Signature.SigningContact = "support@ironsoftware.com";
Signature.SigningLocation = "Chicago, USA";
Signature.SigningReason = "To show how to sign a PDF";
Signature.LoadSignatureImageFromFile("handwriting.png");

// Sign the PDF document with the digital signature
doc.SignPdfWithDigitalSignature(Signature);

// Save the signed PDF document
doc.SaveAs("Signed_ASPX_to_PDF.pdf");
' Create a digital signature using a certificate file
Dim Signature = New IronPdf.PdfSignature("Iron.pfx", "123456")

' Render a PDF document to be signed
Dim doc As PdfDocument = Renderer.RenderHtmlAsPdf("<h1>Testing 2048-bit digital security</h1>")

' Configure optional signing options and a handwritten signature graphic
Signature.SigningContact = "support@ironsoftware.com"
Signature.SigningLocation = "Chicago, USA"
Signature.SigningReason = "To show how to sign a PDF"
Signature.LoadSignatureImageFromFile("handwriting.png")

' Sign the PDF document with the digital signature
doc.SignPdfWithDigitalSignature(Signature)

' Save the signed PDF document
doc.SaveAs("Signed_ASPX_to_PDF.pdf")
$vbLabelText   $csharpLabel

现代 CSS 框架和 Bootstrap HTML 渲染

现代 Web 应用程序频繁使用像 Bootstrap 这样的 CSS 框架来加速 UI 开发并确保响应式设计。 PDF 生成工具必须准确保持这些框架布局以维护专业文件质量。

IronPDF:全面的 Bootstrap 框架支持

IronPDF 的 Chromium 渲染引擎全面支持现代 CSS 框架和网络标准:

  • Bootstrap 5: 完整 Flexbox 和 CSS Grid 渲染,带有所有响应组件
  • Bootstrap 4: 完整卡片系统、导航栏和实用类
  • Tailwind CSS: 所有实用优先类和响应变体
  • Foundation 和其他框架: 完整 CSS3 支持,意味着所有现代框架均正常工作
  • 高级 CSS: Flexbox、CSS Grid、定制属性、动画和变换

Real-world validation: Bootstrap homepage and templates convert with browser-accurate fidelity.

代码示例: 使用 Bootstrap 卡片的事件日程

using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapSchedule = @"
<!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 my-5'>
        <h1 class='text-center mb-5'>Tech Conference 2025 - Schedule</h1>

        <div class='row g-4'>
            <div class='col-md-6'>
                <div class='card border-primary'>
                    <div class='card-header bg-primary text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Keynote Session</h5>
                        <span class='badge bg-light text-primary'>9:00 AM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Main Auditorium</h6>
                        <p class='card-text'><strong>The Future of AI in Software Development</strong></p>
                        <p class='card-text'>Join us for an exploration of how artificial intelligence is transforming the software development landscape.</p>
                        <div class='d-flex align-items-center'>
                            <img src='https://via.placeholder.com/50' class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Dr. Sarah Chen</div>
                                <small class='text-muted'>AI Research Lead</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-success'>
                    <div class='card-header bg-success text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Workshop</h5>
                        <span class='badge bg-light text-success'>10:30 AM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Workshop Room A</h6>
                        <p class='card-text'><strong>Hands-On: Cloud-Native Architecture</strong></p>
                        <p class='card-text'>Learn practical techniques for building scalable, cloud-native applications with modern frameworks.</p>
                        <div class='d-flex align-items-center'>
                            <img src='https://via.placeholder.com/50' class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Michael Rodriguez</div>
                                <small class='text-muted'>Cloud Architect</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-warning'>
                    <div class='card-header bg-warning text-dark d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Panel Discussion</h5>
                        <span class='badge bg-dark'>2:00 PM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Main Auditorium</h6>
                        <p class='card-text'><strong>Security in Modern Web Applications</strong></p>
                        <p class='card-text'>Industry experts discuss current security challenges and best practices for protecting user data.</p>
                        <small class='text-muted'>Featuring 4 industry experts</small>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-info'>
                    <div class='card-header bg-info text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Technical Talk</h5>
                        <span class='badge bg-light text-info'>3:30 PM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Room B</h6>
                        <p class='card-text'><strong>Performance Optimization Strategies</strong></p>
                        <p class='card-text'>Deep dive into advanced techniques for optimizing application performance and reducing latency.</p>
                        <div class='d-flex align-items-center'>
                            <img src='https://via.placeholder.com/50' class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Alex Kim</div>
                                <small class='text-muted'>Performance Engineer</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapSchedule);
pdf.SaveAs("conference-schedule.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapSchedule = @"
<!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 my-5'>
        <h1 class='text-center mb-5'>Tech Conference 2025 - Schedule</h1>

        <div class='row g-4'>
            <div class='col-md-6'>
                <div class='card border-primary'>
                    <div class='card-header bg-primary text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Keynote Session</h5>
                        <span class='badge bg-light text-primary'>9:00 AM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Main Auditorium</h6>
                        <p class='card-text'><strong>The Future of AI in Software Development</strong></p>
                        <p class='card-text'>Join us for an exploration of how artificial intelligence is transforming the software development landscape.</p>
                        <div class='d-flex align-items-center'>
                            <img src='https://via.placeholder.com/50' class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Dr. Sarah Chen</div>
                                <small class='text-muted'>AI Research Lead</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-success'>
                    <div class='card-header bg-success text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Workshop</h5>
                        <span class='badge bg-light text-success'>10:30 AM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Workshop Room A</h6>
                        <p class='card-text'><strong>Hands-On: Cloud-Native Architecture</strong></p>
                        <p class='card-text'>Learn practical techniques for building scalable, cloud-native applications with modern frameworks.</p>
                        <div class='d-flex align-items-center'>
                            <img src='https://via.placeholder.com/50' class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Michael Rodriguez</div>
                                <small class='text-muted'>Cloud Architect</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-warning'>
                    <div class='card-header bg-warning text-dark d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Panel Discussion</h5>
                        <span class='badge bg-dark'>2:00 PM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Main Auditorium</h6>
                        <p class='card-text'><strong>Security in Modern Web Applications</strong></p>
                        <p class='card-text'>Industry experts discuss current security challenges and best practices for protecting user data.</p>
                        <small class='text-muted'>Featuring 4 industry experts</small>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-info'>
                    <div class='card-header bg-info text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Technical Talk</h5>
                        <span class='badge bg-light text-info'>3:30 PM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Room B</h6>
                        <p class='card-text'><strong>Performance Optimization Strategies</strong></p>
                        <p class='card-text'>Deep dive into advanced techniques for optimizing application performance and reducing latency.</p>
                        <div class='d-flex align-items-center'>
                            <img src='https://via.placeholder.com/50' class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Alex Kim</div>
                                <small class='text-muted'>Performance Engineer</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapSchedule);
pdf.SaveAs("conference-schedule.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

输出: 使用 Bootstrap 的卡片网格、Flexbox 对齐、徽章组件和响应布局创建的专业会议日程,全部在 PDF 中准确呈现。

XFINIUM.PDF:有限的 HTML 和框架支持

XFINIUM.PDF 主要专注于 PDF 生成和操作而非 HTML 转 PDF 转换。 该库在 Bootstrap 和现代 CSS 框架方面存在显著限制:

  • 无原生 HTML 渲染: XFINIUM.PDF 不包括内置的 HTML 转 PDF 转换引擎
  • 仅支持基本 HTML: 仅限于简单 HTML 结构而不支持高级 CSS
  • 不支持 Bootstrap: 现代 Bootstrap 框架(4/5) Flexbox 和 CSS Grid 不支持
  • 需要变通方法: 开发人员必须使用低级 PDF API 手动重新创建布局
  • 需要外部工具: 可能需要集成外部 HTML 渲染引擎

开发影响: 使用 Bootstrap 或现代 CSS 框架的应用程序无法直接转换其 UI 为 PDF 使用 XFINIUM.PDF。 开发人员必须:

  1. 使用 XFINIUM.PDF 的低级绘图 API 重建布局(显著开发时间)
  2. 集成外部 HTML 渲染工具(增加复杂性和依赖关系)
  3. 维护与 Web UI 平行的单独 PDF 布局代码(维护开销)

对于需要 HTML 转 PDF 转换的项目,特别是在使用现代框架如 Bootstrap 时,XFINIUM.PDF 的局限性使得它在没有显著额外开发工作支持下变得不合适。

有关全面 Bootstrap 和现代 CSS 框架支持,请参见 Bootstrap & Flexbox CSS 指南

定价和许可

XFINIUM.PDF 定价和许可

每个包有两个版本可供选择:Generator Edition 提供 PDF 生产和编辑功能,Viewer Edition 包含 Generator Edition 的所有功能,以及 PDF 渲染和 PDF 查看。

  • 每个开发者都有他们自己在 Xfinium PDF 库的许可证。 每个为 XFINIUM 编码的开发者需要此 PDF 文件库的许可证。
  • 作为您许可证的一部分,无限数量的桌面 PC 和服务器可以免版税发送 XFINIUM.PDF。
  • 一年的“援助订购”提供一年的免费升级和技术支持。

价格范围从每年 290.00 美元到 872.00 美元,具体取决于各自的包。

IronPDF 定价和许可

另一方面,IronPDF 是一个 C# PDF 库。 它可以免费用于开发,并可以随时商业使用。支持单个项目许可证、单个开发工具、代理机构和跨国组织,以及 SaaS 和 OEM 重新分配。 所有许可证均附有 30 天内退款保证,一年的软件支持和升级,开发/过渡化/生产有效期,以及永久性许可证(一次性购买)。 Lite 套餐的价格为 $799。 IronPDF 产品没有经常性费用。

结论

Iron PDF 库使创建 PDF 文档变得更容易,因为它不依赖于专有 API。“HTML-To-PDF”将开放标准文档类型,例如 HTML、JS、CSS、JPG、PNG、GIF 和 SVG 转换为像素完美的 PDF。 换句话说,它建立在开发人员已经具备的技能之上。 它允许用户下载文档、通过电子邮件发送或将它们保存在云端,并制作账单、报价、报告、合同和其他文件。 它适用于 ASP.NET、ASP.NET Core、webforms、MVC、.NET Framework 和 .NET Core Web API。

XFINIUM.PDF 库为初学者和高级 PDF 开发者提供了广泛的功能。 无论您是需要创建简单的报告、填写 PDF 表单、构建 PDF 组合、从 PDF 文件中删除敏感信息、还是将 PDF 文件转换为多页 TIFF 图像,它都有您需要的工具。 您完全掌控生成的 PDF 文件,因为基础对象模型遵循 PDF 规范。 XFINIUM.PDF 代码可以在所有支持的平台上编译而无需更改。 XFINIUM.PDF 集合可用于帮助您。

XFINIUM.PDF 许可证提供两种版本,Generator 和 Viewer 起价分别为 290 美元和 387 美元。 这比 IronPDF 略便宜,起价 $799。 IronPDF 值得选择,因为它提供单用户和多用户许可证,而 XFINIUM.PDF 提供只单用户许可证——这意味着您将需要为每个开发者购入许可证。 另一方面,IronPDF 提供专业许可证,价格起价为 799 美元,可供无限数量的用户使用。

使用 IronPDF,您可以比使用 XFINIUM.PDF 更轻松地操控 PDF 文件。 IronPDF 在代码少的情况下操作复杂,能有助于降低程序员的工作负担。

Iron 软件公司还为其所有客户提供只需两次点击即可获取整个包套装的选项。 这意味着在 Iron 软件套装中的两个库的价格中,您目前可以获得所有五个库,并可为所有这些库提供不间断支持。

[{i:(XFINIUM.PDF 是其各自所有者的注册商标。 本网站与 XFINIUM.PDF 无关,不背书或支持。 所有产品名称、徽标和品牌均为其各自所有者的财产。 比较仅供参考,反映的是撰写时的公开信息。]

常见问题解答

IronPDF进行HTML到PDF转换的关键功能是什么?

IronPDF利用.NET Chromium引擎将HTML转换为PDF。它支持HTML5、CSS、JavaScript和图像集成,使其成为从网页内容创建PDF的综合解决方案。

XFINIUM.PDF与其他.NET PDF库相比如何?

XFINIUM.PDF是一个提供两种版本的跨平台库:生成器和查看器。它在PDF创建、编辑、渲染方面表现出色,并包括安全性、数字签名和条形码支持等功能。

IronPDF可以用于像Azure和AWS这样的云平台吗?

可以,IronPDF兼容各种平台,包括Azure和AWS,允许在云环境中灵活部署PDF解决方案。

在.NET项目中,有哪些IronPDF安装选项?

IronPDF可以通过Visual Studio的NuGet包管理器、开发者命令提示符安装,或直接下载NuGet包或库DLL。

IronPDF的PDF编辑功能有哪些?

IronPDF允许广泛的PDF编辑,包括填写表单字段、合并文档以及提取文本和图像。它还支持添加页眉、页脚和注释。

IronPDF和XFINIUM.PDF的许可选项有何不同?

XFINIUM.PDF提供每位开发人员$290起的许可证,支持免费发行。IronPDF提供更宽泛的许可选项,包括针对无限用户的专业许可证。

XFINIUM.PDF提供什么安全功能?

XFINIUM.PDF支持如用户和拥有者密码、文档访问权限、RC4和AES加密、内容隐藏等安全功能,以确保文档安全。

开发人员为何可能选择IronPDF用于他们的项目?

开发人员可能会选择IronPDF因为其简化的PDF操作,仅需较少的代码行,并且在单用户和多用户许可证方面灵活多变。

IronPDF如何处理PDF中的表单填写?

IronPDF提供工具用于填写PDF内的表单字段,允许动态创建文档和用户互动。

这些PDF库有哪些数字签名功能?

IronPDF和XFINIUM.PDF均支持数字签名,使得文档真实性和完整性得到安全验证。

Curtis Chau
技术作家

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

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