質問: はじめまして、駆け出しのWEBエンジニアです。 WEBブラウザ上でPDFデータを編集できるシステムの開発を行いたいと考えています。 具体的には、 ユーザーがPDFデータをアップロードする →ユーザーが画像(png)データをアップロードする →PDFデータのユーザー任意の場所に画像データを貼り付け合成する(ドラッグ&ドロップで操作できるようにしたい) →一つのPDFデータとしてサーバーに保存 イメージ的にはこちらのサイトのような感じです。 これを会員管理システムに組み込み、特定のユーザーだけが行えるようにしたいです。 https://smallpdf.com/jp/edit-pdf 実現するにはどのような手法を用いればいいか、 また使えそうなライブラリ等あれば教えていただきたいです。 あまり関係ないかもしれませんが、以下現在の開発環境です。 PHP7.3.22 CakePHP4 よろしくお願いいたします。
回答: 既に同じサービスがあろうと、どんな理由であろうと、 サービス開発をゴールにプログラミングにチャレンジしてみるのはいいことだと思います。 いまのスキルでいきなり目的のものを作るのはかなり厳しいと思いますので、 まずは機能単位で挑戦し、最後に結合してサービスとしてみてください。 1. PHPでPDFを新規作成してみる 2. PDFからオブジェクトのデータと座標を取得してみる 3. 編集画面を作ってみる (2のデータを受け取り表示、編集できるように) 4. 編集画面からデータをサーバで受け取りPDFを作成 5. 会員機能 ### PHPでPDFを取り扱うヒント PHPでPDFを作成するにはこのような定番ライブラリがあります。 「TCPDF」で検索すればいくらでも使い方やサンプルは出てきます。 ### 編集画面のヒント ブラウザでPDFを直接編集するのは非常に難しいので、 HTMLとJavaScriptを使って仮想的にPDFの編集UIを作るのが良いと思います。 「js ドラッグ」で検索すればでてきます。 ### 仕組みのヒント サーバサイド・・・PDFの生成・解析 クライアントサイズ・・・編集画面 1. ブラウザからサーバにPDFをアップロードするとオブジェクトデータと座標が返ってくる 2. 1の情報をもとにHTMLで表示 3. 2をjsで座標などの編集できるように 4. 座標データをサーバに送ってサーバサイドでPDF生成 会員機能はこれらの仕組みとはほとんど関係ないので そのタイミングで質問してみてください