Skip to content

Releases: SilentMalachite/Utsushi.Win

Release list

Utsushi v0.2.0

Choose a tag to compare

@github-actions github-actions released this 19 Aug 07:35

最初のリリース。

複数ページの PDF を、ページごとの PNG または JPEG に変換します。
外部の PDF ライブラリを使わず、描画は Windows 標準の Windows.Data.Pdf に任せています。

追加

  • 複数ページ PDF をページごとの画像に変換する機能。出力形式は PNG と JPEG。
    JPEG の画質は 1〜100 で指定できる(既定 90)。拡張子は形式で決まる(.png / .jpg)。
    JPEG に透明度は無いので、透過との同時指定は受け付けない。
    WebP は Windows 標準にエンコーダが無いため入れていない。
  • 解像度の指定を 3 通り用意(DPI 指定 / 長辺のピクセル数指定 / 倍率指定)。
  • ページ範囲の指定(1-3,7 / 5- / -3 の書式)。
  • 複数 PDF の一括処理。GUI は「PDF を選択」で複数選べ、「フォルダを選択」と
    フォルダのドラッグ&ドロップにも対応する。フォルダは配下を再帰的に探す
    (シンボリックリンクは辿らない。上限 1000 件)。
    出力は 1 つのフォルダに集まり、ファイル名の先頭は元の PDF の名前になる。
    1 ファイルが開けなくても残りは変換を続ける。
  • 出力ファイル名の指定(先頭部分・区切り文字・連番の桁数・開始番号)。
    桁数は総ページ数から自動で決まる。一括処理では先頭部分が元のファイル名になり、
    桁数はファイルごとに決まる。
  • 同名ファイルがあったときの動作を選択(スキップ / 上書き / 連番で退避)。既定はスキップ。
  • 背景の透過(PNG のときだけ)。
  • 並列描画。ページを複数まとめて描く。GUI は自動で使い、CLI は --workers で本数を
    指定できる(--workers 1 で直列)。進捗と結果の並び順はワーカ数によらずページ番号の昇順。
  • WinUI 3 の GUI(Utsushi.exe)。ドラッグ&ドロップ、出力サイズとファイル名の即時プレビュー、
    進捗表示(一括処理ではファイルとページの 2 段)、キャンセル、結果の一覧、出力フォルダを開く。
  • コンソール版(utsushi-cli.exe)。--json による機械可読な結果出力と、
    終了コード(0 全成功 / 1 一部失敗 / 2 開始前エラー / 130 キャンセル)。
    --json は PDF が 1 つのときは 1 ファイル分の形、2 つ以上のときは files / results を持つ形。
  • 設定の永続化(%LOCALAPPDATA%\Utsushi\settings.json)。
  • アクセシビリティ対応。キーボードのみでの操作、日本語のアクセシビリティ名、
    進捗読み上げの間引き(10% 刻みまたは 2 秒に 1 回)、ハイコントラスト対応(色のハードコードなし)、
    OS の「アニメーションを減らす」設定への追従。
  • 安全ガード。出力サイズの上限(既定 512MB 相当)、出力先の書き込み可否の事前確認、
    一時ファイル + rename による原子的な書き出し。
  • 日本語のエラーメッセージ。ページ単位の失敗を握りつぶさず、理由つきで一覧にする。

制限

  • GUI ではパスワード付き PDF を変換できない(保護されている旨を表示する)。CLI の --password は使える。
  • 出力形式は PNG と JPEG。WebP は Windows 標準にエンコーダが無いため対応しない。
  • 一度に扱える PDF は 1000 件まで。
  • 並列描画で速くなる量は環境による。ディスプレイの拡大率が 100% の環境では、
    Windows の PDF 描画がプロセス内で直列に動くため、直列とほとんど変わらない。
  • 出力の寸法はどの環境でも同じだが、画素値は表示スケールや同時描画の本数でわずかに変わる。
  • --stem は PDF が 1 つのときだけ使える(複数だと全ファイルが同じ名前になるため)。

開発

  • テスト 307 件(Catch2 v3)。純粋関数・レンダラ・CLI・画面ロジック・並列描画・一括処理・異常系。
    うち 1 件(速さの計測)は環境に依存するため既定の実行から外してある
    UtsushiCore.Tests.exe "[.benchmark]" で実行する)。
  • UtsushiCore が WinRT に依存していないことを include グラフで機械的に検査する。
  • テスト用 PDF は外部ツールに依存せず生成する(暗号化 PDF を含む)。
  • 設計判断は ADR として記録する(docs/decisions/)。
  • GitHub Actions によるビルド・単体テスト・CLI の E2E 検証・成果物の ZIP 化と、
    タグを押したときの Release 作成。