ブラウザで*既存の*PDFを編集する [closed] 質問する

ブラウザで*既存の*PDFを編集する [closed] 質問する

現在、サーバーから PDF の base64 表現を取得している Web アプリケーションがあります。Mozilla の pdf.js を使用してこれを表示し<canvas>、ドロップダウンでページを切り替えることができます。

私が見つけたものすべてによるとMozilla の pdf.js は PDF を変更できますか?、pdf.js を使用して PDF を編集することはできません。

私は見つけたjsPDFキャンバスを取得して.toDataURL()各ページに対して操作を実行し、新しい PDF ドキュメントを作成することはできますが、次の 2 つの問題があります。

  1. 新しく生成された PDF は、各ページに一連の画像が含まれるだけなので、元の PDF 内のテキストは、処理が完了すると単なる画像になります。
  2. jsPDF で新しい PDF を生成し、その base64 を pdf.js に送り返してキャンバスに表示します。これらのステップの間に何かが起こり、ページの画像が誤って拡大縮小され、新しい PDF が変更されるたびに各ページがキャンバスの約 3/4 を占めてしまいます。同じサイズ/スケールを維持することができませんでした。

jsPDF には既存の PDF を読み込む方法はないようで、新しい PDF を作成するだけです。pdfmakeそしてPDFキットまた、新しい PDF ファイルのみを作成するようです。


そこで私の質問は:

PDF (base64 から) の表示と変更の両方を可能にするものはありますか? 理想的には、キャンバスの変更を監視し、その変更を PDF ページに描画します。完了したら、それを base64 文字列にエクスポートして、サーバーに送り返します。

ベストアンサー1

簡単に答えると、いいえ、クロスブラウザ ソリューションが見つかる可能性はほとんどありません。PDF に最適なソリューションが見つかる可能性も非常に低いです。ユーザーに HTML を編集させ、サーバーで PDF を生成させることを検討した方がよいでしょう。

[2023 年 10 月 30 日編集 - この質問は 2017 年のものであるため、古いものだと考えて無視するかもしれません。まあ、私が知る限り、この回答はまだ関連性があり、隔週で誰かがこの回答にアクセスして賛成票を投じています。しかし、旅の途中で良いライブラリやユーティリティを見つけたら、戻ってきてリストしてください。ありがとうございます。]

長い答え - PDF 形式は、素晴らしいと同時に厄介なものです。素晴らしいのは移植性があるからですが、厄介なのは内部構造と保存メカニズムです。HTML のような使いやすい「DOM」はありません。移植可能なドキュメント形式を新たに開発する場合、PDF を選択することはないでしょう。しかし、PDF は現在、捨てるには勢いが強すぎます。

若い世代の視聴者は、この熱狂的なフォーマットがどのようにして市場をリードする地位を獲得し、どこから来たのか疑問に思うかもしれません。PDF の創始者たちが設計を策定していたとき、XML、JSON、HTML、さらにはインターネットが登場する前、彼らは今日のドキュメント共有を念頭に置いて作業していたわけではありませんでした。彼らは、印刷命令をエンコードするより優れた方法、つまり PostScript プリンター ドライバーのコンセプトに取り組んでいました。これらは、プリンターが使用する前に編集されることは想定されておらず、他の目的には役立ちませんでした。その後、誰かが PostScript 描画命令を画面に解釈できることに気づき、その後、誰かがこれをポータブルでデバイス間の表示コンセプトとして使用できる素晴らしい可能性に気付きました。そして今に至ります。

質問に戻りますが、PDF を GUI で意味のある方法で編集するには、PDF を解凍し、コンポーネント (画像、書式設定されたテキスト、ページ) をディスプレイ デバイスにレンダリングする必要があります。次に、ユーザーがレイアウトを変更できるようにし、PDF を再パックします。これを PDF 標準に完全に従って実行する必要があります。そうしないと、編集した PDF ファイルの下流のユーザーがクラッシュしたり、レンダリングできなくなったりする可能性があります。さまざまな Acrobat 標準レベル、および編集パッケージ (Word、Illustrator、InDesign) ベンダーが PDF ファイルに詰め込んだショートカットや余分なもの (レイヤー、サムネイルなど) に対応する必要があります。

次に色についてです。PDF 仕様を読んでみると、オリジナルの PDF 作成者が使用できる色空間オプションが多数あることがわかります。これらを、画面や背面などに表示される適切なデバイス色に解釈する必要があります。

そしてフォント。フォントはサブセットとして埋め込まれている場合とそうでない場合があります。PDF の忠実性を保つには、PDF で定義されたスケールで描画面上のグリフをベクター グラフィックとして実現する必要があります。これは主に、プラットフォーム依存の何らかのタイプ ライブラリを使用することを意味します (クロスプラットフォームでは扱いにくい)。さらに、フォントを適切に使用するにはライセンスを取得する必要があり、ほとんどの人がおしゃれでプロフェッショナルな外観にするために使用したいフォントの場合、高価になる可能性があります。

PDF のレイヤー化、拡大縮小、回転機能を考えると、描画面として HTML キャンバスを検討することになるでしょう。キャンバスの世界では、ワードプロセッサタイプの機能については、ほとんど独力で対応しなければならないことを、知っている人なら誰でも言うでしょう。

不可能ではないが難しい。

PDF をディスプレイにレンダリングするコンポーネントは、主にプリンタ ドライバとして動作し、PDF の描画命令に忠実に従い、通常はラスターまたは場合によっては SVG グラフィックを生成します。これは一方通行です。つまり、読み取りと描画は行いますが、描画されたオブジェクトに対する「ハンドル」の意味はありません。ハンドルがないということは操作できないことを意味し、これらのコンポーネントは、変更して書き戻すことをほとんど意図していません。

「PDF に保存」する製品は数多くあります。クライアント側では、ピクセルのセットを取得し、ラスター グラフィックを「PDF」定義の最も薄いベニヤで包み込んだファイルにダンプする傾向があります。サーバー ベースの場合は、非常に強力です。Aspose や ABCPDF など、サーバー側で PDF 処理を実際に提供するツールは多数ありますが、これは OP で探しているものではありません。

要約 - 非常に複雑な問題です。何かが潜在的に出現した場合、カバーされる PDF 機能に関して多くの制約があり、したがって安全に編集できる内容に制限がある可能性があります。

最終的に PDF としてエクスポートされるドキュメントをオンラインで編集したい場合は、ドキュメント ソースの HTML バージョンを保持し、ユーザーに TinyMCE、CKEditor などで編集させてから、サーバー側ツールの 1 つを使用して保存されたソース HTML を取得し、PDF にレンダリングするという方法が考えられます。ABCPDF などのツールは、HTML を忠実にレンダリングして、画像、ヘッダーとフッター、ページ番号などを追加できるようにします。

これは、(想定される)ニーズに対する実用的な答えですが、フォント(ライセンス)の問題、ブラウザベースのエディタの扱いにくさ、一部の HTML 編集コンポーネントによって規定される HTML の全体的な奇妙さなど、いくつかのトレードオフがまだあります。しかし、実行可能です。

最終的な考え - 必要なものの範囲を再考してください。サーバーでの HTML 編集と PDF への変換が使用可能である場合、それはよく踏まれた道であり、クライアントとサーバーでそれをサポートする無料および商用のコンポーネントが見つかります。

編集: PDF に注釈を付ける必要がある場合は、作業ははるかに簡単になります。サーバーでは、ドキュメントのページのイメージを生成し、それをクライアントに送信し、ユーザーに表示し、ユーザーにマークアップさせ、注釈の座標をサーバーにキャプチャし、サーバー側の PDF ライブラリを使用して注釈を PDF にレンダリングする必要があります。これは実現可能ですが、サーバー側の PDF からイメージへの操作とクライアント側のプレゼンテーションおよび注釈のキャプチャにはさまざまなスキルが必要です。

編集:読者は、私が上で描いた絵が変わったかどうか知りたいかもしれません。2019年1月現在、私は自分の書いたことを支持しています。サプライヤーは、以前よりも多くのことができるより優れたツールとライブラリを市場に投入しています。しかし、それでもニーズを評価し、制限を確認する必要があります。おそらく何らかの制限があるでしょう。私が知る限り、クライアント側、クロスブラウザ、クロスデバイス、フル機能のPDF編集ライブラリを持っているベンダーはまだありません。どれでもPDF ファイル - 常に何らかの制限があります。しかし、修正していただけると嬉しいです。

編集: 2024 年 5 月になりましたが、何か変わりましたか? この質問は依然として人気があり、この回答は時折賛成票を獲得しています。私は Konva キャンバス ライブラリ コミュニティと連絡を取り合っていますが、既存の PDF ドキュメントの注釈に関するアクティビティは多く見られますが、編集に関するアクティビティは見当たりません。この質問に答える新しいライブラリは知りません。AI は今や新参者なので、おそらく誰もが ChatGBT4 や Bard にそれについて尋ねているのでしょう。

おすすめ記事