phpでePub形式の電子書籍を作成

基本はただのzip圧縮
PEAR::File_Archiveを使って圧縮する。

epubファイルのフォーマットについてはこの辺りで適当に勉強してください。
「電子書籍ファイルePubについて -ePubを自分で作成する-」
http://naoki.sato.name/lab/archives/45

mimetypeファイルは無圧縮かつファイルの先頭になければならないので、
mimetypeのみの無圧縮zipファイルを作ってから、
それに他のファイルを圧縮したものを追加する。


$work_dir ='作業フォルダパス' 
           //PEAR::File_Archiveがファイル名で圧縮形式を決めているので,
           // .zipファイルをつくってから.epubに変更する

$zip_name ='zipファイル名.zip';
$epub_name ='epubファイル名.epub';
$file_archive = new File_Archive();
$src = $file_archive->readMulti();

//圧縮率を0 無圧縮に設定
File_Archive::setOption('zipCompressionLevel', 0);

//mimetypeをsrcに追加
$src->addSource(File_Archive::read($work_dir.'mimetype'));

//srcからzipファイルを生成
$file_archive->extract( $src,
$file_archive->toArchive($zip_name,file_archive->toFiles())
);

//圧縮率を最大に設定
File_Archive::setOption('zipCompressionLevel', 9);
$src2 = $file_archive->readMulti();

//src2にその他のファイルを追加
$src2->addSource(
File_Archive::read(
$work_dir.'META-INF/container.xml',
'META-INF/container.xml'
)
);
$src2->addSource(File_Archive::read($work_dir.'OEBPS','OEBPS'));
// ↑OEBPS(フォルダ)に/を付けない
// OEBPS//ファイル名 となってしまう。

//mimetypeから作ったzipファイルにsrc2を追加
$file_archive->extract($src2, $file_archive->appender($zip_name) );

//ファイル名(拡張子)を変更
rename($zip_name, $epub_name);

広告

akatukisiden について

フリーランスプログラマ 使用言語はC++,C#とそのつなぎのC++/CLI 専門はクライアントアプリ開発
カテゴリー: PHP パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中