一千萬個為什麽

搜索

如何從命令行重新包裝epub文件



我解壓縮了一個 epub 文件來做一些小修改。如何從Linux上的命令行正確重新打包它以成為有效的 epub 文件?

轉載註明原文: 如何從命令行重新包裝epub文件

一共有 3 個回答:

zip -rX ../my.epub mimetype META-INF/ OEBPS/

如果沒有 -X ,在使用EpubCheck進行驗證時可以得到以下結果:

ERROR: my.epub: Mimetype entry must not have an extra field in its ZIP header

如果 mimetype 不是 epub 文件中的第一個,則EpubCheck將打印以下內容:

ERROR: my.epub: Mimetype entry missing or not the first in archive
zip -X0 "my.epub" "mimetype"
zip -Xr "my.epub" "META-INF/" "OEBPS/"

正如palacsint已經指出的那樣,沒有-X標誌,就會遇到epubcheck錯誤PKG_005

"The mimetype file has an extra field of length %1$s. The use of the extra field feature of the ZIP format is not permitted for the mimetype file."

因為mimetype文件被用作壓縮zip文件中的神奇數字,而zip額外字段功能(zip程序和操作系統可以放置非標準化數據)將破壞神奇的數字機制(請參閱 https://github.com/IDPF/epubcheck/pull/497 )。 -0標誌確保mimetype文件不會被壓縮,這也是mimetype文件作為神奇數字工作所必需的,否則預期mimetype文件位置處的數據可能會被壓縮,混亂的亂碼。

A one-liner based on the previous answers, which will take the current dirname as the epub name, and the contents of the current dir as the epub: zip -rX "../$(basename "$(realpath .)").epub" mimetype $(ls|xargs echo|sed 's/mimetype//g')