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)

Podobné příspěvky:

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

  1. avatar Godmy napsal:

    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!

  2. avatar Pepe napsal:

    Nejlepší PDB konvertor ze všech.
    Děkuji autorovi

  3. avatar Peťa napsal:

    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.

  4. avatar lobelka napsal:

    Dekuji! Jsem obyc. uživatel, prevod do txt jsem intuitivne zvladl. Suprovy programek! Moc jeho tvurce chvalim!!! 🙂

  5. avatar eM napsal:

    díky kámo, good job!

  6. avatar pepak napsal:

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

  7. avatar Petr napsal:

    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

  8. avatar Kuba napsal:

    do pdb to převádí alreader2

  9. avatar pepak napsal:

    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.

  10. avatar Peggy napsal:

    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

  11. avatar tauno napsal:

    Aha, dobře – respektuji. V každém případě díky za program.

  12. avatar pepak napsal:

    tauno: Protože to je můj preferovaný způsob pojmenování souborů při konverzi. Žádný jiný důvod v tom není.

  13. avatar tauno napsal:

    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

  14. avatar pepak napsal:

    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.

  15. avatar Juhele napsal:

    úž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.

  16. avatar pepak napsal:

    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…

  17. avatar Mirek napsal:

    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ý… 🙁

  18. avatar pepak napsal:

    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.

  19. avatar pepak napsal:

    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.

  20. avatar Tomas napsal:

    Stalo se mi totez co Mirkovi, pri prevodu asi 1500 knih mi konverze skocila bez hlasky u pismene C.

  21. avatar marek napsal:

    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?

  22. avatar Mirek napsal:

    Žá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ší 😉

  23. avatar pepak napsal:

    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?

  24. avatar Mirek napsal:

    Č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… 🙁

  25. avatar alan napsal:

    Many thanks! Works great.

  26. avatar pepak napsal:

    Řekni si správci svého počítače, ať ti nastaví Windows tak, aby na nich šlo spouštět externí programy.

  27. avatar ANGRY napsal:

    nemozem to ani rozbalit! windows mi vyhodi zamedzenie spustenia programu!

  28. avatar Sbox napsal:

    Výborná práce, díky. Ušetří mi to spoustu času. 🙂

  29. avatar pepak napsal:

    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ů

  30. avatar Morgion napsal:

    Taky mockrát děkuji, ušetřil jste mi spoustu času a nervů 🙂

  31. avatar Berzeger napsal:

    Pane jo 🙂 Mockrát děkuju, funguje perfektně!

  32. avatar pepak napsal:

    Verze 0.04: Podpora pro výstup v kódování unicode (UTF-8 i UTF-16, s BOM i bez).

  33. avatar Berzeger napsal:

    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. :\

  34. avatar pepak napsal:

    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.

  35. avatar Berzeger napsal:

    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?

  36. avatar 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.

  37. avatar Lenka napsal:

    Teda…fakt díky :-)))

  38. avatar Johny007 napsal:

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

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

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

  41. avatar 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 🙂

  42. avatar 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.

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

  44. avatar 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.

  45. avatar 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

  46. avatar 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 ebook-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á…

  47. avatar 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

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

  49. avatar 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.

  50. avatar pepak napsal:

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

  51. avatar 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);

  52. avatar pepak napsal:

    Funkční 0.03 už je na webu.

  53. avatar 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.

  54. avatar pepak napsal:

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

  55. avatar 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…

  56. avatar 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

  57. avatar pepak napsal:

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

    Mail je blog@pepak.net

  58. avatar 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

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

  60. avatar 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.

  61. avatar 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 🙂

  62. avatar 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

Leave a Reply

Themocracy iconWordPress Themes

css.php