产品比较

PDFKit npm 与 IronPDF for Node.js 的比较

发布 2024年一月4日
分享:

介绍

本教程将深入探讨IronPDF 的 JavaScript SDKPDFKit - 译者将翻译 JavaScript PDF 库中的两个大名。 两者都是 Node.js 项目的可靠选择,但各有优缺点。

本文的目的是让读者真正了解 IronPDF 和 PDFKit 工具如何融入开发人员的 Node.js 工作流程。 无论是制作基本的 PDF 还是处理复杂的布局,了解 IronPDF 和 PDFKit 能够(而不能)这一点非常重要。

PDFKit

PDFKit 是适用于 Node.js 和浏览器环境的高级 JavaScript PDF 生成库。 其全面的工具集使其成为轻松创建多页可打印文档的理想选择。 该库旨在易于使用,简化复杂文档的生成过程。

PDFKit 因其强大的矢量图形功能、广泛的文本和字体样式选项、图像嵌入功能以及对交互式安全 PDF 文档的支持而脱颖而出。 对于需要在各种应用程序中生成自定义 PDF 的开发人员来说,该工具的易用性及其在服务器端和浏览器环境中的通用性使其成为一个非常有价值的工具。

PDFKit 的主要功能

  • 灵活生成 PDF

    PDFKit 不依赖 HTML 到 PDF 的转换; 此外,该工具还可以通过 JavaScript 代码直接生成 PDF。 这种方法为开发人员提供了对其创建的 PDF 文件的布局、样式和内容的精确控制,因此生成复杂文档变得更加容易。

  • 图形和文本格式

    该库支持高级图形功能,包括线条、曲线、矩形、圆等。 通过自定义字体、大小和颜色等文本格式功能,可以创建具有视觉吸引力的文档。

  • 图像嵌入和矢量图形

    PDFKit 允许嵌入各种格式的图像,并支持矢量图形,是高质量打印文档的理想选择。 图片嵌入支持 JPEG 和 PNG 文件。

  • 高级文档功能

    开发人员可以在 PDF 文件中添加注释、书签和超链接。 该库还支持创建页眉和页脚,以及加入页码和自定义 JavaScript。

  • 可定制和可重复使用的组件

    PDFKit API 为创建可重复使用的组件提供了便利,简化了发票或报告等重复结构文档的开发流程。

  • 矢量图形

    PDFKit 为矢量图形提供了类似 HTML5 画布的 API,包括路径操作、SVG 路径分析、转换和渐变。 这非常适合在 PDF 中创建可缩放的高质量图形。 该库支持换行、各种文本对齐方式和列表。

  • 嵌入字体

    PDFKit 支持 TrueType、OpenType、WOFF 等多种字体格式,使 PDF 中的排版保持一致。 此外,还提供了字体子集,确保文件大小在可控范围内。

IronPDF Node.js

使用 IronPDF,您可以轻松地将 HTML 字符串、文件甚至整个网页转换为 PDF,这些文件看起来与原始内容一模一样,并配有 CSS 样式和图片。 这对于交付发票、合同和报告等需要保留网页设计所指定的品牌和布局的专业级文档至关重要。

IronPDF for Node.js 的主要功能

HTML 转换为 PDF

IronPdf 擅长将 HTML 内容转换为高保真 PDF 文档。 其功能包括

  • HTML 字符串到 PDF:该功能可将动态 HTML 字符串直接转换为 PDF。
  • HTML 文件到 PDF:使用此功能,可将静态 HTML 文件无缝转换为 PDF 格式,同时保持布局和样式。
  • URL to PDF:IronPdf 可通过 URL 捕捉整个网页并将其转换为 PDF,非常适合存档和离线访问。

格式化PDFs

IronPDF 提供了全面的格式化工具,可对从 HTML 内容创建的 PDF 进行自定义和增强,例如:

  • JavaScript in HTML to PDF: 在转换之前,IronPDF 可在 HTML 中执行 JavaScript,实现将动态数据或交互式元素渲染为 PDF 的静态格式。
  • 用 IronPDF 嵌入条形码:IronPDF 支持在 PDF 中嵌入 BarCode,这是物流、零售和库存管理中使用的文档必不可少的功能。
  • 应用页面模板: 通过应用页面模板将文档的外观和感觉标准化,页面模板可以是预定义的布局,用于确保多个 PDF 文档的一致性。
  • HTML 转 PDF 中的自定义字体: IronPDF 允许将 HTML 内容中的自定义字体直接嵌入到 PDF 中,确保所有文档中的品牌和设计连贯一致。

编辑页面内容

IronPdf 的编辑功能非常广泛,能够修改现有 PDF 文件以满足特定需求:

使用PDF表单

IronPDF 支持创建和操作 PDF 表单,允许在 PDF 中使用交互式元素:

PDF 表格:这包括创建可通过数字方式填写的表单,使企业能够自动完成数据收集过程。 使用 IronPDF,您可以通过编程创建表格、填充字段,甚至检索信息,从而简化工作流程并减少手动数据输入。

跨平台兼容性

IronPdf 支持各种平台,因此适用于不同的开发环境。 它与 Node.js 12.0 及以上版本兼容,可在 Windows、Linux、Mac 和 Docker 上使用。

用户体验和可访问性

  • 安装简单:使用简单的 npm 或 yarn 命令即可直接安装 IronPdf。 IronPdf 引擎是该库运行所必需的,会在首次运行时自动下载。
  • 用于快速入门的示例代码:该库提供了各种功能的示例代码片段,如 HTML 到 PDF 的转换,从而简化了开发人员的实施过程。

在 Visual Studio Code 中创建 JavaScript 项目

设置开发环境

在进入 PDF 生成世界之前,您需要设置项目环境。 Visual Studio 代码(VS 编码)为此,".NET "和 "Python "提供了一个理想的、用户友好的平台。 首先启动 VS Code 并创建一个新的 JavaScript 项目。 您可以为您的项目新建一个文件夹,然后在 VS Code 中打开它。 这个环境将是您编写代码和管理项目文件的地方。

初始化您的项目

在 VS Code 中打开文件夹后,下一步就是初始化一个新的 JavaScript 项目。 在 VS 代码中打开集成终端(通常可在菜单中的终端 > 新终端下找到)并键入 npm init。 本命令将指导您创建一个 package.json 文件,该文件对于管理项目的依赖关系和元数据至关重要。

安装 IronPDF 库

将IronPDF添加到您的项目中

JavaScript 项目设置完成后,就可以安装 IronPDF 库了。 在您的 VS Code 终端中,运行以下命令:

npm install ironpdf

该命令将获取并安装 IronPDF 库,并将其添加到项目的依赖关系中。

验证安装

安装后,请确保 IronPdf 列在您的 package.json 文件的依赖项部分。 这样才能确保 IronPdf 正确集成到您的项目中,为无缝生成和操作 PDF 铺平道路。

PDFKit npm 与 Node.js 版 IronPDF 的比较:图 1

安装 PDFKit 库

集成 PDFKit

接下来是 PDFKit,这是一个功能强大、用途广泛的 PDF 文档生成库。 要将 PDFKit 添加到您的项目中,请在 VS Code 的终端中执行以下命令:

npm install pdfkit

这将安装 PDFKit 并将其添加到项目的依赖项中。

确保正确设置

安装成功后,请确认 PDFKit 是否出现在package.json文件的依赖项中。这一确认对于确认您的项目现在已配备了创建复杂、详细和具有视觉吸引力的 PDF 文件所需的工具至关重要。

PDFKit npm 与 Node.js 版 IronPDF 的比较:图 2

比较 IronPDF 和 PDFKit 中的 HTML 转 PDF 功能

IronPDF HTML 至 PDF 转换

IronPDF for Node.js 擅长将 HTML 转换为 PDF,为开发人员提供了高效的解决方案。 该库擅长处理复杂的任务,如渲染 CSS 样式、执行 JavaScript 以及合并自定义页眉和页脚。 这些功能大大增强了其从 HTML 源创建专业级 PDF 的能力。 IronPDF for Node.js 为这一转换过程提供了三种方便的方法:

  1. HTML字符串转PDF

  2. HTML 文件转 PDF

  3. URL 转 PDF:这一独特功能只需使用网页的 URL 即可将网页转换为 PDF。 这是一种以 PDF 格式获取实时在线内容的有效方法。

将 HTML 字符串转换为 PDF

通过这种方法,开发人员可以直接将 HTML 代码字符串转换为 PDF 文件。 该功能对于涉及动态内容生成的场景非常有用。 无论您是创建自定义报告、即时生成发票,还是需要以精炼、专业的格式呈现数据驱动型内容,该功能都能简化流程。

import { PdfDocument, PdfGenerator } from "@ironsoftware/ironpdf";
import { IronPdfGlobalConfig } from "@ironsoftware/ironpdf";
import fs from "fs";
(async function createPDFs() {
  try {
    // Input the license key
    const IronPdfConfig = {
      licenseKey: "Your-License-Key",
    };
    // Set the config with the license key
    IronPdfGlobalConfig.setConfig(IronPdfConfig);
    // Create a PDF from the HTML String
    const pdf = await PdfDocument.fromHtml(
      "<h1>Hello JavaScript Developers! This is an Example PDF created with IronPDF NodeJS!</h1>"
    );
    // Save the PDF document to the file system.
    await pdf.saveAs("HtmlStringToPDF.pdf");
  } catch (error) {
    // Handle errors here
    console.error("An error occurred:", error);
  }
})();
JAVASCRIPT

在这里,您可以看到代码的输出结果:

PDFKit npm 与 Node.js 版 IronPDF 的比较:图 3

将HTML文件转换为PDF

利用该功能,开发人员可以将现有的 HTML 文件转换为 PDF。 该功能尤其有利于处理静态 HTML 文档。 无论您使用的是预先设计好的网页、标准化表单还是信息手册,该功能都能为您提供将其转换为 PDF 的直接路径。

import { PdfDocument } from "@ironsoftware/ironpdf";
import { IronPdfGlobalConfig } from "@ironsoftware/ironpdf";
import fs from "fs";
(async function createPDFs() {
  try {
    // Input the license key
    const IronPdfConfig = {
      licenseKey: "Your-License-Key",
    };
    // Set the config with the license key
    IronPdfGlobalConfig.setConfig(IronPdfConfig);
    // Create a PDF from the HTML File"
    const pdf = await PdfDocument.fromFile("invoice.html");
    // Save the PDF document to the file system.
    await pdf.saveAs("invoice.pdf");
  } catch (error) {
    // Handle errors here
    console.error("An error occurred:", error);
  }
})();
JAVASCRIPT

以下是生成的 PDF 输出发票:

PDFKit npm 与 Node.js 版 IronPDF 的比较:图 4

将 URL 转换为 PDF

该功能只需使用网页的 URL 即可将网页转换为 PDF。 该功能对于捕捉实时在线内容特别有用。 无论是归档网页、创建在线文章的离线副本,还是从基于网络的数据中生成报告,该功能都能轻松应对。

import { PdfDocument } from "@ironsoftware/ironpdf";
import { IronPdfGlobalConfig } from "@ironsoftware/ironpdf";
import fs from "fs";
(async function createPDFs() {
  try {
    // Input the license key
    const IronPdfConfig = {
      licenseKey: "Your-License-Key",
    };
    // Set the config with the license key
    IronPdfGlobalConfig.setConfig(IronPdfConfig);
    // URL of the web page to convert to PDF
    const url = "https://en.wikipedia.org/wiki/PDF";
    // Convert the Web Page to a pixel-perfect PDF file.
    const urlPDF = await PdfDocument.fromUrl(url);
    // Save the document.
    await urlPDF.saveAs("UrlToPdf.pdf");
  } catch (error) {
    // Handle errors here
    console.error("An error occurred:", error);
  }
})();
JAVASCRIPT

以下是根据 URL 生成的 PDF 输出文件:

PDFKit npm 与 Node.js 版 IronPDF 的比较:图 5

PDFKit HTML 至 PDF 转换

PDFKit 虽然不像 IronPDF 那样主要用于 HTML 到 PDF 的转换,但仍然提供了一种直接从 JavaScript 代码以编程方式创建 PDF 文档的方法。 下面的示例演示了如何创建一个简单的 PDF 文件:

const PDFDocument = require('pdfkit');
const fs = require('fs');
let doc = new PDFDocument();
doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(25)
   .text('PDFKit - Text to PDF Example', 100, 100);
doc.end();
JAVASCRIPT

该代码片段创建了一个带有文本标题的 PDF 文件。虽然 PDFKit 不能直接将 HTML 转换为 PDF,但它允许对文本位置和格式进行详细控制。

以下是 PDFKit 生成的输出文件:

PDFKit npm 与 Node.js 版 IronPDF 的比较:图 6

灵活性和高级功能

IronPDF Node.js

密码、安全和元数据:IronPdf 通过各种功能赋予开发人员加强 PDF 文件安全性的能力。 它允许设置密码,增加了一个额外的保护层,要求用户输入密码才能查看文档。 此外,IronPDF 还提供在 PDF 中嵌入元数据的功能,其中可包括作者信息、标题和关键字,从而加强文档管理和组织。

import {PdfDocument} from "@ironsoftware/ironpdf";
(async () => {
    // Import a PDF document or create a new PDF from Html
    const pdf = await PdfDocument.open("encrypted.pdf", "password");
    // Create an empty Map
    const newMetadata = new Map();
    // Add key-value pairs of metadata
    newMetadata.set("Author", "Satoshi Nakamoto");
    newMetadata.set("Keywords", "SEO, Friendly");
    await pdf.overrideMetadata(newMetadata);
    await pdf.removePasswordsAndEncryption();
    // Make PDF read-only
    await pdf.makePdfDocumentReadOnly("secret-key");
    // Configure permissions
    const permissions = {
        AllowAnnotations: false,
        AllowExtractContent: false,
        AllowFillForms: false,
        AllowPrint: true,
    };
    await pdf.setPermission(permissions);
    // Change or set the document encrpytion password
    await pdf.saveAs("secured.pdf", {
        ownerPassword: "top-secret",
        userPassword: "my-password",
    });
})();
JAVASCRIPT

PDF 加密和解密: 加密和解密是文档安全的重要组成部分,IronPDF 可轻松处理。 它提供不同级别的加密,从简单的密码保护到高级加密标准,确保敏感信息的安全。 解密功能同样强大,可为授权用户提供访问和修改加密文档的手段。

数字签名: 在数字文档时代,真实性和完整性至关重要。 IronPDF 的数字签名该功能允许用户对 PDF 文件进行数字签名,这不仅可以验证文件创建者的身份,还能表明文件在签名后未被修改,从而确保其真实性。

import {PdfDocument} from "@ironsoftware/ironpdf";
(async () => {
    // Step 1. Import a PDF
    const pdf = await PdfDocument.open("sample.pdf");
    // Step 2. Sign the PDF with digital certificate
    await pdf.signDigitalSignature({
        certificatePath: "IronSoftware.pfx",
        certificatePassword: "123456",
        signingReason: "To show how to sign a PDF",
        signingLocation: "Chicago, USA",
        signatureImage: {
            SignatureImagePath: "logo.png"
        }
    });
    //Step 3. The PDF is not signed until saved to file.
    await pdf.saveAs("signed.pdf");
})();
JAVASCRIPT

PDF 压缩: IronPDF 意识到高效存储和快速共享文档的必要性。 翻译内容包括PDF 压缩该功能可显著减小文件大小,这对于优化存储空间和加快文件传输至关重要,同时不会影响 PDF 内容的质量和完整性。

import {PdfDocument} from "@ironsoftware/ironpdf";
(async () => {
    // Load the existing PDF document
    const pdf = await PdfDocument.fromFile("my-content.pdf");
    // Compress images with quality parameter (1-100)
    await pdf.compressSize(60);
    // Save the compressed PDF
    await pdf.saveAs("document_compressed.pdf");
    // Compress images and scale down based on visible size in the PDF document
    await pdf.compressSize(90, true);
    // Save the scaled and compressed PDF
    await pdf.saveAs("document_scaled_compressed.pdf");
});
JAVASCRIPT

Merge Two or More PDFs: IronPDF 提供了一个直接的解决方案来合并两个或多个 PDF 文件。将多个 PDF 文件合并为一个文件. 该功能对于合并各种文档(如报告、合同或一系列表格)非常有用,有助于更好地进行文档管理和分发。

删除特定的 PDF 页面: 对于任何 PDF 工具来说,编辑的灵活性都是关键,而 IronPDF 提供了以下功能从 PDF 文档中删除特定页面. 在为不同受众定制内容或省略不必要的页面以创建更简洁的文档时,这一点尤其有用。

PDFKit 高级功能和可扩展性

可定制的布局引擎: PDFKit 具有可定制的布局引擎,让开发人员可以控制 PDF 布局的各个方面,从文本定位到复杂的图形元素。

const PDFDocument = require('pdfkit');
const fs = require('fs');
let doc = new PDFDocument({ margin: 50 });
// Custom layouts
doc.text('Customized Layout Text', {
  align: 'center',
  valign: 'center'
});
doc.end();
doc.pipe(fs.createWriteStream('custom-layout.pdf'));
JAVASCRIPT

在本示例中,"PDFDocument "用于创建文本居中的自定义布局。

高级图形和文本功能:PDFKit 提供先进的图形和文本功能,允许在 PDF 文件中进行复杂的设计和造型。 它可以绘制形状,添加图像和 SVG。 在文本方面,PDFKit 提供了一整套布局选项,从基本的文本框到高级的排版控件,确保每一页的布局都与设想的完全一致。

const PDFDocument = require('pdfkit');
const fs = require('fs');
let doc = new PDFDocument();
// Advanced graphics
doc.moveTo(100, 150)
   .lineTo(100, 250)
   .lineTo(200, 250)
   .fill("#FF3300");
// Advanced text
doc.fontSize(15)
   .font('Times-Roman')
   .text('Advanced Text Features', 100, 300);
doc.end();
doc.pipe(fs.createWriteStream('advanced-graphics-text.pdf'));
JAVASCRIPT

PDFKit npm 与 Node.js 版 IronPDF 的比较:图 7

流和缓冲区处理:PDFKit 在流和缓冲区处理方面表现出色,可高效管理大型 PDF 文件及其数据。

const PDFDocument = require('pdfkit');
const fs = require('fs');
const stream = require('stream');
let doc = new PDFDocument();
let buffers = [];
let writableStream = new stream.Writable();
writableStream._write = (chunk, encoding, done) => {
  buffers.push(chunk);
  done();
};
doc.pipe(writableStream);
doc.text('Streaming PDF Content');
doc.end();
writableStream.on('finish', () => {
  let pdfData = Buffer.concat(buffers);
  fs.writeFileSync('streamed.pdf', pdfData);
});
JAVASCRIPT

可定制页眉和页脚: 制作外观专业的 PDF 需要注意细节。 PDFKit 的自定义页眉和页脚功能可以在页面顶部和底部精确放置文本和图形。 这对于在多页文档中添加一致的品牌、文档标题和分页特别有用。

交互式表单: PDFKit 将其功能扩展到 PDF 文件中的交互式表单,允许创建文本字段、复选框和单选按钮。 对于希望收集信息或提供互动内容的用户来说,这一功能非常宝贵,可以增强 PDF 的用户体验和功能。

文件和支持

IronPDF Node.js 文档和支持

IronPDF 文档本手册提供了使用该库的全面指南,并提供了将 URL 呈现为 PDF 和从 HTML 字符串创建 PDF 等关键功能的详细示例。 它提供 PDF 打印的自定义选项,如设置纸张大小和 DPI,以及文档外观的自定义选项,如带有邮件合并字段的页眉和页脚。 文档还包括更高级的内容,如使用自定义 WebClients、创建可编辑的 PDF 表单以及在 PDF 中使用 JavaScript。 您可以浏览文档,了解完整的 API 文档和更多示例。

在设置页眉和页脚时,HTML 和文本选项都有详细的文档说明,允许使用占位符字符串合并元数据。 提供许可详细信息,指导用户如何去除水印并获得许可。 该文档甚至还提供了关于设置 PDF 页眉和页脚的首页编号的信息,并详细说明了在考虑 JavaScript、AJAX 或动画渲染的情况下,HTML 渲染后需要等待多长时间才能打印。

支持选项

IronPdf 收集了一系列故障排除指南,可解决常见问题并提供逐步的解决方案。 这可能是用户解决问题的第一站。 对于更复杂的问题或无法通过指南解决的问题,IronPDF 可提供技术支持。 用户可以提交工程支持请求,其中可能包括提供有关问题的详细信息,如平台或运行时的具体信息,以帮助支持团队复制和解决问题。 您也可以使用即时聊天选项。

PDFKit 文档的质量和可用性

PDFKit 的 npm 文档将该库描述为轻松创建复杂的多页可打印文档的工具。 它强调其 API 的连锁性,包括底层函数和高层功能的抽象,设计足够简单,只需调用几个函数即可生成复杂的文档。

文档的功能部分非常全面,涵盖了矢量图形、文本、字体嵌入、图像嵌入、注释、表单创建、大纲和 PDF 安全性,所有这些都展示了该库创建可访问和安全文档的能力。

支持选项

PDFKit 作为一个开源库,得益于社区的支持。 问题和功能请求可通过 GitHub 存储库处理,用户可在该存储库中贡献代码、提交问题和提出拉取请求。 围绕 PDFKit 的社区还可能提供非官方的支持渠道,如 Stack Overflow,开发人员经常在这里分享他们的知识和解决方案。

许可模式

IronPDF 许可证

PDFKit npm 与 Node.js 版 IronPDF 的比较:图 8

IronPDF 采用商业许可模式运营,这意味着开发人员或公司需要购买许可才能在其项目中不受任何限制地使用该库。

Lite:一次性收费的"$liteLicense "提供了适合小型项目的基本软件包。

专业:该级别价格为 1,499 美元,适用于专业用途,提供更多特性和功能。

无限制:无限制层级的价格为 2,999 美元,是大规模部署的理想选择,可无限制地使用所有功能。

IronPDF还提供一个免费试用版此外,还必须确保翻译的准确性,以便开发人员在购买之前对库进行评估。 不提供免费版本,也不提供高级咨询或集成服务。

PDFKit 许可证

PDFKit 是一个开源库,采用 MIT 许可。 本许可允许自由使用、修改和分发软件。 作为一个开源项目,PDFKit 没有定价结构。 它可以自由融入任何项目,用户可以通过 GitHub 参与其开发。 该项目接受捐赠,捐赠不是强制性的,但可以支持图书馆的持续开发和维护。

结论

总之,IronPDF for Node.js 和 PDFKit 都是在各自环境中生成和处理 PDF 的强大工具,但 IronPDF for Node.js 凭借其为 Node.js 平台量身定制的广泛功能集而更具优势。

IronPDF 在将 HTML 转换为 PDF、高级编辑以及全面支持 JavaScript 和其他富媒体方面的功能,使其成为适用于各种 PDF 处理任务的通用解决方案。 此外,IronPDF 对安全性的高度重视及其详细的文档提供了对开发人员至关重要的保证和可访问性。

PDFKit 是开源的,具有灵活性和易用性,这对那些喜欢广泛的社区支持和修改源代码能力的开发人员极具吸引力。 它的功能令人印象深刻,特别是考虑到开源解决方案的成本优势。

IronPdf 提供免费试用版,允许开发人员在投入资金之前评估其全部功能。 此外、Iron 软件公司的 Iron Suite其中包括 IronPDF 和其他有价值的开发人员工具,如IronXL, IronBarcode, IronQRIronOCR此外,.NET、Java、Python 或 Node.js 还提供了一个具有成本效益的一揽子交易,以两个产品的价格提供一套全面的功能。

最终,在 IronPDF for Node.js 和 PDFKit 之间做出选择将取决于项目的特定需求以及开发人员或开发团队的偏好。 对于那些在 Node.js 生态系统中寻求丰富功能和广泛文档的人来说,IronPDF for Node.js 是一个合适的选择。

准备开始了吗? 版本: 2024.11 刚刚发布

免费 npm 安装 查看许可证 >