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.
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.03 (23.4.2009, 77 KB)

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
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
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.
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.)
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
Tyto knihy jsem nezkoušel, ale vyzkouším.
Mail je blog@pepak.net
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
{$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…
No prosím. FPC blbě implementuje funkci Swap, jakmile jsem ji přepsal, tak to začalo chodit. Hned uploadnu novou verzi.
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.
Funkční 0.03 už je na webu.
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);
Protože spuštění „PDB2TXT -r“ není správné. Správné je „PDB2TXT -r *.pdb“
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.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é.
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
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 syntaxieebook-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é--helpby 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á…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
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.
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íš :-/
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.
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
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ěží.
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
))))).
Taky děkuji, zlata příkazová řádka!
Teda…fakt díky
))
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.