在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
本教程將深入探討IronPDF 的 JavaScript SDK和PDFKit——JavaScript PDF 庫中的兩個大名鼎鼎的名字。 它們都是 Node.js 專案的堅實選擇,但各有優劣。
本文的目的是讓讀者真實了解 IronPDF 和 PDFKit 工具如何融入開發者的 Node.js 工作流程。 無論是處理基本的 PDF 還是面對複雜的佈局,了解 IronPDF 和 PDFKit 的功能及限制都是非常重要的。
PDFKit 是一個先進的 JavaScript PDF 生成庫,適用於 Node.js 和瀏覽器環境。 其完善的工具組使其成為輕鬆創建多頁可打印文件的理想選擇。 該資料庫旨在易於使用,簡化生成複雜文件的過程。
PDFKit 因其強大的向量圖形功能、豐富的文本和字體樣式選項、圖像嵌入功能以及對互動和安全 PDF 文件的支援而脫穎而出。 易於使用,加上在伺服器端和瀏覽器環境中的多功能性,這使其成為開發人員在各種應用中生成自訂 PDF 的寶貴工具。
靈活的 PDF 生成
PDFKit 不依賴 HTML 到 PDF 的轉換; 相反,它直接通過 JavaScript 代碼生成 PDF。 這種方法為開發人員提供了對他們創建的 PDF 文件的佈局、樣式和內容的精確控制,因此生成複雜的文檔變得更容易。
圖形和文本格式化
該庫支援先進的圖形功能,包括線條、曲線、矩形、圓形等。 文字格式功能(如自定義字體、大小和顏色)使創建視覺上吸引人的文檔成為可能。
影像嵌入和矢量圖形
PDFKit 允許嵌入多種格式的圖像並支持向量圖形,這使其成為高品質打印文檔的理想選擇。 圖像嵌入支持 JPEG 和 PNG 文件。
進階文件功能
開發者可以在他們的 PDF 中添加註釋、書籤和超連結。 該庫還支持創建頁眉和頁腳,此外還可包括頁碼及自定義 JavaScript。
可自訂且可重複使用的組件
PDFKit API 促進了可重複使用元件的創建,簡化了具有重複結構的文件(如發票或報告)的開發過程。
向量圖形
PDFKit 提供類似 HTML5 canvas 的 API 用於向量圖形,包括路徑操作、SVG 路徑解析、變換以及漸層功能。 這是用於在 PDF 中創建可擴展的高品質圖形的理想選擇。 該庫支持自動換行、各種文字對齊方式和項目符號列表。
嵌入字型
PDFKit 支援多種字體格式,如 TrueType、OpenType、WOFF 等,使 PDF 的字型保持一致性。 字體子集功能也可用,以確保文件大小保持在可控範圍內。
使用 IronPDF,您可以輕鬆地將 HTML 字串、文件甚至整個網頁轉換為 PDF,這些 PDF 的外觀與原始內容完全相同,並包括 CSS 樣式和圖像。 這對於提供專業等級的文件(例如發票、合同和報告)至關重要,這些文件需要保留網站設計中規定的品牌和佈局。
IronPDF 擅長將 HTML 內容轉換為高保真 PDF 文件。 其功能包括:
IronPDF 提供全面的格式工具,允許自訂和增強從 HTML 內容創建的 PDF,例如:
IronPDF的編輯功能非常廣泛,提供修改現有PDF以滿足特定需求的能力:
IronPDF 支援 PDF 表單的創建和操作,允許在 PDF 中加入互動元素:
PDF表單:這包括創建可以數位化填寫的表單,讓企業能夠自動化資料收集過程。 使用 IronPDF,您可以以程式方式創建表單、填充欄位,甚至檢索資訊,從而簡化工作流程並減少手動資料輸入。
IronPDF 支援多種平台,這使其在不同的開發環境中具有多用途性。 它兼容 Node.js 版本 12.0 及以上,可以在 Windows、Linux、Mac 和 Docker 上使用。
在進入 PDF 生成的世界之前,您需要設置您的專案環境。 Visual Studio Code (VS Code) 為此提供了一個理想且使用者友好的平台。 首先啟動 VS Code,並創建一個新的 JavaScript 專案。 您可以透過為項目設置一個新資料夾並在 VS Code 中打開它來完成此操作。 這個環境將是您撰寫程式碼和管理專案文件的地方。
一旦在 VS Code 中打開資料夾,下一步就是初始化一個新的 JavaScript 專案。 在 VS Code 中打開整合終端機(通常可以在選單中的終端機 > 新終端機下找到),然後輸入npm init
。 這個命令將指導您創建一個package.json
文件,這對於管理您的專案依賴項和元數據至關重要。
在設定好您的 JavaScript 項目後,是時候安裝 IronPDF 庫了。 在您的 VS Code 終端機中,執行以下命令:
npm install ironpdf
此命令將下載並安裝 IronPDF 函式庫,將其新增到您專案的相依項目中。
安裝後,確保在package.json
文件的dependencies部分列出了IronPDF。 這確保 IronPDF 正確整合到您的專案中,為無縫的 PDF 生成和操作鋪平道路。
接下來是 PDFKit,一個功能強大且多用途的 PDF 文件生成庫。 要將 PDFKit 添加到您的專案中,請在 VS Code 的終端機中執行以下命令:
npm install pdfkit
這將安裝 PDFKit 並將其添加到你的專案依賴項中。
成功安裝後,確認package.json
檔案中的相依性中出現PDFKit。這一確認對於確認您的專案已具備創建複雜、詳細及視覺上吸引人的PDF檔案所需的工具是至關重要的。
PDFKit npm 與 IronPDF For Node.js 比較:圖 2
IronPDF for Node.js 在將 HTML 轉換為 PDF 方面表現出色,為開發者提供了一個高效的解決方案。 這個庫擅長處理複雜任務,如渲染 CSS 樣式、執行 JavaScript 和嵌入自訂的頁首和頁尾。 這些功能顯著提升了從HTML來源創建專業級PDF的能力。 IronPDF for Node.js 提供了三種方便的方法來進行此轉換過程:
HTML 字串轉 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);
}
})();
在此處,您可以查看程式碼的輸出:
透過此功能,開發人員可以將現有的 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);
}
})();
這是生成的發票 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);
}
})();
這是從 URL 生成的輸出 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();
此代碼片段創建了一個包含文本標題的 PDF 文件。雖然 PDFKit 無法直接將 HTML 轉換為 PDF,但它允許對文本的位置和格式進行詳細控制。
以下是由PDFKit生成的輸出文件:
密碼、安全性與中繼資料: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",
});
})();
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");
})();
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");
});
合併兩個或多個PDF:IronPDF 提供了一個簡單的解決方案,可以將多個PDF文件合併成一個文件。 這一功能對於合併各種文件(如報告、合同或一系列表單)非常有用,有助於改善文件的管理和分發。
移除特定的 PDF 頁面:編輯的靈活性對任何 PDF 工具來說都很重要,IronPDF 提供從 PDF 文檔中移除特定頁面的功能。 這在為不同的觀眾定製內容或刪除不必要的頁面以創建更簡潔的文件時特別有用。
可自訂佈局引擎: 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'));
在此範例中,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'));
流和緩衝區處理: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);
});
可自訂的頁首和頁尾:製作具有專業外觀的 PDF 需要注意細節。 PDFKit 的可自訂頁首和頁尾功能能夠精確地在頁面的頂部和底部放置文字和圖形。 這對於在多頁文件中添加一致的品牌標誌、文件標題和頁碼特別有用。
互動表單:PDFKit 將其功能擴展至 PDF 文件內的互動表單,允許創建文字欄位、核取方塊和單選按鈕。 這個功能對於希望收集信息或提供互動內容的使用者來說是無價的,提升了 PDF 的用戶體驗和功能性。
IronPDF 的文件提供了使用該庫的綜合指南,詳細示例了關鍵功能,例如將 URL 渲染為 PDF 和從 HTML 字串建立 PDF。 它提供了 PDF 列印的自訂選項,例如設定紙張大小和 DPI,以及文件的外觀選項,如具有郵件合併欄位的頁首和頁尾。 該文件還涵蓋了更高級的方面,如使用自定義 WebClients、創建可編輯的 PDF 表單,以及在 PDF 中使用 JavaScript。 您可以瀏覽文件以獲取完整的 API 文件和更多範例。
設置頁首和頁尾時,HTML 和文本選項都有充分的文檔說明,允許使用佔位符字串合併元數據。 提供授權詳細信息,指導用戶如何移除浮水印並獲得授權。 文件甚至提供了有關設定 PDF 頁首和頁尾的第一頁頁碼的資訊,並包括了在列印前等待 HTML 渲染多長時間的詳細內容,考慮到 JavaScript、AJAX 或動畫的渲染。
IronPDF 有一系列針對常見問題的故障排除指南,提供逐步解決方案。 這可以是嘗試解決問題的使用者的第一站。 對於更複雜的問題或無法通過指南解決的問題,IronPDF 提供技術支持。 用戶可以提交工程支持請求,可能包括提供有關問題的詳細信息,例如平台或運行時特定信息,以幫助支持團隊重現和解決問題。 您也可以使用在線聊天選項。
PDFKit 的 npm 文件將該庫描述為一個可以輕鬆創建複雜、多頁、可打印文件的工具。 它強調其 API 的連鎖性,並包括低階函數和高階功能的抽象設計,簡單到生成複雜文件可以像調用幾個函數一樣簡單。
文檔的功能部分非常全面,涵蓋了向量圖形、文本、字體嵌入、圖像嵌入、註釋、表單創建、大綱和PDF安全性,這些都展示了該庫在創建易於訪問和安全文檔方面的能力。
由於 PDFKit 是一個開源庫,因此受益於社群支持。 問題和功能請求可以透過其 GitHub 存儲庫處理,使用者可以在那裡貢獻代碼、提交問題和提出 pull requests。 PDFKit 社群可能還提供非正式支援渠道,如 Stack Overflow,開發者常常在那裡分享他們的知識和解決方案。
IronPDF 採用商業授權模式,這表示開發者或公司需要購買許可證,以便在他們的專案中無限制地使用該程式庫。
Lite: 價格為 $749,此一次性費用提供適合小型項目的基本套件。
Professional:售價 $1,499,此層級適用於專業用途,提供更多功能和能力。
Unlimited:Unlimited 組合定價為 $2,999,非常適合大規模部署,提供無限制訪問所有功能的完整權限。
IronPDF 還提供免費試用版,允許開發者在購買前評估該庫。 沒有免費或免費增值版本可用,也不提供高級諮詢或整合服務。
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 Software 的 Iron Suite,其中包含 IronPDF 以及其他有價值的開發者工具,如IronXL、IronBarcode、IronQR和IronOCR,提供了一種具成本效益的套裝方案,以兩種產品的價格提供全面的功能集合。
最終,在 IronPDF for Node.js 和 PDFKit 之間的選擇將取決於專案的特定需求及開發者或開發團隊的偏好。 對於那些在 Node.js 生態系統中尋求豐富功能集和廣泛文檔的人來說,IronPDF for Node.js 是一個適合的選擇。