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)

Podobné příspěvky:

27 Responses to “Formáty: *.PDB”

  1. Emil Vlasák Emil Vlasák napsal:

    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

  2. pepak pepak napsal:

    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 :-)

  3. Emil Vlasák Emil Vlasák napsal:

    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.

  4. pepak pepak napsal:

    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.)

  5. Emil Vlasák Emil Vlasák napsal:

    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

  6. pepak pepak napsal:

    Tyto knihy jsem nezkoušel, ale vyzkouším.

    Mail je blog@pepak.net

  7. Emil Vlasák Emil Vlasák napsal:

    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

  8. pepak pepak napsal:

    {$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…

  9. pepak pepak napsal:

    No prosím. FPC blbě implementuje funkci Swap, jakmile jsem ji přepsal, tak to začalo chodit. Hned uploadnu novou verzi.

  10. Emil Vlasák Emil Vlasák napsal:

    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.

  11. pepak pepak napsal:

    Funkční 0.03 už je na webu.

  12. Emil Vlasák Emil Vlasák napsal:

    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);

  13. pepak pepak napsal:

    Protože spuštění „PDB2TXT -r“ není správné. Správné je „PDB2TXT -r *.pdb“

  14. pepak pepak napsal:

    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.

  15. Marek Lutonský Marek Lutonský napsal:

    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é.

  16. Marek Lutonský Marek Lutonský napsal:

    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

  17. pepak pepak napsal:

    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 syntaxi eebook-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á…

  18. Stifi Stifi napsal:

    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

  19. pepak pepak napsal:

    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.

  20. Stifi Stifi napsal:

    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íš :-/

  21. pepak pepak napsal:

    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.

  22. Stifi Stifi napsal:

    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 :-)

  23. pepak pepak napsal:

    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ěží.

  24. LenkaH LenkaH napsal:

    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 ))))).

  25. Johny007 Johny007 napsal:

    Taky děkuji, zlata příkazová řádka!

  26. Lenka Lenka napsal:

    Teda…fakt díky :-) ))

  27. sakraprace sakraprace napsal:

    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.

Leave a Reply

Themocracy iconWordPress Themes