Releases: SilentMalachite/Utsushi.Win
Releases · SilentMalachite/Utsushi.Win
Release list
Utsushi v0.2.0
最初のリリース。
複数ページの 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 作成。