世界を動かす技術を、日本語で。

HNに表示: Adobe Acrobat PDFビューアの無料代替を作成しました

概要

EmbedPDF はMITライセンスのオープンソースPDFビューア。 ReactやVueなど主要JavaScriptフレームワークで利用可能。 注釈・検索・リダクションなど Adobe Acrobat 並みの機能を無料提供。 完全ブラウザ動作、サーバー不要。 貢献やフィードバックも歓迎。

EmbedPDF:オープンソースJavaScript PDFビューア

  • EmbedPDF は、フレームワーク非依存の MITライセンス PDFビューア
    • React、Vue、Svelte、Preact、バニラJSで利用可能
  • スムーズでモダンな閲覧体験洗練された開発者API を提供
  • 主な機能
    • 注釈機能 (ハイライト、付箋、フリーテキスト、インク描画)
    • 本格的なリダクション (内容を実際に削除)
    • 検索・テキスト選択・ズーム・回転 対応
    • バーチャライズドスクロール による滑らかな操作感
    • プラグインアーキテクチャツリーシェイカブルなプラグイン 対応
  • 完全クライアントサイド動作、サーバー不要
  • SDKは React、Vue、Preact、バニラJS で簡単導入
  • Adobe Acrobat の有料機能を無料で実現することを目指す

ドキュメント・デモ・リソース

  • 公式ドキュメント、インストールガイド、APIリファレンス、サンプル
    • https://www.embedpdf.com
  • ライブデモ(自身のPDFまたはサンプルで試用可能)
    • https://app.embedpdf.com
  • GitHubリポジトリ
    • https://github.com/embedpdf/embed-pdf-viewer

コントリビューションとライセンス

  • 貢献歓迎 :コントリビューションガイドとGitHubディスカッションを参照
  • MITライセンス で提供
  • PDFiumを含み、これは Apache License, Version 2.0 でライセンス

EmbedPDF開発の背景

  • Adobe Acrobat は重く、クローズドかつ高価
  • EmbedPDF は軽量・拡張性・どこでも埋め込める利便性を重視
  • フィードバック、バグ報告、機能要望を広く募集

Hackerたちの意見

いいね!昔、PDFビューアが組み込まれたサイドプロジェクトをやったことがあるんだ。最初のバージョンはpdf.jsを使ったんだけど、ズームインするときに動きがもっさりしてて、ズームの焦点を合わせるのが難しかった。だから、今度はC++でpdfiumを使ってMetalでレンダリングする自分のPDFビューアを作ったよ。これが簡単なデモね: https://youtu.be/jJMhVn5yzEI メモリ使用量とパフォーマンスをバランスさせるためにタイル技術を実装したんだ。pdfiumがWebAssemblyでこんなにパフォーマンスが良いとは思わなかったし、正直言うとC++よりもウェブでUIを開発する方が好きだな。

正直、君のは俺が作ったものよりもさらにサクサク動いてるね。ズームの扱いがすごくスムーズだ。ほんとに素晴らしい仕事だよ!これを見て、また挑戦してみたくなった。

うまく動いてるみたいだね!ちょっと注意点だけど、赤線の赤actionツールをアクティブにしたまま、赤actionからビューに切り替えると、ビューでもそのままアクティブになっちゃう。スクロールできなくなるから、まだ赤actionしちゃうんだ。リフレッシュすれば直るけど。

いい指摘だね、直すよ。モバイルでは、赤actionモードのときにスクロールを無効にして、正確な選択ができるようにしてるんだけど、ビュータブに戻ったら赤actionモードはちゃんと終了するべきだね。指摘してくれてありがとう!

ちょっと試してみたよ。Firefoxでは注釈が全然動かなかったけど、Chromeではすべての注釈タイプ(下線、ハイライトなど)がちゃんと動いたよ。

Firefoxでの注釈テストはまだできてないから、指摘してくれてありがとう。そこで何が起こってるのか確認してみるよ。Chromeではちゃんと動いてるのがわかってよかった。

MITライセンスは寛大だね。いい選択だし、ありがとう!

ありがとう!みんなが使いやすく、調整しやすく、さらにその上に構築できるようにしたかったから、MITがいい選択だと思ったんだ。

基盤となるPDFiumはApache 2.0だけど、今のプロジェクトはその依存関係に関して、https://www.apache.org/licenses/LICENSE-2.0#redistribution に準拠してない気がする。

共有してくれて、ライセンスについてもすごく寛大でありがとう!これってちょっと範囲外かもしれないけど、「フリップブック」ビジュアライゼーションの計画はある?

まだロードマップには入ってないけど、もっと興味ある人が増えたら追加するのも全然アリだよ。

MozillaのPDFビューアがあるのに、なんでこれを作ったのか気になるな。https://github.com/mozilla/pdf.js 批判するつもりはないけど、存在するものを作る理由はたくさんあるから、ただ興味があるだけ。

ざっと見た感じ、注釈コメントみたいな異なる機能がいくつかあるね。

主な目標は、開発者が最小限のセットアップでウェブサイトに統合しやすいPDFビューアを作ることだったんだ。PDF.jsは特定のユースケースに対してカスタマイズや拡張が難しいことがあるからね。

アプリ統合に関しては、注釈や図形、コメントがゲームチェンジャーだよ。リアルなPDFマークアップツールが必要になると、自分で作るか、サブスクリプションベースのPDFエディタを使うしかないけど、どちらも安くはない。Apryseを統合したチームを知ってるけど、基本的なPDF編集をサポートするだけでもコストがすごいことになってる。

402件のオープンな問題、神様、これがPDFやその機能を扱うための膨大な努力の一端を見せてるね。

iPadやiPhoneでそのリンクに行って、デモ文書を開いてみて。印刷プレビューをタップすると、デスクトップデバイスでしか動かないみたい。

いい感じ!ドキュメントを見てたら、ヘッドレスなReactライブラリのアイデアが特に気に入った。自分のUIをデザインして、余分なコンポーネントを追加できるのがいいね。PDF内の特定の用語を自動的にハイライトしたりアンダーラインを引いたりして、用語にクリックやホバーしたときにカスタムコンポーネントを表示するのはどれくらい難しい?

これすごい!Acrobat Readerとは違って、実際にPDFを読みたいと思わせてくれた。UIもめっちゃプロっぽいね。

素晴らしいプロジェクトだね。PKCS#11とPKCS#12があったら最高だな。

ありがとう!署名は私たちにとって優先度が高いので、PKCS#11とPKCS#12のサポートは確実に考えてるよ。

本当にいいね。速度も素晴らしいし、最近MozillaのPDFビューアーで問題があったんだ。(理由は不明だけど印刷が失敗する。)でも、これってスタンドアロンのアプリでも使えるのかな?