# PDF Auto-Fill CLI 設計書

| 項目 | 内容 |
|---|---|
| 文書名 | PDF Auto-Fill CLI 設計書 |
| バージョン | 1.0 |
| 作成日 | 2026-05-12 |
| 対象システム | Python CLI |
| 配置 | `docs/設計書.md` / `docs/設計書.xlsx` |

## 1. はじめに

本書は、`pdf-autofill-cli` の目的、構成、機能、データ、セキュリティ、運用観点を引継ぎ可能な粒度で整理する設計書である。

## 2. システム概要

プロフィール JSON とマッピング設定に従って PDF テンプレートへ文字を自動入力する CLI

### 2.1 利用者

- 個人利用者
- 帳票作成担当
- 設定作成者

### 2.2 スコープ内

- 座標指定テキスト描画
- AcroForm フィールド入力
- 日本語フォント自動検出
- サンプル PDF 生成
- PyInstaller 配布想定

### 2.3 スコープ外

- PDF レイアウト自動認識
- 電子署名
- OCR 入力

## 3. アーキテクチャ

```mermaid
flowchart LR
  N0["argparse CLI"] --> N1
  N1["JSON config loader"] --> N2
  N2["ReportLab overlay"] --> N3
  N3["pypdf merge/form fill"] --> N4
  N4["font resolver"]
```

### 3.1 技術スタック

| 区分 | 採用技術 | 用途 |
|---|---|---|
| Python | requirements.txt | PyMuPDF>=1.24.0 |

### 3.2 主要ファイル

| パス | 役割 |
|---|---|
| `main.py` | 主要ソース/設定ファイル |
| `README.md` | 利用方法・概要 |
| `requirements.txt` | 主要ソース/設定ファイル |
| `config/mapping_config.json` | 設定 |
| `config/user_profile.json` | 設定 |
| `output/filled.pdf` | 主要ソース/設定ファイル |
| `templates/sample_template.pdf` | 主要ソース/設定ファイル |

## 4. データ・設定モデル

| データ | 形式 | 説明 |
|---|---|---|
| プロフィール | JSON | 氏名、住所、電話番号、メールなど |
| マッピング | JSON | 座標、ページ、フィールド名 |
| 出力PDF | PDF | 入力済み帳票 |

## 5. 機能仕様

| ID | 機能 | 仕様 |
|---|---|---|
| F-01 | プロフィール読込 | user_profile.json のキーを入力値として解決する。 |
| F-02 | マッピング読込 | ページ・座標・フォントサイズ・フィールド名を設定から読む。 |
| F-03 | PDF 生成 | 既存 PDF にテキストを重ね、新しい PDF として保存する。 |
| F-04 | テンプレート生成 | 動作確認用の A4 サンプル PDF を生成する。 |

## 6. セキュリティ・品質

- 個人情報を扱うため外部送信せず、出力先を明示指定する。
- 設定ファイルの権限管理は利用者のローカル環境で行う。

## 7. デプロイ・運用

- pip install -r requirements.txt
- python main.py --generate-template
- python main.py templates/sample_template.pdf

## 8. 既知の制約と今後の拡張

- 自動変換・自動判定を含む機能は、利用者または担当者レビューを前提とする。
- 本番利用前に対象データ、権限、ログ、バックアップ、例外処理を運用環境に合わせて確認する。
- README と実装差分が出た場合は、実装側を正として本書を更新する。

## 付録 A. 改訂履歴

| 版 | 日付 | 内容 |
|---|---|---|
| 1.0 | 2026-05-12 | 初版作成 |
