QSLカード印刷テンプレートを完成させました
前回の記事でQSLカード印刷機能の基盤を紹介しましたが、レイアウトを何度も調整し、実用的なテンプレート1が完成しました。ここまでの改善点をまとめます。
レイアウトの大幅見直し
初期版から以下の点を改善しました:
- 縦レイアウト(100×148mm)に変更 — ハガキ縦向きのデータ面として自然な配置に
- 転送先コールサインを右上に大きく(16pt太字) — JARLビューロー仕分け用
- To Radio: は改行して左寄せ — 転送先とTo Radioは別物で、混同しない設計
- PSE/TNX QSLチェック欄を廃止 — 必須ではないため省略してスッキリ
交信データ表の改善
DATE / Time / MHz / MODE / RST の5列構成です。ヘッダーは塗りつぶしなしの罫線のみで、印刷時のインク節約と見やすさを両立しました。
- DATE:1行目にDD/Mon形式(例: 10/Feb)、2行目に西暦4桁(例: 2026)
- Time:1行目に時刻(例: 09:27)、2行目に「JST」と表記
日時が2行になることで可読性が大幅に向上しました。
設備情報とQTHの配置
交信データ表の下に、運用セッションから自動取得した設備情報を表示します:
RIG: FT-60 PWR: 5W ANT: RH951S QTH: 常置場所
RIGとPWR(出力)は同一行にまとめました。3行の行間を均等(5mm間隔)に揃えることで、きれいに整列します。
QTHの表示には工夫があります。運用セッションの自局QTHと、設定画面で登録した常置場所の住所を比較し、常置場所での運用なら「常置場所」、移動運用なら実際の運用地名とJCCコードを表示します。
カード下半分 — 自局情報
カードの下半分にはセンター揃えで自局情報を配置しました:
- 自局コールサイン(24pt太字) — 移動運用なら「/エリア番号」付き
- Op: オペレーター名(10pt)
- 常置場所: 住所 + JCCコード(9pt)
移動運用時のエリア番号は、JCCコードの先頭2桁(都道府県番号)からJARL体系のエリア番号に自動変換しています。例えば大阪(JCC#25xx)なら3エリア、北海道(JCC#01xx)なら8エリアという具合です。
常置場所の自動判定ロジック
「常置場所での運用かどうか」の判定は、セッションのQTHと登録済み住所を比較して行っています。都道府県部分を除去してから前方一致で比較することで、住所の細部が異なっていても適切に判定できます。QTHが未設定の場合は常置場所扱いとするフォールバックも入れています。
「Tnx FB QSO 73!」の一言
備考欄の下に、アマチュア無線の定番メッセージ「Tnx FB QSO 73!」を右寄せで配置しました。FBは「Fine Business」の略で「素晴らしい」、73は「Best regards」を意味するQコード由来の略語です。ちょっとした一言ですが、QSLカードらしさが出ます。
テンプレート方式の採用
描画処理はqsl_template1.phpとして独立させ、PDF生成APIからテンプレート番号で呼び分ける設計です。将来的にテンプレート2、3と追加していけます。印刷画面のプルダウンでテンプレートを選択する仕組みも実装済みです。
技術メモ
- TCPDFでサーバーサイドPDF生成(Composer導入済み)
- フォントはIPAexゴシック —
TCPDF_FONTS::addTTFfont()で登録(インスタンスメソッドではない点に注意) - 座標はすべてmm単位で直接指定 — TCPDFのSetXY + Cellで精密配置
- JCCコード→エリア番号のマッピングテーブルをPHP内に保持
次はテンプレートのバリエーション追加や、ADIFエクスポート機能に取りかかる予定です。
