商店界面上顯示的報錯,大多含糊其辞,有時只寫「檔案有問題」。
所以第一件該做的事,是拿它過一遍叫作EPUBCheck的校驗工具。這是W3C發布的官方工具,免費。也有可以在線校驗的服務。
這個工具會具體指出「哪個檔案的第幾行,出了什麼問題」, 比商店的報錯資訊更容易找到原因。
EPUBCheck沒報錯卻被商店拒絕時,多半不是EPUB規格的問題,而是沒有滿足商店自己的要求。請參考後面的章節。
個人做EPUB時,遇到的報錯基本就那麼幾類。
EPUB檔案裡有一個叫 mimetype 的小檔案,規定是要放在ZIP的最前面,而且不壓縮。
用普通的壓縮軟體把資料夾打成ZIP,滿足不了這個條件。這是手工組裝EPUB時最常出現的問題。
EPUB裡包含的所有檔案,都必須登記在 <manifest> 中,也就是 content.opf 裡。
加了圖片卻忘了登記,或者反過來登記了的檔案實際並不存在——這種不一致就會報錯。
EPUB 3規定下列資訊為必填。
•dc:title(書名)
•dc:language(語言。日文寫 ja)
•dc:identifier(標識符)
•dcterms:modified(更新時間)
目錄(nav.xhtml)裡鏈接指向的檔案不在書中。刪掉了章節卻沒更新目錄時就會這樣。
EPUB的正文用XHTML書寫,寫法比普通HTML更嚴格。 標簽忘了閉合,或者寫成<br> (正確寫法是 <br />),都會報錯。
把HTML標簽直接寫進原稿時,容易出這個問題。
EPUBCheck報錯為零卻被商店拒絕,那就不是規格的問題,而是商店自己的要求。
各商店的投稿要求可能更新。最新資訊請務必在該商店的官方幫助中確認。
包括本文在內,第三方整理的資訊都可能過時。把報錯資訊裡的原文直接拿到官方幫助裡搜尋,最為可靠。
亞馬遜會把讀入的EPUB轉換成自家格式。問題可能出在這個轉換階段,所以投稿前先用Kindle Previewer確認,能更快地把原因區分開。
如果Previewer能打開卻在投稿時被拒,那麼問題更可能出在登記資訊或審核,而不是檔案本身。
EPUBCheck的輸出是英文,但只要知道怎麼看就不難。
| 標示 | 含義 |
|---|---|
| FATAL | 致命。檔案根本不成立 |
| ERROR | 違反規格。必須修改 |
| WARNING | 警告。能用,但不推薦 |
| INFO | 提示。多數不必處理 |
請先只看FATAL和ERROR。 WARNING大多可以就那樣發布。
幾十條報錯排在一起看著絕望,但多數都源自同一個原因。
比如manifest裡只寫錯了一行,從它引用的所有檔案就都會報錯。從上往下,只改最前面那一條再重新校驗,數量常常一下子就少了。
如果是把工具生成的EPUB手工編輯後弄壞了,從原稿重做往往更快。與其一條條消滅報錯,不如改好原稿再轉換一次,更可靠。
規格上明明正確、卻會在讀者的環境裡出問題的地方,EPUB診斷會用你的語言指出來。全部在瀏覽器內完成,檔案不會發送到任何地方。免費,無需注冊。