LibPDF.js: パース & サインのための TypeScript PDF ライブラリ

LibPDF.js: 完全な TypeScript PDF ソリューション

JavaScript 環境で PDF を読み込む、編集する、生成する必要があったことがあるなら、ライブラリの迷路を追いかけてきたことでしょう:

  • PDF.js はレンダリングに優れていますが、ブラウザを使わざるを得ません。
  • pdf‑lib は洗練された API を持っていますが、実際の PDF の変わり種に苦労します。
  • pdfkit は PDF を生成できますが、読むことはできません。

そして LibPDF.js が登場です。完全に TypeScript で書かれた、ブラウザとサーバーの両方に対応したモダンな PDF エンジンです。Documenso が設計したオープンソース DocuSign 代替として、他のライブラリでは欠けていた部分を埋めます。Web が投げてくるあらゆる PDF を開き、クリーンな API を提供し、プロダクションで必要となる全機能をサポートします。

LibPDF.js は何をできるのか?

Feature Availability Notes
任意の PDF をパース ✔️ 許容的パースで不正なファイル、フォールバック復旧、完全な位置データをサポート
PDF を作成 ✔️ 新規作成または既存ファイルを変更
暗号化 ✔️ RC4, AES‑128, AES‑256 (R2‑R6)
デジタル署名 ✔️ PAdES B‑B, B‑T, B‑LT, B‑LTA;Google Cloud KMS 統合
フォーム入力 ✔️ テキスト、チェックボックス、ラジオ、ドロップダウン、署名
フォームフラット化 ✔️ フィールドをページ内容に焼き込み
結合・分割 ✔️ ページを結合または抽出
添付ファイル ✔️ ファイルを埋め込み、抽出
テキスト抽出 ✔️ 座標付き
フォント埋め込み ✔️ TTF/OpenType をサブセット化
画像 ✔️ JPEG, PNG (アルファ)、JBIG2 & JPEG2000 通過
増分保存 ✔️ 変更を追記、既存署名を保持

なぜ重要なのか – 許容性、クリーンな API、フル機能セットの組み合わせにより、車輪の再発明なしで企業向けの e‑署名・ドキュメント生成ワークフローを構築できます。

インストール & クイックスタート

# npm
npm install @libpdf/core

# bun
bun add @libpdf/core
import { PDF } from \"@libpdf/core\";

// バッファから PDF をロード
const pdf = await PDF.load(fileBytes);

// 単純な読み取り
const pages = pdf.getPages();
console.log(`Document has ${pages.length} pages.`);

// 完全に新しい PDF を作成
const newPdf = PDF.create();
const page = newPdf.addPage({ size: \"letter\" });
page.drawText(\"Hello, World!\", { x: 50, y: 700, fontSize: 24 });

// 署名例
import { P12Signer } from \"@libpdf/core\";
const signer = await P12Signer.create(certificateBytes, \"certPassword\");
const signed = await pdf.sign({ signer, reason: \"I approve this doc\" });

API ハイライト

上位レベル API

  • PDF – 文書の読み込み、結合、作成、書き込み。
  • PDFPage – 個々のページを操作(テキスト、画像、注釈の描画)。
  • PDFForm – フォームフィールドの読み取り、入力、フラット化。

低レベル API

  • PdfDictPdfArrayPdfStream – 原生 PDF 構造を直接操作したい場合のフルコントロール。

他のライブラリと比べて LibPDF.js が優れている理由

アスペクト LibPDF.js PDF.js pdf‑lib pdfkit
ブラウザまたは Node のサポート ✔️ (Web Crypto + Node 20+) ✔️ (レンダラーのみ) ✔️ ✔️
許容的パース ✔️
デジタル署名 ✔️ ✅ (基本)
フォームサポート ✔️
増分保存 ✔️

実際の PDF で動作し、スムーズな開発体験を提供するライブラリが必要なら、LibPDF.js が勝ります。

コミュニティ & コントリビューション

リポジトリは GitHub で活発にメンテナンスされ、717 つのスター、19 のフォーク、そして増え続けるコントリビューターがいます。ドキュメントは https://libpdf.dev にあり、コアライブラリは npm で @libpdf/core として公開されています。

  • コントリビューションガイド – リポジトリの CONTRIBUTING.md を参照してください。バグ修正、機能リクエスト、ドキュメント改善はいつでも歓迎です。
  • ロードマップ – 予定作業に署名検証、TrueType コレクション対応、ブラウザでのレンダリングサポートが含まれます。

実践的なユースケース

  1. E‑署名プラットフォーム – PAdES サポートと増分署名を迅速に追加。
  2. ドキュメント生成 – テンプレートから PDF を生成し、フォームに入力し、フォントと画像を埋め込み。
  3. PDF 分析 – レイアウト情報付きでテキストを抽出し、検索やインデックス化に利用。
  4. コンプライアンスワークフロー – 文書を結合し、暗号化を適用し、フォームをフラット化。

最終的な考察

LibPDF.js は TypeScript ファーストで PDF 操作の力を現代の JavaScript 開発者に提供します。法務テックスタック、カスタム請求システム、単純な PDF ビューアを構築しているかどうかに関係なく、他のライブラリの摩擦なく必要なツールを提供します。

今すぐ試してみてください – npm でパッケージをインストールし、クイックスタートスニペットを実行して、堅牢な PDF 処理をいかに高速に開始できるかを確認してください。

この記事を共有