このリポジトリは、富士フイルムのDocuWorks文書形式(.xdw/.xbd)をゼロから解析し、Rustエンジンとブラウザ用エディタとして実装したオープンソースプロジェクトです。ファイルの読み込み・注釈追加・保存・PDF書き出しまでを、公式DocuWorksを使わずに行えます。解析結果はファイル形式の仕様書としても公開されています。
xdwファイルは、タグ・長さ・値(TLV)の要素を積み重ねた構造です。ヘッダーの後にセグメントが続き、各セグメントはエントリ群とプロパティブロック、末尾のトレーラーで構成されます。トレーラーはファイル末尾の4バイトから逆算して見つかります。プロパティブロックの検査値(4バイトのXOR)が合わないと、DocuWorks本体はファイルを開きません。読み込み後は、EMFやWMF、DocuWorks独自の描画レコードを表示リストに変換してページを描画します。編集操作(追加・移動・回転・削除)は、ezpzxdw-core内の記録に反映されます。保存時は、署名付き文書だけ末尾にセグメントを追加し、それ以外は使用中のエントリだけを残して全体を書き直します。同じロジックをwasm32にコンパイルしたezpzxdw-wasmが、ブラウザ用の1ファイルHTMLエディタを動かします。検証にはtools/dwviewとtools/dwapiを使い、Wine経由で本物のDocuWorks Viewer LightとDocuWorks 10 APIを操作します。これにより、保存したファイルが実際に開けて描画できるかまで確認しています。
- STEP 01
`cargo test`を実行すると、`EZPZXDW_CORPUS`環境変数にサンプルフォルダを指定しない限り、コーパステストは空振りで終わります。
- STEP 02
`cargo run -p ezpzxdw-cli -- pages file.xdw`を実行すると、手元の.xdwファイルのページと注釈オブジェクトの一覧がJSONで出力されます。
- STEP 03
`web/build.sh`を実行すると、wasm32ターゲットとwasm-bindgen-cli 0.2.129が必要だと分かり、環境構築に手間がかかります。
- STEP 04
ビルドが済むと`web/dist/ezpzxdw-editor.html`が1ファイルで生成され、ブラウザで開いて.xdwをドラッグ&ドロップできます。
- STEP 05
日付印・蛍光ペン・付箋などの注釈を付けてCtrl+Sで保存すると、同じファイルに書き戻されます。
- STEP 06
`tools/dwview`や`tools/dwapi`で実機検証するには、Wineと本物のDocuWorks実行ファイルが別途必要です。
手に入るのは、.xdw/.xbdを読み書きできるRustライブラリとCLI(ezpzxdw)、ブラウザ単体で動く1ファイルのエディタHTML、そしてファイル形式の仕様書です。実際に動かせば、サンプル文書を開いて注釈を付け、同じ.xdwやPDFとして書き出す一連の流れを手元で確認できます。
署名の有効性確認や、新しい署名・パスワードの付与はまだできません。
パスワードや証明書で保護された文書は開けず、DocuWorks側で保護を解除する必要があります。
実機検証(tools/dwview、tools/dwapi)はWine上で本物のDocuWorksを動かす仕組みなので、Windows用DocuWorksの実行ファイルがないと再現できません。
バージョンはv0.2の開発者向けプレビューで、README自身も「まだできないこと」を明記しています。
DocuWorksファイルをMacやLinux、ブラウザだけで開きたい開発者や、形式そのものを調べたい研究者に向いています。根拠は、コーパステスト(corpus.rs)が公開サンプル43件の検査値・ページ描画・編集往復を自動で確認している点です。加えて、tools/dwapiやtools/dwviewが実際のDocuWorks 10・Viewer Lightで保存結果を照合している点も根拠になります。つまり、自分で動かさなくても、検証プロセス自体がソースコードとして公開・再現可能な形で示されています。一方で、署名やパスワード対応はまだ先の話なので、本番運用にはPLAN.ja.mdの進捗を確認してから使うのが安全です。