年賀状宛名印刷システム。CSV ファイルから PDF を生成します。
- Docker で完結(環境構築不要)
- CSV を置いて実行するだけ
- 印刷用 PDF とプレビュー用 PDF を生成
- HTML 印刷対応(ブラウザで印刷)
- プリンタ補正オプション(OFFSET)
- Web フォント使用(Klee One)
- CSS 組版(vivliostyle)
- 軽量イメージ(
nenga-print:light)で HTML のみ生成可
- Docker
以下のコマンドでサンプル PDF を生成できます:
docker run --rm -v "$(pwd):/work" tecolicom/nenga-print demosample.csv、sample.pdf(印刷用)、sample.preview.pdf(確認用)が生成されます。
1行目はヘッダー、2行目が差出人、3行目以降が宛先です。
| 列名 | 説明 | 別名 |
|---|---|---|
| 姓 | 姓 | |
| 名 | 名 | |
| 連名 | 連名者の名前 | 配偶者 |
| 家族 | 家族の名前(「・」または「/」区切り) | 子供 |
| 郵便番号 | 郵便番号 | 〒 |
| 都道府県 | 都道府県 | |
| 市区町村 | 市区町村 | |
| 番地・建物 | 町名番地(空白)建物名等 | |
| 敬称 | 敬称(デフォルト: 様) | |
| 備考 | 「保留」「済」「喪中」でスキップ |
- 夫婦別姓:配偶者欄に「姓 名」をスペース区切りで記入
- 家族の別姓:同様に「姓 名」形式で記入可
dozo を使うと簡潔に実行できます:
echo '-I tecolicom/nenga-print' > .dozorcdozo がない場合は以下の関数で単純な使い方なら代用できます:
dozo() { docker run --rm -v "$(pwd):/work" tecolicom/nenga-print "$@"; }dozo make # すべての CSV から PDF を生成
dozo make address.pdf # 特定のファイルを生成
dozo make clean # PDF を削除生成されるファイル:
*.pdf- 印刷用(枠なし)*.preview.pdf- プレビュー用(枠付き)*.html- ブラウザ印刷用
HTML ファイルをブラウザで開いて印刷することもできます:
dozo make sample.html
open sample.html # ブラウザで開くキーボードショートカット:
←→jk- ページ切り替えHomeEnd- 最初/最後のページへg- グリッド表示のトグルh- 背景画像のトグル?- ヘルプ表示のトグル
印刷位置のズレを補正できます:
dozo make OFFSET=-1.5mm # 左に 1.5mm オフセット
dozo make OFFSET="-1.5mm, 0.5mm" # 左に 1.5mm、上に 0.5mm オフセット補正は印刷用 PDF のみに適用され、プレビュー用 PDF には影響しません。
vivliostyle のプレビュー機能を使うと、ブラウザでリアルタイムに確認できます。
dozo を使う場合は -P オプションでポートを公開します:
dozo -P 13000 make sample.preview表示された URL をブラウザで開きます。Ctrl+C で停止。
make init でテンプレートファイルをローカルにコピーし、カスタマイズできます:
dozo make init以下のファイルがコピーされます:
nenga.emz- テンプレートstyle.css- 基本レイアウトstyle-custom.css- スタイル(カスタマイズ用)style-zip.css- 郵便番号配置style-preview.css- プレビュー用スタイルhagaki-bg.svg- はがき背景grid.svg- グリッド線Makefile- ローカル用 Makefilesample.csv- サンプル CSV.dozorc- dozo 設定README.md- 使い方
ローカルに vivliostyle がインストールされていれば、Docker なしで実行できます:
make sample.preview- pandoc-embedz - テンプレートエンジン
- vivliostyle - CSS 組版
- Klee One - フォント
tecolicom/nenga-print- フル版(PDF/HTML 生成、約 2GB)tecolicom/nenga-print:light- 軽量版(HTML のみ、約 300MB)
軽量版は vivliostyle/Chromium を含まないため PDF 生成はできませんが、 HTML を生成してブラウザで印刷する用途に使えます。
make build # Dockerfile を生成してビルドまたは個別に:
make Dockerfile # テンプレートから Dockerfile を生成
docker build -t nenga-print .
docker build -f Dockerfile.light -t nenga-print:light .MIT