Először is elnézést kérek azoktól, akiket nem érdekel az e-könyv-gyártástechnológia (bocs, Prof :-), de ez most száraz poszt lesz és kétségbeesett.
Szóval. Az a nagy helyzet, hogy a Kindle3 olyan prc-ket eszik, sőt az Amazon olyan anyagokat fogad csak be terjesztésre, amelyeknek nemcsak logikai tartalomjegyzékük van (ú.n. mbp_toc.html ) hanem fizikai is (toc.ncx). Ez utóbbi teszi lehetővé, hogy a kurzorgombokkal fejezetet ugorjunk, és hogy a progress baron látszódjanak az ugrópontok, praktikusan a fejezetcímek. Szóval ez egy nagyon kellemes (és addiktív!) lehetőség.
Viszont, sem a Mobipocket Creator, se más hivatalos eszköz nem csinálja meg ezt a toc.ncx-et, pedig elvileg egy spéci függvény (a.k.a transzformáció) le tudná generálni.
A feladat kétlépcsős. Kell egy valami, ami az ismert mbp_toc.html és könyv.opf-ből kigenerálja a toc.ncx-et, és a második lépcsőben -- ha lehet -- beinjektálja az opf megfelelő helyére a toc.ncx hivatkozást.
A jó hír, hogy nem föltétlenül kell nulláról indulni. eNeL olvtárs már írt egy VBS scriptet, ami elvileg elvégzi ezt a manőverpárt, sőt sokszor működik is, de sajnos sokszor ki is akad, és nem jöttem rá, mitől.
Licenc:
A VB Script felhasználható a GNU Általános Nyilvános Licenc (GNU GPL) V3 szerint. Lásd a forrásfájl elejét. A korábbi V2 változat nem hivatalos magyar fordítása például itt található: http://www.drdudas.hu/gpl_v2_magyarul.
Használat és tudnivalók:
- A szokásos módon elindítjuk a MP Creatort, és végrehajtjuk az összes lépést (beleértve a prc build-et is). A MP Creatort ne zárjuk be, szükség lesz még rá. Fontos, hogy lehetőleg ne legyen a Build után figyelmeztetésünk.
- A mobitoc2ncx.vbs fájlt be kell másolni a MP Creator által létrehozott ~\Dokumentumok\My Publications\"könyv/publikáció cím" könyvtárba a többi fájl mellé. A korábban létrejött "könyvcím".prc fájlt le is lehet törölni, de aki nem bízik a scriptben át is nevezheti :) A script alapbeállításban nem bántja a korábban létrejött mpb_toc.html fájlt; az eredeti "könyvcím".opf fájlt pedig (alap beállításban) "Regi_" előtaggal elmenti.
- Ha valakinek nincs szüksége az eredeti opf fájlra, az a script elején az opf_felulir változót állítsa "True" értékre (más állítási opció nincs is :)). Ilyenkor természetesen nem lesz "Regi_" előtagú fájlunk.
- Kettős kattintással (vagy Total Commanderben Enterrel) indítsuk el a scriptet. Normális esetben a művelet végén egy "A toc.ncx fájl elkészült, az .opf fájl módosítása megtörtént!" üzenetet kapunk (ami persze nem jelenti azt, hogy minden rendben lesz később is...)
- A könyvtárban megjelenik egy, az eredetinél nagyobb méretű "könyvcím".opf, valamint egy toc.ncx fájl.
- Térjünk vissza a MP Creatorba, és újra indítsuk el a "Build"-et.
- Jó esetben (ha korábban nem volt figyelmeztetésünk) most sem lesz. Ha van,akkor például a létrehozott prc mérete azonos lehet az előzővel: ilyenkor az ncx nem épült be a prc-be. De előfordulhat, hogy ugyanazt a figyelmeztetést kapjuk, mint amit az eredeti építésnél is (pl. nem megfelelő címlap kép fájlméret). Ebben az esetben - ha amúgy a korább prc működött - most is működni fog, de az ncx bekerülése kérdéses lesz, de akár működhet is.
- Készen is vagyunk. Ellenőrizzuk a fájlt a Kindle Previewer-rel. Ha minden sikerült, akkor az NCX tartalom megtekinthető a megfelelő gombra kattintva, illetve alul látható a tartalom sáv a kis jelekkel :))
FONTOS!
Nem tudtam kipróbálni, de minden irodalom szerint a KindleGen által létrehozott OPF fájl jelentősen különbözik a MP Creator által generálttól (leginkább a metaadatok listázásában). Tehát egy az egyben KindleGenhez a létrehozott fájl nem használható! Elvileg az MP Creator által létrehozott OPF fájl a KindleGen formázási szabályai szerinti átírása után a két fájl használható lehet a KindleGenhez is.
Naszóval ezt kéne kiegyenesíteni, vagy hasonlóan egyszerű (SQL szerver telepítését nem igénylő) megoldást találni.
Hálánk örökké üldözni fogja azt, aki megtalálja ezt a Grált :-)
UPDATE 2010.01.08
Ignisnek hála, készült egy xsl állomány, amelyiket ha jól megszólítunk egy xsl futtató környezettel (ez most xalan), és paraméterként átadjuk a forrás toc_html-t, akkor megcsinálja toc.ncx-et. Utána ezt még be kell fűzni az opf-be, és mehet a jöhet.
Alakulunk, alakulunk :-)
Részletes megoldás az alábbi posztban.
Utolsó kommentek