Palm用DOCアプリとPCとで同じ文書を管理するため、text<->DOC変換を一括して行うプログラムを作ってみました。
豆腐を回避できる
ZDOCmやPenDocで見られる、レコード境界がらみの問題(*)を回避できるように作っています。
一括変換できる
SDカードに入れた文書ファイルを管理するときに便利です。 また Document以外のファイルは変換しませんので、BackUpディレクトリを そのまま指定して使うことも可能です。
Perlが動く環境ならDOS以外はほぼ大丈夫でしょう。Windows2000+ActivePerl / cygwin, WindowsCEで確認しています。バイナリの入出力をbinmodeにしているので、\xOD\xDAを強制する腐れにも有効です。
中身は Perlのソースファイルです。.pl にリネームしてください。
バイナリが欲しい人は連絡して下さい。perlappでコンパイルして送ります(1MB程度:笑)。 その際には必ず「設定部分の記述」を書いて送ってください。
要望などは JL4CVB Yuzoまで。メール
DOCファイルの構造は以下の通りで、PDB ファイルの構造(PDBヘッダ+recordヘッダ+本文)にdocumentヘッダを挟んだ形となっています。documentヘッダもrecordの一つであるため、DOCファイルにはrecord が最低2つあります。
DOCデータもPDBファイルである以上 record に区切る必要はあるのですが、多くのDOCアプリにとって record はPDBファイルとしての互換性を保つ以上の意味はありません。よって幾つかのDOCコンバータ(txt2pdbdoc等)は問答無用で 1record=4096bytesとして切っています。
しかし、zDOCmやPenDocは逆に record を積極的に利用していますので、2byte文字の片割れのみがrecordの最初や最後に付き、豆腐のようなモノとなって表れます。
この問題を回避するために、txt2pdoc.pl はrecordを区切るかどうかを改行毎に判断しています。
各ヘッダの中身に関しては
等を参照してください。