Formáty: *.PDB
Takzvaný „formát PDB“ se od ostatních e-bookových formátů liší mnoha věcmi, mimo jiné tím, že to není formát (v podstatě je to kopie bloku paměti Palmu, bez ohledu na to, co vlastně obsahuje), a i kdyby to formát byl, tak to není formát e-bookový – obsahem PDB může být úplně cokoliv, co lze na Palmu spustit nebo v jeho aplikacích editovat. Dokonce i textových formátů pro použití v e-boocích je pod hlavičkou PDB několik.
Na českém e-bookovém webu se pod PDB obvykle myslí formát aplikace PalmDOC, což je víceméně prostý text bez jakýchkoliv příkras (formátování, metadata), jen jednoduše komprimovaný. Sony Reader tento formát nepodporuje, ale z praktických důvodů mi přišlo užitečné umět ho zpracovat. Konvertorů samozřejmě existuje spousta, ovšem žádný mi nevyhovoval – všechno jsou to grafické aplikace vyžadující spoustu klikání a psaní. Tudíž jsem z jedné z nich sebral konverzní knihovnu, dopsal k ní jednoduché (přesněji řečeno primitivní) rozhraní pro příkazový řádek a vzniknul PDB2TXT.
PDB2TXT
Narozdíl od předchozích programů je použití PDB2TXT směšně triviální: Program očekává jeden nebo více parametrů obsahujících buď -r
, které zapne rekurzivní procházení podadresářů, nebo masku souborů, které se mají zkonvertovat (tj. něco jako pdb2txt.exe *.pdb
), implicitní hodnota je právě *.pdb
. Všechny soubory vyhovující masce budou zkonvertovány do TXT.
Verze 0.04 podporuje řadu dalších možných parametrů. Zde je seznam všech:
-h
… Zobrazí nápovědu.-?
… Zobrazí nápovědu.-r
… Povolí rekurzivní procházení podadresářů (výchozí).-r-
… Zakáže rekurzivní procházení podadresářů.-ansi
… Textové soubory budou ukládány v ANSI kódování (výchozí).-utf8
… Textové soubory budou ukládány v kódování UTF-8.-utf16
… Textové soubory budou ukládány v kódování UTF-16.-bom
… Pokud jsou použita kódování unicode, zapíše se na začátek dokumentu byte-order-mark (výchozí).-bom-
… Byte-order-mark se nezapíše.
Program je určen a testován pro prostředí Windows, ale měl by fungovat na každém operačním systému, pro který lze kompilovat FreePascalem (nemám to ověřeno). Je distribuován jako freeware včetně zdrojového kódu (Delphi/FreePascal), pod podmínkou, že nebude prodáván a bude zachován odkaz na mě jakožto autora. Pokud uděláte nějaké úpravy, ocenil bych, kdybyste mi je poslali.
-
PDB2TXT v0.05 (25.12.2010, 89 KB). Pročištěn zdrojový kód. Licence explicitně uvedena jako nová BSD licence. Přidáno číslo verze a digitální podpisy do spustitelných souborů.
-
PDB2TXT v0.04 (15.9.2010, 65 KB). Podpora pro výstup v kódování unicode (UTF-8 i UTF-16, s BOM i bez).
-
PDB2TXT v0.03 (23.4.2009, 77 KB)
Výborně, fungoval perfektně 🙂 Ostatní konvertory nedělaly diakritiku moc dobře. Tedy i PDB2TXT to nezvládl 100%, ale mnohem lépe, než ty předchozí, takže pak stačilo diakritiku už lehce jen opravit v hex editoru (nehrozilo, že by jeden špatný charakter byl použit pro více diakritických písmen). Takže super!
Nejlepší PDB konvertor ze všech.
Děkuji autorovi
No s kódováním v mých PDB dost bojuju, a tento je první co to zvládnul… Ani Calibe mi nedělalo dost dobré překlady (vždy nějaké české písmenko vynechávalo) Díky moc.
Dekuji! Jsem obyc. uživatel, prevod do txt jsem intuitivne zvladl. Suprovy programek! Moc jeho tvurce chvalim!!! 🙂
díky kámo, good job!
Petr: „Analfabetický“ návod je bohužel skoro nemožný – nástroj je úmyslně dělán jako ovládaný z příkazové řádky, takže bez nějakých základních znalostí se používat nedá. Předání těch znalostí by bylo příliš pracné pro nás oba.
Calibre by ti fungoval, kdybys správně nastavil vstupní kódování textu (které patrně nenastavuješ vůbec, takže si Calibre zvolí nějakou výchozí hodnotu, která ovšem není správně). U většiny knih patrně budeš chtít použít windows-1250 (nebo cp1250 nebo něco jiného 1250).
Prosím Tě, jsem počítačový analfabet – můžeš mi poslat nějkaký zkrácený manuál pro debily jak s tím Tvým prográmkem pracovat? Calibre mi při konverzi zmrší diakritiku, resp. š, č a ž vyhodí z textu.
Díky
do pdb to převádí alreader2
Peggy: Určitě do PDB? Ten můj prográmek je určen pro konverzi z PDB. S konverzí do PDB ti neporadím, protože nevím. Ostatně, dnes už neexistuje rozumný důvod, proč pro e-knihy PDB používat.
Ahoj, už několik dní se snažím převést své knihy do pdb a zatím nic. V této diskuzi jsem nalezla ztracenou naději, ale program skončí hláškou failed u obou testovaných souborů, po přejmenování, failed napsán pouze u prvního a pak windows hláška, že program přestal pracovat. V čem může být problém? díky moc
Aha, dobře – respektuji. V každém případě díky za program.
tauno: Protože to je můj preferovaný způsob pojmenování souborů při konverzi. Žádný jiný důvod v tom není.
Výborný program; něco takového jsem potřeboval. Jen by mne zajímalo, proč mi soubor xxxx.PDB konvertuje na xxxx.PDB.TXT ? Co dělám špatně?
Parametry jsou -r- *.PDB
Juhele: Verze 0.05 ti určitě nepůjde, pokud nepřepíšeš
Lib/Source/Pepak
. Tam je podle mě jedinou cestou WINE, se kterým by to mělo šlapat.Verze 0.03 nebo starší by měla jít FreePascalem v pohodě přeložit, nepoužívá nic specificky Windowsového.
úžasný softík. během chvilky jsem měl převedenou celou knihovnu z pdb do txt. dík
PS: zkusím ukecat někoho aby to zkompiloval i na linuxu, abych to otestoval i tam, protože podobných nástrojů je jak šafránu.
Mirek: Pokud se to nestává vždy na stejném místě, tak bys mi musel přes nějaký Rapidshare nebo něco podobného nahrát všechno; já bych pak musel pustit v debuggeru převod a doufat, že mi zrovna spadne. Skoro by mi přišlo jednodušší, kdybys zjistil, že to spadlo u souboru X, tak bys smazal všechno před ním a pustil konverzi znovu…
Ok a jak ti ty stabilní vzorový data můžu dodat?;-)
Co je zvláštní že se to nestává pokaždý na stejnym místě mám dva screeny a pokaždý do zkončilo někde trošku jinde – fakt divný… 🙁
marek: Buď si musíš udělat zástupce a ty parametry zadat v něm, nebo to spouštět z příkazové řádky. Přímo z GUI bys eventuelně dostal parametry typu jméno souboru (přetažením požadovaného souboru na ikonku programu), ale
-utf8
ne.Tomas, Mirek: Hmm, co k tomu říct? Podle mě nic takového nastat nemůže. Pokud přesto nastává, bude to pravděpodobně nějaká úplně nečekaná úchylnost, třeba chyba v kompilátoru (nebyla by první, která se projevuje přesně takhle). Každopádně bez stabilních vzorových dat, na kterých se to vždy projeví, nemám šanci to najít a opravit.
Stalo se mi totez co Mirkovi, pri prevodu asi 1500 knih mi konverze skocila bez hlasky u pismene C.
Omlouvam se za lehkou natvrdlost, ale jak probiha to zadani parametru? exe soubor vlozim do adresare, kde mam pdb soubory, spustim exac a vsechny pdbcka jsou konvertovany. Ale jak se mohou upravovat ty vystupni kodovani? kam se ty parametry (jako napr „-utf8“) maji napsat?
Žádný Gui jsem v archivu nenašel takže jsem to spouštěl normálně z cmdčka.
Můžu ti hodit screen jestli chceš a budeme hned moudřejší 😉
Mirek: Nesetkal jsem se s tím, a zdá se mi krajně nepravděpodobné, že by konverze skončila bez jakékoliv hlášky – úplně vyloučit to nelze, ale s výjimkou případů, kdy mi něco přepíše program v paměti, by se to stát nemělo. Jsi si jistý, že jen chybně neinterpretuješ dosažené výsledky? Že jsi třeba program nespustil z GUI, takže se při chybě vypsalo hlášení a vzápětí se celá konzole zavřela i s tím hlášením?
Čau, setkal jste někdo s tím že by se konverze ukončila bez chybové hlášky a nepokračovala dál?Mám cca 3500 knih a konvertování se zastavilo u písmene B což není zrovna moc… 🙁
Many thanks! Works great.
Řekni si správci svého počítače, ať ti nastaví Windows tak, aby na nich šlo spouštět externí programy.
nemozem to ani rozbalit! windows mi vyhodi zamedzenie spustenia programu!
Výborná práce, díky. Ušetří mi to spoustu času. 🙂
Verze 0.05: Pročištěn zdrojový kód. Licence explicitně uvedena jako nová BSD licence. Přidáno číslo verze a digitální podpisy do spustitelných souborů
Taky mockrát děkuji, ušetřil jste mi spoustu času a nervů 🙂
Pane jo 🙂 Mockrát děkuju, funguje perfektně!
Verze 0.04: Podpora pro výstup v kódování unicode (UTF-8 i UTF-16, s BOM i bez).
Díky za odpověď! Mám pár tisíc e-booků, které bych si rád nahrál do čtečky, jenže ta neumí české znaky, pokavaď txt soubor neuložím v Notepadu s kódováním Unicode. A jelikož se mi vážně nechce ukládat to takhle knížku po knížce… 🙂 Našel jsem si na netu linuxovou aplikaci iconv (zkompilovanou tak, aby běžela i ve Woknech), jenže ta jako parametr potřebuje název souboru, nespokojí se s hvězdičkou, ani s *.txt a ani s variantou bez parametru. :\
Nemělo by to být nijak obtížné. Dnes už se mi do toho nechce, ale zítra bych to snad udělat mohl.
Zdravím, dal by se program nějak jednoduše upravit, aby se txt výstup uložil rovnou s kódováním Unicode a ne ANSI?
Díky, díky moc. Jsem fanatický čtenář a stáhla jsem si 11.díl oblíbené knihy v PDB a byla jsem v p****i. Jsem počítačový analfabet, ale toto jsem -po několika minutovém boji-zvládla. Ještě jednou díky.
Teda…fakt díky :-)))
Taky děkuji, zlata příkazová řádka!
Dobrý večer, chci poděkovat ze tento super prográmek, i takový počítačový trotlík jako já si s tím naprosto hravě poradil a PDB soubor zkonvertoval :o))))).
Myslím, že v tom postupu máš drobnou chybku (co já vím, tak můj prográmek umí jen převod z PDB do TXT, druhý směr neumí), ale to je jedno – hlavně, že ti to běží.
Už jsem na to asi přišel. Stačí pomocí tvého prográmku přetvořit soubor z PDB do TXT, otevřít v open office nebo ještě lepší je Notepad++ a ve složce formát máš konvert to UTF-8. Pak už to jen uložíš a pomocí tvého prográmku zase překonvertuješ zpět na PDB a enjoy 😉 Funguje to 🙂
Z PDB do TXT to dostaneš programem PDB2TXT, který tu dávám ke stažení. Případně existují i další, pokud nemáš v oblibě příkazovou řádku – třeba hodně oblíbený editor PSPad.
Jo člověče, jestli to podporuje české znaky nevím jak zjistit. Dává mi to na výběr z pár variant kódování: UTF8, BIG5 ( něco čínského ),GB2312 ( také něco čínského ), ASCII ( Western Windows ) a UCS2 ( unicode ). Víc v možnostech nemám. Nebo jsem si na netu našel nějaký program, kde mi přepíše písmena s interpunkcí, což by mi nevadilo a četl bych to jako dlouhou smsku. Jen nevím jak z PDB dostat TXT abych to mohl narvat do toho prográmku a změnit to zase zpátky na PDB. Snad mi rozumíš :-/
To vůbec není tak jednoduché, jak by se mohlo zdát. V první řadě je otázka, jestli vůbec lze v PDB kódování UTF8 použít – teoreticky by to jít mělo, prakticky to jít nemusí. Druhý problém je, že PDB žádné kódování nespecifikuje, takže je to věc zobrazovacího softwaru – je celkem běžné, že je prohlížeč natvrdo napsán na jedno konkrétní kódování a v tom očekává vstupy. Třetí otázka je, jestli vůbec tvoje PDA (nebo mobil nebo na čem chceš číst) má integrované české písmo – klidně se může stát, že formálně je všechno podporováno, ale zařízení prostě nemá ty znaky, které by mělo vykreslovat (pro příklad nemusíme jít daleko, přesně takhle to vypadá s češtinou v čtečkách Sony). No a teprve když je tohle všechno vyřešeno, můžeš ze zabývat otázkou, jak ze zvoleného výchozího formátu udělat vhodné PDB; připrav se na to, že z TXT a PDB to není problém, z DOC to může být problém a z PDF to docela určitě bude problém.
Ahoj. Moc netuším, o čem se tady bavíte. Dokázal bych jako laik, který s počítačem umí jen tak uživatelsky, nějak dostat ze souborů PDF, DOC, TXT nebo PDB soubor PDB s kódováním UTF8? Pokaždé stáhnu ebooks, ale na telefonu mám místo interpunkce nějaký klikyháky. Díky
Parametrů obsahuje strašnou spoustu, jen je trochu obtížné se k nim dostat, protože navzdory všem zvyklostem nevypíše seznam jenom na pouhý
ebook-convert.exe --help
– je nutné použít syntaxiebook-convert.exe vstupní_soubor výstupní_soubor --help
, přičemž vstupní soubor musí existovat. Kovid Goyal to zdůvodňuje tím, že pro různé vstupní a různé výstupní formáty jsou různé parametry; osobně si myslím, že udělat výpis všech možných parametrů pro prosté--help
by bylo ideální (a když už stávající způsob, tak ať ten vstupní soubor nemusí existovat), ale vývojář je Kovid a ne já…Možná jsem měl před tím pořádně hledat. Tady je přesný výpis možných parametrů, a myslím, že to půjde i přes příkazový řádek:
http://calibre.kovidgoyal.net/user_manual/cli/ebook-convert-7.html#pdb-input-to-lrf-output
Právě zkouším postup, který jste mi napsal e-mailem (děkuji za něj). Nevíte, jestli ebook-convert.exe podporuje ještě další parametry?
Při převodu do LRF v grafickém prostředí Calibre totiž používám ještě další nastavení: písmo, řádkování, mezery od kraje, Konkrétně u PDB je potom často vhodná volba „Považovat každý řádek za odstavec“, jinak se celá kapitola převede jako jeden blok.
Kdyby se všechny tyto parametry daly nastavit do konzolové dávky, bylo by to potom velmi jednoduché.
Z dnešní mailové výměny s Markem Lutonským vyplynula dvě důležitá fakta:
1) Calibre už podporuje některé varianty PDB, včetně té, kterou konvertuje můj PDB2TXT. Takže pokud vám stačí převést PDB knihy do čtečky a neuvažujete o případných opravách, můžete konvertovat přímo v prostředí Calibre.
2) PDB ovšem v sobě nenese informaci o použitém kódování a Calibre v takové situaci implicitně předpokládá UTF-8. Protože nemalá část PDB dostupných na českém internetu je v kódování Windows-1250, je třeba tuto informaci Calibru před konverzí sdělit (např. ve formě parametru
--input-encoding=windows-1250
, jinak bude výsledkem konverze paskvil a ne kniha.Protože spuštění „PDB2TXT -r“ není správné. Správné je „PDB2TXT -r *.pdb“
Takže díky za spolupráci, nová verze funguje.
Když už se do toho koukám, tak od pohledu, s parametrem -r se funkce Convert nespustí.
Emil
if ParamCount = 0 then
Convert(‚*.pdb‘, Recursive)
else
for i := 1 to ParamCount do
if ParamStr(i) = ‚-r‘ then
Recursive := True
else
Convert(ParamStr(i), Recursive);
Funkční 0.03 už je na webu.
Takže problém bude nejspíš v tom FreePascalu.
Teď jsem pustil konverzi asi na sto knih a všechno jede.
Jestli máš zájem, mohu zatím opravit verzi třeba na 0.03 a psolat EXE.
Když už to visí na webu, tak ať to funguje.
No prosím. FPC blbě implementuje funkci Swap, jakmile jsem ji přepsal, tak to začalo chodit. Hned uploadnu novou verzi.
{$MODE DELPHI} je potřeba pro FreePascal a tím to myslím taky bylo zkompilované. Ale mohlo by se to dát do další podmínky, aby se to neuplatňovalo vždy.
Skutečně je to nějaká chyba FreePascalu, v Delphi to funguje správně. No, není to poprvé, co FPC vykazuje úplně podivné chování :-(. Zkusím na to přijít, ale nevím – u ColBuildu jsem na to taky nepřišel, ledaže bych přepsal Sort…
Určitě to není knihama a na jiném stroji se to chová tady stejně.
Co máš za systém a číms to přeložil?
Když to totiž zbuilduju pod Delphi 7 se standardními parametry, tak to rázem funguje.
Akorát musím odstranit řádky {$MODE DELPHI}.
Nový EXE je jen 99k.
Emil
Tyto knihy jsem nezkoušel, ale vyzkouším.
Mail je blog@pepak.net
Zdravím!
Tak to bude zase jen nějaká blbost.
Zkusím to přes den na jiném stroji, případně večer pod Delphi.
Já ale dostávám standardně toto
Microsoft Windows XP [Verze 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
c:\pom\pdb>pdb2txt
PDB2TXT v0.02
10xSci-fi.pdb EInvalidPalmDatabase: Not a Palm database or database corrupt
Alien_Sex-Antologie.pdb EInvalidPalmDatabase: Not a Palm database or databas
e corrupt
c:\pom\pdb>
Nebylo by lepčí řešit celou věc mailama a tady ukázat jen nějaký výsledek?
Emil
Tak jsem zkusil stáhnout první knihu po antologiích a můj PDB2TXT to normálně vzal. Napiš nějakou konkrétní knihu, která nejde.
Pokud jde o UTF-8, tam je skutečně jediná věc na vyřešení to zdrojové kódování. Zbytek už je trivialita. (Ale mezi náma, nejjednodušší mi stejně přijde nechat v konvertoru to původní kódování a konverzi do UTF-8 pak udělat dalším programem. Na to už nástroje existují, např. ICONV.)
http://ebookz.sign.sk/CS/PalmBookz_Mirror /
Jméno: *********
Heslo: *********
Ta sbírka je tak velká, že jsem nic dalšího zatím nehledal.
Možná by bylo jednodušší najít jinou?
Konverze do UTF-8 třeba na parametr.
Pak bych to projel jednou a dost, ale musí to nejdřív fungovat…
PSPad je v Delphi a taky to načte, v nejhorším by snad mohl pomoci jeho autor.
1) Přesně to byl důvod, proč jsem to psal 🙂
2) Konverze do UTF-8 má jeden zásadní problém – PalmDOC dokumenty, pokud vím, nenesou vůbec žádnou informaci o použitém kódování. Při konverzi do čistého textu to není problém, prostě to vyleze ve stejném kódování, jaké bylo v PDB, ale při konverzi do UTF-8 bych to zdrojové kódování znát potřeboval.
Na jiné PDB se můžu podívat, ale nevidím to příliš optimisticky – já ten formát neznám, jen jsem prostě využil cizí knihovny a hotovo. Pokud si s ním neporadí, znamenalo by to hledat další knihovny, ale nevím kde. Poslat soubor mi můžeš, ale nic neslibuju, především ne žádný termín 🙂
Zdravím!
Tento program mne velice potěšil, protože
1. Teoreticky už nemusím knihy z velké sbírky přetahovat přes DocReader nebo PSPad.
2. Jsou přiloženy zdrojáky v PAS, takže případně lze dodělat konverze do UTF-8.
To jsem zrovna v PAS nedávno řešil v souvislosti s automatickou tvorbou RSS mého webu,
takže mohu dát k dispozici.
Pak už bych měl knihy zcela bez práce.
Bohužel, zrovna na variantu PDB z mé sbírky konvertor nefunguje.
Klíčové unity DocFile.pas a PalmDatabase.pas jsou asi odněkud převzaté,
ale stejně, nešlo by s tím něco udělat?
Vzorek PDB mohu zaslat.
Díky, Emil