wind111-lang/x68k-prn-decoder

There is no license information available for the latest version (v0.1.2) of this package.

X68000/XM6のSHARP形式PRNをUTF-8テキストと印刷用HTMLへ復号するCLIツール

Maintainers

Package info

github.com/wind111-lang/x68k-prn-decoder

pkg:composer/wind111-lang/x68k-prn-decoder

Transparency log

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v0.1.2 2026-08-02 12:21 UTC

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 KESC H
  • JIS X 0208の2バイト文字
  • ASCIIおよび一部のShift-JIS文字
  • FS S文字サイズ命令の除去
  • 改行と改ページ
  • 追記された複数ページのTXT・HTML化

EPSON形式、画像印刷、未知のプリンタ命令には対応していません。

テスト

composer test

PHPStanによる静的解析は次のコマンドで実行できます。

composer analyse

テストと静的解析をまとめて実行する場合:

composer check