7.26.2013

[電子書] ePub Validator & Debug過程紀錄

圖片來源:唤醒经典:Debug应用实例秀(1)

  由於之前用Sigil製作電子書時,有些問題,加上鮮少的網誌分享這些Debug的經驗(尤指中文資訊),所以我把我修改的過程簡單地做個紀錄。

  首先,先跟大家介紹 ePub Validator(EPUB 中文驗證服務) ,這個 EPUB 驗證服務的網址很多,大多是英文,官方網站及非官方的出版網站都有提供這服務,這邊提供的連結是中文版,畢竟咱們是龍的傳人,故這網站檢示出來的錯誤有中文翻譯可立即幫助如何debug。此外,甚至可以到 EPUBCHECK 下載,目前的 EPUBCHECK 的驗證服務到3.0.1版(2013-05-27釋出),這版本可檢查 EPUB 2.0 跟 3.0 的檔。



接下來是一些我Debug的歷程,做一個統整:
偵測到的版本:EPUB 2.0
驗證結果發現以下的問題:
()黃底背景為驗證中文翻譯

狀況一、id: heading_id_號碼重複

ERROR
OEBPS/toc.ncx
201
55
assertion failed: different playOrder values for navPoint/navTarget/pageTarget that refer to same target
ERROR
OEBPS/toc.ncx
201
55
邏輯判斷式失敗: different playOrder values for navPoint/navTarget/pageTarget that refer to same target

通常上面狀況的產生,也會伴隨著下面的錯誤產生。
ERROR

-1
-1
could not parse OEBPS/xhtml/016.xhtml: duplicate id: heading_id_3
ERROR

-1
-1
無法剖析 OEBPS/xhtml/016.xhtml: 重覆的id: heading_id_3

  主要是該檔的某一個xhtml的內容裡,有重複的id: heading_id_號碼,只要把這重複的號碼分別另外取名就可。

以此狀況為例,解決方式如下:
  1. 先把你的該檔檔名的".epub"改成".zip",然後解壓縮把 mimetype、META-INF、OEBPS 取出來。
  2. 打開 OEBPS 裡的"toc.ncx"
  3. 到201行檢查<navPoint id="navPoint-32" playOrder="32">...</navPoint>這段,去檢查你這行<content src="xhtml/016.xhtml#heading_id_3"/>

    你會發現 016.xhtml 的檔裡,每一個 <navPoint...>...</navPoint> 裡頭的這行<content src="xhtml/016.xhtml#heading_id_3"/>的id數字會有很多個3,這就是系統所指的重覆的id: heading_id_3,如圖1-1。
    ps. 通常你的標題階層越多,這巢狀的構造會越巢。
  4. 發現這些重複數字後,把這些重複的3賦予新的數字,如圖1-2。
  5. 然後再把這三個檔重新壓縮成一個zip檔(切記不要用rar),再把".zip"檔名改回".epub",然後再用 Sigil 開啟,並到 016.xhtml 的檔裡,用 code view 把重複的<h4 class="center" id="heading_id_3">...</h4>分別賦予新的號碼,如下圖1-3改成1-4。
  6. 恭喜你除掉了這個bug!


圖1-1 號碼重複

              圖1-2 賦予新號碼
 圖1-3 號碼重複
圖1-4 賦予新號碼

切記:一個xhtml檔只能有一個專屬的id: heading_id_號碼

狀況二、CSS註解的位置有誤

WARNING
OEBPS/css/Style0001.css
23
-1
Token ' 版權頁專用 ' not allowed here
WARNING
OEBPS/css/Style0001.css
23
-1
Token ' 版權頁專用 ' 不被允許在這裡
  主要是該檔的CSS裡,註解的位置跑到宣告的式子裡,只要把註解的位置喬一下就可以。

以此狀況為例,解決方式如下:
  1. 用 Sigil 打開該檔,並打開 css 資料夾下的 css 檔(原先Sigil預設的css檔名會是Style0001.css)
  2. 把註解的位置改一下,如圖1-5和1-6。
  3. 恭喜你除掉了這個bug!
 圖1-5 原先註解位置
圖1-6 更改後的註解位置

狀況三、圖片遺失

ERROR
OEBPS/xhtml/069.xhtml
59
209
'OEBPS/Images/pg013-63.jpg': referenced resource missing in the package.
ERROR
OEBPS/xhtml/069.xhtml
59
209
'OEBPS/Images/pg013-63.jpg': package中的參照資源遺失.

  這裡主要所指的是圖片遺失,此時所遺失的圖片內容會變成問號,問號代表抓不到該檔裡的 image 資料夾裡之圖片。欲解決此問題,以此狀況為例,有兩種做法:
  1. 把這問號圖刪掉,再重新用 Sigil 的 Insert 的功能插入。
  2. 將 epub 檔改為 zip 檔解壓縮,並到 OEBPS 裡打開 image 資料夾,將原先的 pg013-63.jpg 放入 image 資料夾,切記檔名要一致,不然依樣會抓不到這檔名,而圖片內容依然呈現問號。


  以上是我Debug的過程,其實沒有Debug的話,這檔仍然可以用 Chrome 的Readium 或是在 iPad 的 iBooks 上閱讀,因此你們可能會覺得這檔沒什問題,那為何要去除掉這Bugs呢?!亦或,當我想去除時,又會覺得其實這些蟲子都很細部,或是都是一堆中英文專業術語,該怎去除呢?!故在除這個看似可閱讀但內部又有蟲子的檔時,通常是比較費時的,故在這將一些除蟲的經驗整理整理,供後人乘涼嚕~

有最新的Debug過程,我會再更新,或是另寫一篇補充~





  目前本人遇到一個問題,尚未解開,若有神人知道的話,可以留言告訴我跟我分享解決之道,如下:

ERROR

-1
-1
The file OEBPS/images/oldlitter136.jpg does not appear to be of type image/jpeg
ERROR

-1
-1
檔案 OEBPS/images/oldlitter136.jpg 並不屬於型別 : image/jpeg

若有神人知道且願意分享的,敝人願詳聞,在此先感恩!


參考網站:

沒有留言:

張貼留言

搜尋此網誌