PalmとPCで文章を書く

Palm用DOCアプリとPCとで同じ文書を管理するため、text<->DOC変換を一括して行うプログラムを作ってみました。

特徴

豆腐を回避できる

ZDOCmPenDocで見られる、レコード境界がらみの問題(*)を回避できるように作っています。

一括変換できる

SDカードに入れた文書ファイルを管理するときに便利です。 また Document以外のファイルは変換しませんので、BackUpディレクトリを そのまま指定して使うことも可能です。

動作条件

Perlが動く環境ならDOS以外はほぼ大丈夫でしょう。Windows2000+ActivePerl / cygwin, WindowsCEで確認しています。バイナリの入出力をbinmodeにしているので、\xOD\xDAを強制する腐れにも有効です。

ダウンロード

中身は Perlのソースファイルです。.pl にリネームしてください。

バイナリが欲しい人は連絡して下さい。perlappでコンパイルして送ります(1MB程度:笑)。 その際には必ず「設定部分の記述」を書いて送ってください。

連絡先

要望などは JL4CVB Yuzoまで。メール


DOCファイルの構造と参考文献

DOCファイルの構造は以下の通りで、PDB ファイルの構造(PDBヘッダ+recordヘッダ+本文)にdocumentヘッダを挟んだ形となっています。documentヘッダもrecordの一つであるため、DOCファイルにはrecord が最低2つあります。

  1. 78バイトの pdbヘッダ
  2. 8バイトの recordヘッダ×record数
  3. 16バイトの documentヘッダ
  4. 本文(文字コードはShift_JIS, 改行は LF つまり \0x0A)

DOCデータもPDBファイルである以上 record に区切る必要はあるのですが、多くのDOCアプリにとって record はPDBファイルとしての互換性を保つ以上の意味はありません。よって幾つかのDOCコンバータ(txt2pdbdoc等)は問答無用で 1record=4096bytesとして切っています。

しかし、zDOCmやPenDocは逆に record を積極的に利用していますので、2byte文字の片割れのみがrecordの最初や最後に付き、豆腐のようなモノとなって表れます。

この問題を回避するために、txt2pdoc.pl はrecordを区切るかどうかを改行毎に判断しています。

各ヘッダの中身に関しては

等を参照してください。


主頁に戻る