QRコードの自動発行ソフトを作るには? [python]

はじめに

近年、QRコードはさまざまなシーンで広く利用されており、情報の共有やコンテンツのアクセス、支払いなどの用途に活用されています。
当社でも活用の範囲が広がっており、QRコードを大量に生成する必要が出てきました。

そこで、QRコードを自動で発行する方法について考えていきます。

QRコードの発行について

まずはこのシステムのイメージを考えます。
メインのシステムがQRコードの中身をコマンドライン引数で渡すことで、最終的にはQRコードがついた紙が自動で印刷されることを目指します。

QRコード作成のプログラム

紹介するプログラムはこちらです。

import glob
import sys
import qrcode
import win32api
import win32print

#エクセルの印刷
def PrintOut():
    filepath ="QR.xlsx"
    win32api.ShellExecute(
        0,
        "print",
        filepath,
        "/c:""%s" % win32print.GetDefaultPrinter(),
        ".",
        0
    )

#QRの作成
def getimg(qrstr):
    qrimg = qrcode.make(qrstr)
    qrimg.save(qrstr + ".png")
    img = openpyxl.drawing.image.Image(qrstr+".png")
    img.width = 50
    img.height = 50

    return img

#エクセルブックの作成
wb = openpyxl.Workbook()
ws = wb.active
#引数の値を取得
args = sys.argv
qrstr=args[1]

img=getimg(qrstr)
#QR画像の貼り付け
ws.add_image(img, "A1")
wb.save("QR.xlsx")

PrintOut()

プログラム解説

このプログラムはコマンドラインからQRの中身にしたい文字を引数として動かします。

python プログラム名.py QRの中身にしたい文字

また、このプログラムは複数のモジュールを組み合わせて構成されています。
各モジュールを使ったことがない場合は、以下の方法でインストールをしてください。

pip install ○○○○

openpyxl

pythonでExcelファイル(.xlsx)を操作するための機能を提供します。
このプログラムでは、エクセルの作成からQR画像の貼り付けなど様々な個所で使われています。

sys

システム関連のパラメータや機能にアクセスするためのモジュールです。
このプログラムでは、コマンドライン引数の取得に使っています。

qrcode

QRコードの生成や操作を行うためのライブラリです。
このプログラムでは、QRの生成に使っています。

win32api・win32print

Pythonのpywin32モジュールの一部であり、Windowsの印刷機能を制御するためのAPIへのアクセスを提供するモジュールです。
このプログラムでは、作成したエクセルの印刷に使っています。

応用事例と活用アイデア

このプログラムでは、最低限の発行のみしか行っていないので使い方に合わせて様々なカスタマイズができます。
例えば、QRの貼り付けるエクセルを新しく作成するのではなく、既存のエクセルに貼り付けることもできますし、特定の作業の後にQRを自動発行するような仕組みにすることもできます。

おわりに

QRコードの自動発行ソフトを紹介しました。
QRコードの自動発行は効率的な情報共有や最適化に大きな貢献をする技術です。

QRコードは株式会社デンソーウェーブの登録商標です

よかったらシェアしてね!