Help us understand the problem. What is going on with this article?

epub用のzipファイルを正しく作成する

More than 1 year has passed since last update.

問題

  • Mimetype file entry is missing or is not the first file in the archive.
  • bookwalkerにepubを入稿しようとしたら上のようなエラーが出た

解決

  • windowsとかで普通にzip圧縮するとエラーが出る
  • このようなコマンドでepub(zipファイル)を作成する1
zip -0 -X hoge.epub mimetype
zip -r hoge.epub META-INF item
  • 残念ながらwindowsのzipフォルダー機能では上記を再現することはできなかった2

どうしてこんなことに?

  • epubの構造(というか仕様)にある
  • epubファイル(中身はzipファイル)のバイナリの先頭にはmimetypeファイルがなければならない

普通にzip圧縮するとどうなる?

  • extra file attributesが付与されると3
  • 仕様で決められているバイナリ先頭に現れるはずのmimetypeの位置がずれる
  • そんでmimetypeファイル無いじゃん、このファイルは不適といってエラーが出る
  • windowsの標準のzip圧縮で追加圧縮してもmimetypeファイルの圧縮順序がずれるので不適となる

バイナリ

  • 正しいバイナリ

image.png
image.png

参考

ここに至るまでの話


  1. bash on Ubuntu on Windows 10環境にて実施 

  2. lhazでも追加圧縮で試してみたけどうまくいかない 

  3. 上のコマンドで -X しているのはこのextra file attributesの付与を抑制する 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした