epub制作に必須のArchive Zipのメモ

2014/10/20 [10:03:27] (月) 天気

電子書籍作成ページの依頼があって久しぶりにスクリプトを眺めてみた。

(電子書籍の制作ではなくて、電子書籍を作成するページの作成)


エラーのないepubを作るのは手順の塊…というか手順だけなので面倒くさいんだけど難しいスクリプトでもない。

ユーザーの入力をどこまで自由にするのか、ページ移動はどうするのか、エラー処理は、ブラウザ対応は、などなどepub作成以外の部分で考えなきゃいけないことがいろいろあるのはwebだからしかたがないところ。


Archive::Zipのメモ1


てなことを考えながら見てたら、epubをパッケージするzipのモジュール、Archive::Zipでエラー。


Can’t call method "desiredCompressionLevel" on an undefined value at ...../Archive/Zip/Archive.pm line 249.

他のスクリプトでは問題なく使えているモジュールで原因がわからないし、該当箇所を見てもよくわからない。


$zip->addFile(filename,newfilename)

zipにファイルを追加していくところでエラーになってしまう。いろいろ試行錯誤。


結果。追加するファイルが見当たらない、pathが違ってたというだけのことだった。コンセントが抜けてますよレベルの話だった。

…でもなあ、このエラーメッセージじゃわからん。とほほ。



Archive::Zipのメモ2


前々からArchive::Zipで圧縮したらそれをファイルの書き出すのではなくて、標準出力にそのまま吐き出せればいいのにと思っていて、ついでなので調べてみたら、当たり前のように用意されていた。おのれの不勉強に愕然。そりゃそうだよなあ。


$out = *STODOUT;
$zip->writeToFileHandle($out,0);

writeToFileHandleのファイルハンドルに標準出力を指定してやればOKだった。


これで正常なzipファイルを出力することができた。



久しぶりにこの手のことでグーグル様詣で。以前Archive::Zip について調べた時には見かけなかったepubがらみのQ&Aなんかが検索でひっかかってきてちょっとびっくり。


電子書籍を作る側は充実してきてるんだなあ、と変なところで実感した。

<<2026/1>>
    123
45678910
11121314151617
18192021222324
25262728293031
検索:

【最近の20件】