wind111-lang / x68k-prn-decoder
X68000/XM6のSHARP形式PRNをUTF-8テキストと印刷用HTMLへ復号するCLIツール
Requires
- php: >=8.0
Suggests
- ext-iconv: JIS X 0208とCP932の文字変換に使用します
- ext-mbstring: iconvの代わりに文字変換へ使用できます
This package is auto-updated.
Last update: 2026-08-04 05:43:18 UTC
README
X68000実機またはエミュレーターから出力・保存した、X68000用SHARP形式のPRNファイルを解析し、UTF-8テキストと印刷用HTMLへ変換するツールです。 現在の動作確認には、XM6 TypeGから出力されたPRN形式のログを使用しています。
必要環境
- Windows EXE:64ビット版Windows(PHP・Composerは不要)
- PHP CLI:PHP 8.4.1以降
インストール
Windows EXE
Releasesからx68k-prn-decoder-windows-amd64.exeをダウンロードし、変換するPRNファイルをEXEへドラッグ&ドロップしてください。PHPやComposerをインストールする必要はありません。
入力したPRNファイルと同じフォルダーへ、TXTと印刷用HTMLが作成されます。
sample.prn
sample_decoded.txt
sample_decoded.html
複数のPRNファイルをまとめてドラッグ&ドロップすることもできます。
PHP CLI
git clone git@github.com:wind111-lang/x68k-prn-decoder.git
cd x68k-prn-decoder
composer install
別プロジェクトからGitHubリポジトリをComposerパッケージとして使う場合:
composer config repositories.x68k-prn-decoder vcs https://github.com/wind111-lang/x68k-prn-decoder composer require wind111-lang/x68k-prn-decoder:dev-main
使い方
PRNファイルを指定します。
php prn-decode.php "C:\path\to\sample.prn"
入力ファイルと同じフォルダーへ、次のファイルが自動的に作成されます。
sample_decoded.txt
sample_decoded.html
ファイルが存在しない場合は新規作成され、すでに存在する場合は最新の復号結果で上書きされます。--output-dirで指定したフォルダーが存在しない場合、そのフォルダーも自動作成されます。
複数ファイルやワイルドカードも指定できます。
php prn-decode.php --format=txt "C:\prints\*.prn"
オプション
--format=both TXTと印刷用HTMLを保存(既定)
--format=txt TXTだけ保存
--format=html 印刷用HTMLだけ保存
--output-dir=PATH 指定フォルダーへ保存(未作成なら自動作成)
--stdout 保存せず標準出力へ表示(入力は1ファイル)
-h, --help ヘルプを表示
標準出力へ復号結果を送る例:
php prn-decode.php --stdout "C:\path\to\sample.prn"
印刷用HTMLはブラウザーで開き、印刷画面から紙またはPDFへ出力できます。PRN内の改ページはHTMLのページ区切りとして反映されます。
クラスとして使う
クラスとして利用できます。use X68000\Printer\X68000PrnDecoder;で読み込み、PRNをデコードできます。
use X68000\Printer\X68000PrnDecoder; $decoder = new X68000PrnDecoder(); $result = $decoder->decodeFile('sample.prn'); echo $decoder->toReadableText($result);
変換結果をファイルへ保存する場合:
use X68000\Printer\X68000PrnDecoder; $decoder = new X68000PrnDecoder(); $converted = $decoder->convertFile( 'sample.prn', __DIR__ . '/decoded', 'both' ); echo $converted['text_path'] . PHP_EOL; echo $converted['html_path'] . PHP_EOL;
対応範囲
- SHARP形式の漢字モード切り替え(
ESC K/ESC H) - JIS X 0208の2バイト文字
- ASCIIおよび一部のShift-JIS文字
FS S文字サイズ命令の除去- 改行と改ページ
- 追記された複数ページのTXT・HTML化
EPSON形式、画像印刷、未知のプリンタ命令には対応していません。
テスト
composer test
PHPStanによる静的解析は次のコマンドで実行できます。
composer analyse
テストと静的解析をまとめて実行する場合:
composer check