0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【PHP】PDF内のQRコードを読み取る

Last updated at Posted at 2022-04-15

はじめに

PDF内のQRコードをサーバーサイドで読み取りたいと思い、なんだかんだと調べて簡単な実装は出来たのですが、商用利用は難しそうだということで業務に使えなかった方法をここに載せます。

1. 環境

  • Windows10 64bit
  • xampp
  • PHP8.1

2. 使用したライブラリ

ライブラリ名 version ライセンス ざっくりした概要
endroid/qrCode 4.4.8 MIT QRコードの読み取りを行うことが出来る
Imagemagick 7.1.0 GPL互換の独自ライセンス 画像操作することが出来る
Ghostscript 9.56.1 AGPLか商用のデュアルライセンス PDFを読み取って画像に変換したりできる

3.実装

index.php
<?php
require __DIR__ . "/vendor/autoload.php";
use Zxing\QrReader;

/*白紙のページ+QRのPDFの読み取り*/
//2Pを指定する
//ページ指定をしたくないときは[]を付けなければOK
$pdf = __DIR__.'/test.pdf[1]';
$text="";//初期値

$image = new imagick($pdf);
$qrcode = new QrReader($image, QrReader::SOURCE_TYPE_RESOURCE);
$text = $qrcode->text();

echo "pdfファイルのQRコード読み取り結果<br>";
print $text;
$image->clear();

4.結果

上記を実行すると、無事PDF内のQRコードの内容を読みとることが出来ました!
しかし、Imagemagickが使用しているGhostscriptはAGPLと商用のデュアルライセンスです。

5.AGPLって?

使うならソースを全公開しろ!!!というライセンスです。詳しくは調べてね!

6.結論

Ghostscript、何とかして利用できないかと調べていたのですが結局下記理由で断念しました。

  • AGPL版:利用してソース全公開は要件的に難しい
  • 商用ライセンス版:ネット上には参考料金がない
  • 英語でコミュニケーションを取る必要があり時間的に厳しい

その他

いろいろPHP関連のPDF→画像化するライブラリを見てみましたが、中身を見るとImageMagickを使用している(=Ghostscriptが無いとiMagickにPDF渡すとエラーが発生する)というものが結構ありました。
うっかりライセンス違反をしないよう気を付けよう!

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?