データ構造

この文書の項目

1. 注釈保存ファイル (.clrop - Classroom PDF Annotation)

この節は形式を調べる技術者向けの参照です。利用者の保存・共有手順はPDF注釈データの扱い、作成・変更は注釈ツールを参照してください。開いただけで保存形式を更新せず、保存時に現在の形式で書きます。対応しない旧版での再編集は避けてください。

保存しているもの

.clrop は現在 version 2 のJSONです。version 1 も読み込めます。概念的には、PDFを確認するための情報と、ページごとの注釈の集合を持ちます。

{
  "version": 2,
  "pdf_id": {
    "path": "授業資料.pdf",
    "size": 123456,
    "page_count": 12,
    "sha256": "..."
  },
  "pages": [
    { "page": 0, "items": [ { "type": "text" } ] }
  ]
}

これは構造を説明するための簡略例です。注釈の種類ごとに、位置、線、色、文字、数式、リンク先、図形など、必要な項目が変わります。

アプリが保存する注釈には、テキスト、数式、文字上のマーカー・色変更、自由線マーカー、手書き、直線、矢印、波線、ノートリンク用のマーカー、図形があります。pdf_id にはパスだけでなく、ファイルサイズ、ページ数、ページサイズ、SHA-256 など、対応するPDFを確認するための情報が入ります。

テキストとして確認するとき

保存するJSONはUTF-8で、ページ・注釈・本文・座標の区切りにWindows形式の改行(CRLF)を入れます。短い関連項目は同じ行にまとめ、長い手書き点列やマーカー領域は座標の組を保って折り返します。文字列内の改行はJSONのエスケープとして保持します。内容の確認にはテキストエディターを使えます。注釈の変更・保存はアプリで行ってください。

数値は、再読込した内部値が同じになる最短の表記を使います。例えば 0.34999999999999998 は 0.35 になります。位置・形や復元に使う値の精度を保ち、必要な桁数を値ごとに残します。不透明度1、横書き、背景補助の継承、片矢印は、省略時に同じ意味となるため記録を省きます。表示・印刷・PDF出力の精度は変わりません。

整形による改行・空白の分と、数値短縮・既定値省略の分を合わせたファイルサイズは、注釈の内容によって増減します。既存ファイルは、次に保存した際にこの表記になります。形式の版番号はversion 2を使います。

テキストマーカーの表示方式

version 2 のテキストマーカーは、marker_display_mode の省略を乗算表示として扱います。従来の半透明表示には "marker_display_mode":"legacy" を記録します。明示した "multiply" も読み込めますが、保存時は省略します。この指定はアプリ内表示だけに使い、PDF・PNG出力の方式には影響しません。

version 1 で方式指定のないマーカーは従来表示として読み込みます。保存時に version 2 へ移行し、従来表示を保持する注釈だけに legacy を記録します。開いただけでは形式を更新しません。既存マーカーも注釈の編集画面から乗算へ変更できます。新しいマーカーの既定値は「設定 → 注釈 → マーカー」で選びます。

version 2 の再編集には、この形式に対応したアプリが必要です。version 1 のみを扱う旧版アプリは、新形式の読み込みを停止します。

弧(かっこ)の図形

version 2 の shape は shape_kind: "arc" で、端点を閉じない弧を持てます。bbox の横幅がふくらみの深さ、縦幅が上下の長さです。基本形は「(」の向きで、shape_angle がπなら「)」です。content_rotation も表示方向に適用します。shape_draw_mode は "outline"(省略も可)、dash は直線と同じ実線/破線指定です。塗りつぶしの指定は読込失敗として元データを保持します。弧の再編集にはこの形状に対応した版を使ってください。破線の弧は今回以降の対応版が必要です。PDF出力は実線を一本、破線を分割した編集可能なInk注釈にします。

図形の境界線

version 2 の shape は、shape_boundary に "black" または "white" を指定して塗り色と独立した境界線を持てます。省略は境界線の追加なしを意味し、旧図形の描画を保持します。明示した "none" も読み込み、保存時は省略します。width・alpha・dash は境界線にも使い、塗りつぶしは元の color、枠線のみは指定した境界線色で描きます。この項目はPDF・PNG出力にも使います。

図形全体の回転

version 2 の shape_angle は図形全体の時計回りの回転角(ラジアン)で、図形の外接矩形の中心を軸に使います。省略時は0で、保存時も0を省略します。旧斜め楕円の shape_rotation は互換用の局所的な傾きとして別に保持し、既存図形を自動変換しません。回転ハンドルは一時的な操作表示で、保存する注釈や出力へ含めません。回転した図形の再編集には shape_angle 対応版を使ってください。

注釈の向きと表示回転

文字・数式・図形の content_rotation は、PDFの元座標に対する内容の時計回り角度です。値は0・90・180・270度で、省略時は0です。位置はCropBoxの原点とPDF固有の回転を適用する前のPDF座標を使い、表示を回すたびに保存座標を書き換えません。shape_rotation は斜め楕円自身の角度で、内容の方向とは別です。

表示メニューのページ回転は .clrop に保存せず、ワークスペースの前回位置記録へ保存します。回転した表示で作成した注釈の向きだけを記録します。再編集には、この方向情報に対応したアプリを使ってください。


2. アプリ標準ノート (.clro - Classroom Note)

.clro は、Classroom に由来する、本ソフトが新しく作る標準ノートの拡張子です。中身はUTF-8のテキストで、.md / .markdown と同じ Markdown/MD4C のノート経路で扱います。

利用者向けの記法、.md との使い分け、他ソフトで開く場合の注意は .clro ノート形式 を参照してください。


3. 起動設定・ワークスペース設定

通常の登録操作は外部フォルダーの追加、優先度は授業並び順を使います。次の設定ファイル編集は技術的な参照で、通常の利用手順ではありません。

起動設定の一時パス

exeと同じフォルダーの pdf_note_workspace_setup.json にある tempExternalLectureDirs は、一時パスの一覧です。アプリでこの一覧を保存すると、1パスずつ改行して記録します。以前の1行形式も読み込めます。

tempExternalLecturePriorities は、登録パスと0~9999の優先度の組を保存する配列です。登録一覧と一緒に保存し、新しいパスには5000から数値を増やして最初の空きを割り当てます。この項目のない以前の設定も読み込めます。数値の編集・解除は「設定 → 環境 → ファイル一覧 → 授業並び順」で行えます。

メモ帳などで直接編集する場合は、アプリを終了し、設定ファイルをコピーして控えを残してから、既存の配列を次のように編集してUTF-8で保存します。これは項目の抜粋です。他の設定項目は保持してください。

  "tempExternalLectureDirs": [
    "C:\\授業資料\\外科学",
    "D:\\講義\\内科学"
  ]

各パスを二重引用符で囲み、パスの区切りの \ は \\ と記します。項目間をカンマで区切り、最後の項目にはカンマを付けません。空の一覧は [] です。相対パスの基準はexeのあるフォルダーで、編集した一覧は次回起動時に読み込みます。

追加許可拡張子と優先度の保存先

workspace.json の additionalNoteExtensions は例として [".log", ".memo"] のような追加許可配列を持ちます。直接編集はアプリ終了後に控えを残して行います。PDF・画像・Office・実行ファイル等の制限対象は直接記入してもノート候補になりません。通常は「設定 → ノート → ファイル」で追加・解除します。

通常の授業の優先度はワークスペースの lecturePriorities、一時パスの優先度は起動設定の tempExternalLecturePriorities に登録一覧と一緒に保存します。前者は設定プリセットに含み、後者は同じアプリのワークスペース間で共通です。