PHPでOpenDocumentフォーマットを扱う
PEAR::OpenDocumentがあります。先日バージョン0.1.2がリリースされました。
「Google Summer of Code 2006」の一環で作られたようですね。現時点では、まだodtファイル(Wordのdocファイルに相当)の操作のみ可能となっています。ちなみに、odtファイルは実際にはzipアーカイブです。。。ということで、PHPの場合、Zip拡張モジュールが必要になることに注意が必要です。
OpenDocument is a package to read, create or modify office documents in open document format.
OpenDocument format is a replacement for proprietary office formats such as .doc or .xls. This package is a very useful tool for php developers and another point to switch from proprietary office formats to OpenDocument one, that means switching to open source software and standards.
OpenDocument was developed as a project of Google Summer of Code 2006 Program.
Package provides object oriented style for working with open documents, a little similar to DOM as for XML.
で、ちょっと使ってみました。
$ pear install -a opendocument $ cp -rp /path/to/pear/OpenDocument/examples /path/to/work/ $ chmod 777 /path/to/work
上記のexamplesディレクトリに
がありますので、実際に実行して、中で何をしているか確認してみると良いです。
また、実際にOpenOffice2.1日本語版(Linux)を使って作成したodtファイルを使った場合も、html.phpを使って日本語を含め正しく表示できました。また、PHPスクリプトで日本語を扱う場合、utf-8にする必要があります。以下は、編集したcreate.phpをutf-8で保存した場合の例ですが、その他のエンコーディングの場合、iconvやmb_convert_encodingを使うことになると思います。
<?php require_once 'OpenDocument.php'; // open document class //create a new OpenDocument Text file $odt = new OpenDocument; //add heading $h = $odt->createHeading('Heading', 1); : //create link in heading $a2 = $h->createHyperlink('日本語です。どうかな?', 'http://ya.ru'); : //save as test.odt $odt->save('test.odt'); echo 'saved as test.odt'; ?>
そういえば、PHP Excel 2007 classes - Do You PHP はてなも同様にZip拡張を使ってファイルを作ってましたね。こちらは開発がどんどん行われているようで、バージョン1.3.5がリリースされています。