PDB libraries
PalmDOC is simple enough that most programs implement it directly: parse the 78-byte header and record list, then decompress each text record. These libraries do one or both parts:
| Language | Library | Read | Write | Notes |
|---|---|---|---|---|
| C/C++ | pilot-link (libpisock) | yes | yes | PDB/PRC container; LGPL-2.0; no PalmDOC decompression |
| Go | writingtoole/pdb | yes | yes | PDB container plus PalmDOC LZ77; BSD-3-Clause |
| Rust | palmdoc-compression | yes | yes | PalmDOC LZ77 compression only; MIT |
No maintained PalmDOC library exists for C#, Java, Python, Ruby or PHP. In Python, calibre has complete readers and writers for PalmDOC, eReader, zTXT and Plucker (src/calibre/ebooks/pdb, GPL-3.0) but it isn’t published as a package: use its ebook-convert command (ebook-convert book.pdb book.epub) or port the short decompression routine from the PalmDOC page.
By language#
- PDB libraries for C/C++ Read and write Palm Database (PDB) files in C with libpisock from pilot-link, and decompress PalmDOC eBook records.
- PDB libraries for Go Read and write Palm Database (PDB) files and PalmDOC eBooks in Go with the writingtoole/pdb package and its lz77 subpackage.
- PDB libraries for Rust PalmDOC compression in Rust with the palmdoc-compression crate, plus how to parse the Palm Database (PDB) container yourself.