最近自分で作っているシステムで、PDFを1ページずつ画像出力する機能が必要になりました。
サーバーサイドをPHPにしているので、できればPHPだけで実装ができればいいな・・・と思って、調べてみたらPHPだけでPDFの読み込みはできません・・orz
とりあえずPHPでPDF操作ができるようにするためにいくつかの方法があり、そこから仕様確定に至るまでの道程をブログに残しておきます。
PHPでPDFを操作するための2つの方法
ネットで調べるとほとんどが、「TCPDF」というライブラリを勧めている。
確かに以前このライブラリを使ってPDFを構築する処理を実装したのだが、今回は読み込みだけでいいのだ。
次にChatGPTに聞いてみたところ、「ImageMagickを使え」と言われてしまった。
ImageMagickはオワコンと言われている中、画像処理の精度が良いのは理解しているが、処理速度が遅いのが気になるツールだ。
そんな中、以前自分で書いたブログがヒットして、「PDFtoPPM」というコマンドラインがある。
頭の中にはあったのだが、やはりこの方法しかないのか?
できればPHPだけで処理したかったのだが、コマンドラインを挟んで処理をするのも致し方ないだろう。
ちなみに、以前書いたブログ記事はこちら。
PDFをJPEG画像に変換したい場合はImagemagickよりもpdftoppmの方が高速で便利
DockerにPDFtoPPMを登録する工程
以前、Ubuntuにインストールしたときは、次のコマンドでインストールできたのだが、
apt-get install xpdf
今回は、Alpineにインストールしなければならない。
xpdfというモジュールではインストールできたのだが、pdfの機能がまるで実装されていないモジュールで、行き詰まってしまった。
そこで、実際のコマンドをalpineのインストールツールの検索機能で調べてみると・・・
apk search pdftoppm
> poppler-utils-23.05.0-r0
なんとちゃんと存在する!!
Alpine Linuxは、ネットで搭載しているモジュールが検索できるサイトがあるので、そこでも確認してみると、一通りのモジュールがべつのパッケージ名で搭載されていることがわかった。
https://pkgs.alpinelinux.org/contents?branch=edge&name=poppler-utils&arch=x86_64&repo=main
最初からここで調べておけばよかった・・・という嘆きは置いといて、
poppler-utilsというパッケージ名だという名称がわかったので、次のコマンドで実装可能になった。
apk add poppler-utils
Dockerのセット
もちろん、コマンドベタ打ちは、確認のためで、環境構築としてDockerにセットしておくことで、どの環境でも取りこぼすこと無くモジュール実行ができるようになるので、Dockerfileに次のように追記しておいた。
RUN apk add --update --no-cache poppler-utils
問題なくビルドも通って、事なきを得た。
あとがき
今回はインストールのドタバタ劇をブログに書いておいたが、実際に大変なのは、この後のPHPへの組み込みプログラミングだ。
完成するツールはまた後日発表したいと思います。
とりあえず、休日の貴重な1日をこうした調査などで終わったのだが、これを大変だった一日と考えるか、仕様が決まった結末まで行ったので、充実した一日と考えるかは、エンジニアの力量に依存するのかも・・・そんな事を考えながらブログを書き終えた自分でした。
0 件のコメント:
コメントを投稿