25 ポイント 投稿者 GN⁺ 2025-08-16 | 1件のコメント | WhatsAppで共有
  • EmbedPDFは、あらゆるJavaScriptプロジェクトに簡単に統合できるオープンソースPDFビューアー
  • React、Vue、Svelte、Preact、Vanilla JSなど、さまざまなフロントエンドフレームワークとの互換性を備える
  • 注釈、ハイライト、実際のテキスト削除(レダクション)、検索、ズーム、回転など豊富な機能を含む
  • 仮想スクロールとプラグイン構造により、性能向上と拡張性の両方をサポート
  • MITライセンスで、誰でも自由に利用・貢献可能

EmbedPDF オープンソースPDFビューアープロジェクト概要

  • EmbedPDFは、どんなJavaScriptプロジェクトにも手軽に埋め込める、フレームワーク非依存のオープンソースPDFビューアー
  • MITライセンスを採用し、React、Vue、Svelte、Preact、Vanilla JSなど、さまざまなモダンなフロントエンドフレームワークとの互換性を強みとして持つ
  • モダンな読書環境と開発者フレンドリーなAPIを提供する

主な機能

  • 注釈対応: ハイライト、付箋、フリーテキスト、インクなど、さまざまな注釈機能を提供
  • 本物のRedaction: レダクション機能使用時、文書内の実際のコンテンツを完全に削除するセキュリティ機能をサポート
  • 検索、テキスト選択、ズーム、回転など、主要なPDF操作機能を含む
  • 滑らかで仮想化されたスクロールにより、大容量文書でも性能低下なく閲覧可能
  • プラグインベースのアーキテクチャとtree-shakeableプラグインにより、不要なコードの除外と容易な拡張性を保証

ドキュメントとデモ

  • 公式ドキュメント、インストールガイド、APIリファレンス、例https://www.embedpdf.com で確認可能
  • ライブデモで直接PDFファイルをアップロードしたり、サンプル文書で機能を試したりできる

オープンソースとライセンス

  • MITライセンスでソースコードを自由に利用・貢献可能
  • PDFiumを含んでおり、この部分はApache License 2.0に従う

コミュニティと貢献

  • オープンソースコミュニティへの参加や、さまざまな貢献を歓迎
  • ContributingガイドおよびGithub Discussionsで開発者同士のコミュニケーションが可能

プロジェクトの重要性と差別化ポイント

  • 既存の商用PDFビューアーの代替として、誰でも自由に社内システムやSaaSにPDFビューアー機能を手軽に導入できる
  • さまざまなフレームワークとの高い互換性と、モダンでモジュール型の構造が差別化ポイント
  • レダクションなどの高度なPDF処理機能をオープンソースで提供する珍しい例

1件のコメント

 
GN⁺ 2025-08-16
Hacker Newsのコメント
  • 実際に重要な処理はPDFiumで行われており、PDFiumはGoogleがFoxitから取得した後も自ら開発を継続してきたプロジェクトで、現在はChromeに採用されていることを案内している(いま盛んに議論されている作業をけなしたいわけではなく、単に完全にゼロから書かれたPDFパーサーではないという点に触れているだけ)
    • 多くのPDFビューアー(商用製品を含む)がPDFiumをベースに作られていると思う
  • Mozilla PDF.jsがあるのに、なぜこのプロジェクトを開発したのか気になる https://github.com/mozilla/pdf.js(批判ではなく、既にあるものを作り直す理由はいくらでもあるので、純粋な興味による質問)
    • 主な目標は、開発者がWebサイトに簡単に統合できるPDFビューアーを作ることだった。PDF.jsは一部のユースケースではカスタマイズや拡張が難しかったり複雑だったりする
    • PDFマークアップ(注釈、図形、コメント)が必要な場合、自前で構築するか、かなり高額なサブスクリプション型PDFエディターを使うしか選択肢が思い浮かばない。実際、Apryseを導入したチームは、単純なPDF編集対応の費用だけでも負担が非常に大きいと聞く
    • ざっと見ただけでも、注釈コメントなど既存製品とは異なる機能があることが分かる
    • iPadやiPhoneでデモ文書を開くと、Print Preview機能はデスクトップ端末でしか動作しないことが分かる
    • 402件のオープンイシューを見れば、PDFの途方もない複雑さと、そのすべての機能を扱うための労力がうかがえる
  • 以前、PDFビューアーを組み込んだサイドプロジェクトをやったことがある。最初のバージョンではpdf.jsを使ったが、高速に拡大縮小すると引っかかりがあり、フォーカスの維持も難しかった。そこでC++のpdfiumとMetalレンダリングで自作した。デモ動画で確認できる。タイル方式を採用して、メモリと性能のバランスを取った。pdfiumがWebAssemblyでもここまで高性能だとは思わなかったし、実際にはC++よりWebでUIを作るほうが楽だ
    • 正直、デモのほうがずっと速くて滑らかに感じる。zoom動作が本当にスムーズに実装されている。これを見て、自分もまた開発に戻って性能改善を試してみたくなった
  • pdf.jsを使っているが(17MB、158ページ、画像多数、Windows環境)、テスト中に遭遇した問題点を共有する
    • リンクが動作しない
    • ブックマークは表示されるが機能しない
    • Firefoxではテキスト選択ができない
    • Chromeではミドルクリック(スクロール用途)がテキスト選択になってしまう
    • pdf.jsではスクロールは問題ないが、この製品ではスクロール時に数百〜千ミリ秒のあいだ画面がぼやけ、画質低下がひどい。Endキーなどで複数ページをジャンプすると白い画面しか見えない
    • FFでは上/下、Page Up/Down、Home/Endが動作しない(左右は動作する)
  • 軽くテストしてみたところ、Firefoxでは注釈機能がまったく動かなかったが、Chromeでは下線、ハイライトなどすべての注釈機能が正常に動作することを確認した
    • Firefoxでの注釈テストはまだできていなかったので、知らせてくれてありがとうとのこと。Chromeでは問題なく動いていてよかった、近いうちに確認する予定だと共有している
  • 埋め込みアウトライン(注釈)の編集に対応しているのか気になる。PDFビューアー/エディターでいつも最も物足りなく感じる機能で、アウトラインのないPDFを受け取るたびに必要性を感じる
  • Linux + Firefoxの組み合わせでは、デモで注釈/墨消し(redaction)ツールがまったく動作しない。一方でChromiumでは同じマシン上で正常に動作する
    • Firefoxで発生していた問題は先ほど修正したので、現在はLinux + FirefoxとChromiumの両方で注釈および墨消し機能が正常に動作することを案内している
  • ドキュメントも素晴らしく、headless Reactライブラリというコンセプトが特に気に入った。カスタムUIや機能を簡単に追加できる。特定の用語を自動でハイライト/下線化し、クリックまたはhover時にカスタムコンポーネントを表示するのはどれくらい難しいかと質問している
    • とても簡単にできる。すでにその機能は実装されている。AnnotationLayerでselectionMenuやカスタムコンポーネントを直接レンダリングできる。さらに踏み込みたいならDiscordチャンネルで問い合わせてほしいと案内している
  • 製品は印象的に見える。気になるのは、こうした機能豊富な無料PDFビューアーの開発をどう継続するつもりなのかという点だ。エンタープライズ向け機能やPDFホスティング、あるいは他の収益化モデルを計画しているのかと質問している
    • 質問に対してはすべて「はい」と回答。クライアント側のPDFビューアーは無料+MITライセンスのまま維持する一方、PDFホスティングやエンタープライズ向け分析、アクセス制御などの追加機能は有料サービスとして提供する予定
  • 全体的にはよく動くが、墨消し(redaction)ツールをビューモードに切り替えたとき(赤い線が有効な状態)でもredactionが有効のままで、スクロールできなくなる現象があった。再読み込みで解消した
    • 良いフィードバックで、近いうちに修正予定とのこと。モバイルでは細かな範囲選択のしやすさを考慮して、redactionモードではスクロールを無効化するのが意図した挙動だという。ただし、ビュータブに切り替えたら必ずredactionモードを終了するべきで、見つけてくれてありがとうとの返答だった