2014-03-24 176 views
0

使用此命令a2x創建EPUB創建一個有效的.epub文件(book.epub):與A2X與ZIP

$ a2x -v -k -f epub -d book book.asc 
a2x: archiving: mimetype 
a2x: archiving: META-INF/container.xml 
a2x: archiving: OEBPS/ch01.html 
a2x: archiving: OEBPS/ch02.html 
a2x: archiving: OEBPS/content.opf 
a2x: archiving: OEBPS/docbook-xsl.css 
a2x: archiving: OEBPS/index.html 
a2x: archiving: OEBPS/pr01.html 
a2x: archiving: OEBPS/toc.ncx 

但是,如果我嘗試手動創建使用文物的.epub檔案(包含在在a2x命令和zip命令book.epub.d),產生的.epub文件是無效的:

$ zip -vr book.epub book.epub.d/ -x "*.DS_Store" 
    adding: book.epub.d/ (in=0) (out=0) (stored 0%) 
    adding: book.epub.d/META-INF/ (in=0) (out=0) (stored 0%) 
    adding: book.epub.d/META-INF/container.xml (in=255) (out=175) (deflated 31%) 
    adding: book.epub.d/mimetype (in=20) (out=20) (stored 0%) 
    adding: book.epub.d/OEBPS/ (in=0) (out=0) (stored 0%) 
    adding: book.epub.d/OEBPS/ch01.html (in=1161) (out=686) (deflated 41%) 
    adding: book.epub.d/OEBPS/ch02.html (in=679) (out=414) (deflated 39%) 
    adding: book.epub.d/OEBPS/content.opf (in=1288) (out=476) (deflated 63%) 
    adding: book.epub.d/OEBPS/docbook-xsl.css (in=5738) (out=1518) (deflated 74%) 
    adding: book.epub.d/OEBPS/index.html (in=1156) (out=590) (deflated 49%) 
    adding: book.epub.d/OEBPS/pr01.html (in=770) (out=485) (deflated 37%) 
    adding: book.epub.d/OEBPS/toc.ncx (in=772) (out=325) (deflated 58%) 

我懷疑這是因爲歸檔的文件包括book.epub.d在路徑中。有沒有辦法排除這個?

回答

2

這裏是我已經成功地使用命令:

zip -Xr epubfilename.ePUB mimetype META-INF OEBPS -x \*.DS_Store 

該文件放置在正確的順序(MIME類型,然後再META-INF與container.xml中下一個,最後一切),並排除.DS_store因爲它看起來像你在Mac上。

請注意,您需要在示例的book.epub.d目錄內執行此操作以生成正確的輸出。

如果您還沒有這樣做,我還建議使用epubcheck(https://github.com/IDPF/epubcheckhttp://validator.idpf.org)進行雙重檢查。

+0

爲我工作。我不得不穀歌.DS_Store(不適用於我的情況)。 +1用於epubcheck。這是我每天使用的重要工具。 – Paulb

+0

這可以工作:'zip -rr epubfilename.ePUB mimetype META-INF OEBPS'就像'zip -r epubfilename.ePUB mimetype META-INF OEBPS -x \ *。DS_Store'一樣。你可以使用'-x'來排除特定的文件('.DS_Store'); '-X'排除所有'額外的文件屬性(包括'.DS_Store')。 – craig

+0

解決問題的關鍵似乎是指定要包含的文件和子文件夾的名稱;我沒有測試過訂單,所以我會接受你的話。 – craig

2

我做拉鍊一連串命令來壓縮的EPUB:

cd /home/bookdirectory (where mimetype, OEBPS and META-INF are subdirectories) 
zip -X book.epub mimetype 
zip -r book.epub META-INF 
zip -r book.epub OEBPS 

我有時間最長的麻煩,直到我想通了-X是在mimetype拉鍊至關重要。

我注意到您的拉鍊排除是小寫x ..可能會切換到大寫?

+0

'-x'不包括指定的文件; '-X'不包括'額外的文件屬性'。因爲'.DS_Store'只存在於根目錄('book.epub.d')中,所以第一行的'-X'標誌起作用。這個文件不存在於兩個子目錄('META-INF'和'OEBPS')中。 – craig