年賀状の宛名印刷難民の救済
はじめに
毎年年末に悩まされる年賀状、近年の傾向のとおり私も基本的には止めてしまったのですが、親戚だけには出すことにしています。
Windowsであれば手頃な宛名印刷ソフトがいくつかあったと思うのですが、Macに乗り換えてからは定番のものがみつからず、困っていたものです。
それであれば、自分でつくろうと考えました。
Macだけでなく、DockerさえインストールできればWindowsでもLinuxでもラズパイでもうごくはずです。たぶん。
つかいかた
Dockerのインストール
Dockerをインストールしたことがない場合は、公式サイトなどを参考にまずインストールしてください。
ツールのインストール例
git clone https://github.com/mcre/address-printing-on-jp-postcards.git
cd address-printing-on-jp-postcards
docker build -t texlive-python .
サンプルデータでの実行
docker run -it --rm -v $(pwd):/workdir --rm texlive-python sh -c "python3 main.py config/sample01.json"
docker run -it --rm -v $(pwd):/workdir --rm texlive-python sh -c "python3 main.py config/sample02.json"
./output/sample01.pdf
, ./output/sample02.pdf
に 宛名PDFが出力されます。
./output/sample01.pdf
入力データの説明
まずはサンプルデータの入力を確認してみましょう。
1行目がヘッダーです。これまで私が宛名印刷ソフトを使用してきた経験上、csvフォーマットはソフトごとにあらかじめ決まっており、それにあわせたcsvに整形するのが億劫なことのひとつだったため、このツールではcsvフォーマットごと設定できるようにしました。
サンプルの場合、address_1
にcsvの住所1
が対応します。address_1
は下記のTeXテンプレートに挿入されます。
また、jsonファイル内のprocessing
を調整すると、文字列の置換や「喪中」チェックが付いている行を出力しないなど、いろいろな操作を行うことができます。詳しくはREADME.mdをご確認ください。
使用方法
次の手順で、自分の家計簿csvファイルをPDFに変換し、印刷することができます。
- input/ に住所録のcsvファイルを配置します。
- サンプルを参考にconfigファイルを作成してください。
-
input
にはcsvファイルのパスを記入します
-
- 下記のコードで実行することで、
output
に指定したパスにPDFファイルが出力されます。 - PDFビューアーを使って郵便はがきにプリントアウトしてください。
- 位置がずれる場合はテンプレートファイルの数値を調整してみてください。
docker run -it --rm -v $(pwd):/workdir --rm texlive-python sh -c "python3 main.py config/{configファイル名}.json"
ソースコードや構成の解説
Docker イメージは日本語対応のTex Live入りのものにPythonをインストールして使用しています。
ソースコードはこれだけです。テンプレートにCSVを差し込んでTeXを実行しているだけです。
プルリクエスト大歓迎
もしこのツールをお使いいただいた場合は、ぜひお作りいただいたconfigファイルとサンプルのcsvをご提供ください!
あとは、宛名面への差出人名の追加機能や、processing
の機能の追加などなどお待ちしてます!
Discussion