見出し画像

kintone でデータ印(日付印)をやってみた

本格的な電子認証ではないですが、データ印(日付印)は、会社の文化としてはまだ一定の地位があります。これをなんとかkintoneでできないかやってみました。

プラグインにひと手間加えて。。。

ノベルワークスさんの、「印鑑押印プロセス連携プラグイン」を試用。

すごくよくできたプラグインで、外部クラウドサービス(GitHubとかAWSとか)を利用して、kintoneアプリ間で押印の添付画像をコピペするような仕組みのようです。なるほど!
ただ、日付が変わるデータ印には必要な、コピー元画像の自動変更のような機能はありませんでした(手動での変更は可能)。

じゃあコピー元のアプリの画像を、データ印イメージで毎日更新する仕組みを自分で作ったらいけるんじゃないかな?!と思いつきました。

画像を変更する方法として、折角だからこの前「IoT」で使った「Python」でやってみようと調べたところ、以下サイトがみつかりました。

上記、ほとんどそのまんま、利用させていただきました。
ありがとうございます。
(ありがたかったので、お礼もかねて書籍も購入しました。詳しくは後述)

環境設定

textout_all_hanko.py

from PIL import ImageFont, ImageDraw, Image
import os, sys, glob

# フォントのパスとサイズを指定 --- (*1)
font_path = "ipaexg.ttf"
font_size = 11
text_pos = (12, 30)
text_color = (255, 0, 0)
# 出力パスの指定
# out_path = "./out"
out_path = "C:\cli-kintone\hanko_out"
if not os.path.exists(out_path): os.mkdir(out_path)

# コマンドラインを得る --- (*2)
if len(sys.argv) < 3:
   print("textout_all_hanko.py フォルダパス テキスト")
   quit()
dir_path = sys.argv[1]
label = sys.argv[2]

# フォントを読み込む --- (*3)
font = ImageFont.truetype(font_path, font_size)

# ファイルの一覧を得る --- (*4)
files = glob.glob(dir_path + "/*.png")
# 連続で画像にテキストを書き込む --- (*5)
for f in files:
   print("textout: " + f)
   image = Image.open(f)
   draw = ImageDraw.Draw(image)
   # 白抜き文字を出力 --- (*6)
   for i in range(-3, 4):
       for j in range(-3, 4):
           x = text_pos[0] + i
           y = text_pos[1] + j
           # draw.text((x, y), label, fill=(255,255,255), font=font)
   draw.text(text_pos, label, fill=text_color, font=font)
   path = out_path + "/" + os.path.basename(f)
   image.save(path)

リンク元のサンプルソースと比べてもらえば、変更のポイントとかの参考になるかもしれません。

kintoneアプリは、アプリストアの「顧客リストアプリ」を使いました。
(単に、cli-kintoneのテストに使ったアプリの流用です。^^;)

kintone環境例

サブドメイン:piyo
アプリID:1234
APIトークン:ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN

cli-kintoneの実行環境

押印10

印影はWindows標準のペイントでつくりました。
バッチファイルの中身は以下。

kintone_hanko.bat

pause "hanko start"

rem 画像変更
cd C:\Python
textout_all_hanko.py C:\cli-kintone\hanko_in 20.12.25

rem アップロード
cd C:\cli-kintone
cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -e sjis -f update_record_with_attachments.csv -b C:\cli-kintone\hanko_out

pause "hanko end"

ポイントになるのは、以下2行。

textout_all_hanko.py C:\cli-kintone\hanko_in 20.12.25

上記で先ほどの「python」のソースを起動しています。
20.12.25はデータ印の日付。とりあえず手修正での運用です。^^;

C:\cli-kintone\hanko_in
配下には日付なしのデータ印画像があります。

実行後、日付ありデータ印画像が
C:\cli-kintone\hanko_out
に作成されます。

で、それを受けるのが「cli-kintone.exe」になります。
日付ありデータ印の印影を、kintoneの「顧客リストアプリ」にアップロードします!

上記を参考に、cli-kintone.exeには以下のパラメタを与えます。

cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -e sjis -f update_record_with_attachments.csv -b C:\cli-kintone\hanko_out

どのレコードのどのフィールドに添付するかは、-f  以降のCSVファイルが管理してて、中身は。。。

update_record_with_attachments.csv

"$id","会社ロゴ"
"26","hanko.png"

項目1列めにレコード番号、2列めに添付ファイル名
を指定しています。

指定レコードを削除して追加すると、内容は同じでもレコード番号が変わってくるのでうまく動かなくなりますね。^^;

これで準備完了!!

kintoneアプリの実行

「顧客リストアプリ」初期画面は以下。例では、レコード番号26のデータが事前にあることになります。

押印06 (1)

会社ロゴの所に、印影を埋め込みます。個人の印影なのに「会社ロゴ」ってなってますが、気にしない!^^;

kintone_hanko.bat
を、マウスでダブルクリック!!

C:\cli-kintone>pause "hanko start"
続行するには何かキーを押してください . . .

C:\cli-kintone>rem 画像変更

C:\cli-kintone>cd C:\Python

C:\Python>textout_all_hanko.py C:\cli-kintone\hanko_in 20.12.25
textout: C:\cli-kintone\hanko_in\hanako.png

C:\Python>rem アップロード

C:\Python>cd C:\cli-kintone

C:\cli-kintone>cli-kintone.exe --import -a 1234 -d piyo -t ABCdefgHijklMnOpqrstuVwxYzAbcdefgHiJkLmN -e sjis -f update_record_with_attachments.csv -b C:\cli-kintone\hanko_out
[2020-12-01 01:43:08]: Start from lines: 1 - 2 => SUCCESS
[2020-12-01 01:43:09]: DONE

C:\cli-kintone>pause "hanko end"
続行するには何かキーを押してください . . .

よしっ!正常終了!!
で、アプリを確認すると。。。

押印08

おおっ!日付ありのデータ印が添付されてるっ!やったー!!
(^^;

今後の課題とか

あとは、ノベルワークスさんの「印鑑押印プロセス連携プラグイン」で、承認実行時にこの印鑑画像が、添付されるという流れです。^^

実運用までには、自動的に日付を算出したり、社員分の日付なしデータ印イメージをつくって、社員管理アプリかなんかに登録したり、夜間バッチで社員分の日付あり印影を生成するスケジュールを組んだりとか、課題は山盛りですが、とりあえず「カーネル部分」はできたいうことで勘弁してください。^^;

何かの参考になれば幸いです。

PS
今回、Pythonのソースを参考にさせてもらった、クジラ飛行机さんの書籍を購入しました。プログラムの基本から丁寧に書いてあるのでわかりやすいです。マンガだし。^^;


この記事が気に入ったらサポートをしてみませんか?