pdftoppmをalpineにインストールする場合は、xpdfじゃなくてpoppler-utils

2023年12月25日

テクノロジー

eyecatch 最近自分で作っているシステムで、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日をこうした調査などで終わったのだが、これを大変だった一日と考えるか、仕様が決まった結末まで行ったので、充実した一日と考えるかは、エンジニアの力量に依存するのかも・・・そんな事を考えながらブログを書き終えた自分でした。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。