eReader is the name for a particular program used to read a Palm based eBook format. It is also used by many people as a generic term to indicate eReading devices. This page covers the Palm Reader program. If you were really looking for hardware Readers go to E-book devices.
eReader is the latest name for Palm Reader. It is a viewer for electronic documents on PalmOS and other platforms and devices. eReader is also used by many people to indicate eReading devices. If you were really looking for hardware Readers try E-book devices. Barnes and Noble purchased Fictionwise and thus eReader software and uses this as their eBook format on their web site and the new Nook eBook reader.
Palm Reader was originally Peanut Reader, a product of early ebook publisher Peanut Press. Palm bought Peanut Press and renamed them the Palm Digital Media division. The product was renamed Palm Reader, and a freeware version was bundled with most PalmOS devices as an optional install, or included in device ROM.
Palm subsequently sold the Digital Media division to Motricity, Inc., who renamed the product eReader, and created versions for Windows Mobile devices, Windows and Mac platforms. As of Jan 09, 2008, Fictionwise acquired eReader from Motricity. Barnes and Noble purchased Fictionwise as of Mar 05, 2009 which includes eReader.
Like PalmReader, eReader is available in freeware and Pro versions. Currently the Pro version is released free as well on some platforms and for a reduced price on others. The additional features include downloadable font support and dictionary look up. The same executable is used in both the free and pro versions with the pro version reverting to basic support after a trial period. Most all versions now include the Pro version for free. This is also available from Barnes and Noble for free as their eBook format, as the now own eReader and Fictionwise.
eReader files are produced from source text in Palm Markup Language format. eReader files in PNRd format can be produced by the older MakeBook and DropBook programs, or by the shareware eBook Studio. They will generally have a .pdb extension.
eReader is capable of displaying PalmDOC files and ots navtive PML (Palm Markup Language) formatted files. Documents may be in device RAM, or may be on an expansion card in the /Palm/Launcher or /Palm/Books directories on a PalmOS Device. eReader is available on a wide variety of platforms.
In addition, eReader supports Digital Rights Management, and can be used to view downloaded commercial titles. These titles are encrypted, and use a key based on the purchaser's credit card number to decrypt for viewing. They have a temporary license capability that can be used by libraries and for sharing eBooks.
Two other data files are associated with this reader: Ex and Kx. These letters are appended to the file name (just ahead of the extension) and store metadata.
 Platform Support
eReader is supported on Android, Blackberry, PalmOS, Windows Mobile, Symbian OS, Windows, Linux, MacOS X, iPhone and one optimized for Windows on OQO. See http://www.ereader.com/ereader/software/browse.htm
 Supported formats
- PalmDOC - like almost all readers that have their origin on Palm devices.
- PDB - Standard Palm extension. Fictionwise uses -ER.PDB to help distinguish this from other PDB formats. Others sometimes use the term PML to distinguish this format.
 Content Creation
The easiest method to make content in this format is to use eBook Studio which is available for Windows and MacOS. If you are willing you learn PML, Palm Markup Language, you can create files in a text editor and then drag them to Dropbook or use a Java version called Makebook. Dropbook is also available on Windows, MacOS, and Unix. Makebook is no longer supported but will run anywhere Java is supported. Dropbook and Makebook are free.
If you include a file called cover.png it will be recognized as a cover and displayed as such.
odt2pml is a macro to export an OpenOffice Writer document to Palm eReader. It creates a PML file for use with dropbook. Another Macro, this one for word, called PublisheBook allows using SaveAs to make a eReader PML file.
Adobe Framemaker includes a convert option supplied by the Webworks connection.
Book Designer can also be used to create these kinds of books. It also uses Dropbook but includes a really old copy. Replace the copy in the install directory with the latest version for better results.
 Palm Markup Language
Palm Markup Language is the source language used to create documents for eReader. Files in this format are then compiled for use with the reader. The following table specifies the Palm Markup Language commands, and what they do. Looking at the table provides insight into what can be done with the PNPd format which Fictionwise calls -ER.PDB.
|\x||New chapter; also causes a new page break. Enclose chapter title (and any style codes) with \x and \x|
|\Xn||New chapter, indented n levels (n between 0 and 4 inclusive) in the Chapter dialog; doesn't cause a page break. Enclose chapter title (and any style codes) with \Xn and \Xn|
|\Cn="Chapter title"||Insert "Chapter title" into the chapter listing, with level n (like \Xn). The text is not shown on the page and does not force a page break. This can sometimes be useful to insert a chapter mark at the beginning of an introduction to the chapter, for example.|
|\c||Center this block of text; close with \c on beginning of line|
|\r||Right justify text block; close with \r on beginning of line|
|\i||Italicize block; close with \i|
|\u||Underline block; close with \u|
|\o||Overstrike block; close with \o|
|\v||Invisible text; close with \v (can be used for comments)|
|\t||Indent block. Start at beginning of a line, close with \t at end of a line|
|\T="50%"||Indents the specified percentage of the screen width, 50% in this case. If the current drawing position is already past the specified screen location, this tag is ignored.|
|\w="50%"||Embed a horizontal rule of a given percentage width of the screen, in this case 50%. This tag causes a line break before and after it. The rule is centered. The percent sign is mandatory.|
|\n||Switch to the "normal" font, which is specified by the user|
|\s||Switch to stdFont; close with \s to revert to normal font|
|\b||Switch to boldFont; close with \b to revert to normal font (deprecated; use \B instead)|
|\l||Switch to largeFont; close with \l to revert to normal font|
|\B||Mark text as bold. Unlike the \b tag, \B doesn't change the font, so you can have large bold text. You cannot mix \b and \B in the same PML file.|
|\Sp||Mark text as superscript. Should not be mixed with other styles such as bold, italic, etc. Enclose superscripted text with \Sp.|
|\Sb||Mark text as subscript. Should not be mixed with other styles such as bold, italic, etc. Enclose subscripted text with \Sb.|
|\k||Make enclosed text into small-caps; close with \k. Any characters enclosed in \k tags (including those with accents) are made uppercase and are rendered at a smaller point size than a regular uppercase character.|
|\\||Represents a single backslash|
|\aXXX||Insert non-ASCII character whose Windows-1252 code is decimal XXX. See the PML character table for details.|
|\UXXXX||Insert non-ASCII character whose Unicode code is hexadecimal XXXX. See the Extended PML character table for details.|
|\m="imagename.png"||Insert the named image. See the section on Images below.|
|\q="#linkanchor"Some text\q||Reference a link anchor which is at another spot in the document. The string after the anchor specification and before the trailing \q is underlined or otherwise shown to be a link when viewing the document.|
|\Q="linkanchor"||Specify a link anchor in the document.|
|\-||Insert a soft hyphen. A soft hyphen shows up only if it is necessary to break a word across a line.|
|\Fn="footnote1"1\Fn||Link the "1" to a footnote whose name is footnote1, tagged at the end of the PML document. See the section on Footnotes and Sidebars below.|
|\Sd="sidebar1"Sidebar\Sd||Link the "Sidebar" text to a sidebar whose name is sidebar1, tagged at the end of the PML document. See the section on Footnotes and Sidebars below.|
|\I||Mark as a reference index item. Enclose index item (and any style codes) with \I and \I. See Creating Dictionaries for more information.|
The extended \UXXXX characters can be compared to other readers at special characters
The following rules are intended to guarantee that images in your eBook will be viewable on all platforms that eReader runs on.
On low-resolution Palm OS handhelds, an image wider than 158 pixels or taller than 148 pixels will be represented in the text by a thumbnail that the user can tap to view the entire image. Images smaller than 158 x 148 will be presented in-line with the text.
On high-resolution Palm OS handhelds (those having screens of 320x320 pixels or more), images smaller than 158 by 148 pixels will be pixel-doubled. Images larger than 158x148 may be shown in-line with the text, if they will fit on the screen.
On non-Palm OS platforms, small images will be scaled up appropriately. Large images will be scaled down to fit on the page; in this case the user can tap on the image to view the entire image and zoom in or out.
For DropBook to find the image, it must be present in a directory whose name matches that of the PML text file. For example, if "pmlsample.txt" contains a reference to an image called "intro.png", then there must be a directory called "pmlsample_img" that contains intro.png. The directory's name is the name of the PML file (without the .txt extension) with "_img" appended.
Images must be in PNG format and cannot be filtered or interlaced. Image depth must be 8 bits or less. Any color table may be used for color images.
Image files must be less than or equal to 65505 bytes in size, since they are embedded into the .pdb format of the book; Palm database records are limited to 65505 bytes in length. Since images are compressed, the actual image displayed by the reader may be much larger than 64K.
Any or all of these restrictions may eventually be removed.
DropBook normally presents a dialog in which the title and other Metadata information for the eBook may be specified. This information may be embedded in the PML file instead.
To specify the eBook title as it will appear in the Open dialog on the handheld, place a block of invisible comment text at the beginning of the file using \v tags. Inside this comment block, put the string TITLE="My eBook", where "My eBook" is replaced with the name of your eBook. It should look something like this:
\vTITLE="Palm Sample Document"\v
You can also specify the author using the AUTHOR meta-tag, the publisher with PUBLISHER, copyright information with COPYRIGHT, and the eBook ISBN with EISBN. A fully-specified set of meta-information might appear in PML as:
\vTITLE="Palm Sample Document" AUTHOR="Sam Morgenstern" PUBLISHER="eReader.com" EISBN="X-XXXX-XXXX" COPYRIGHT="Copyright \a169 2004 by Sam Morgenstern"\v
Cover art: If an image named "cover.png" is present in the eBook, it is assumed to be the cover art for the eBook. See the rules for images for sizing and other information.
 Footnotes and Sidebars
Footnotes and Sidebars are specified with an XML-like syntax at the end of the PML document. For example,
<sidebar id="sidebar1"> Here's some \itext\i for a sidebar. </sidebar>
would specify the sidebar to be displayed when the user taps on a sidebar link in the text that was specified using the \Sd tag.
Any text or PML placed after the first footnote or sidebar is ignored as part of the book text.
Sidebars and footnotes can include most PML features, but there are some PML tags that cannot be used inside of a sidebar or footnote.
- Chapters \x, \X, \C
- Links \q, \Q
- Footnotes \Fn
- Sidebars \Sd
See the palmsample.txt file (included with Dropbook) for examples of how to use many of the PML tags.
 Creating Dictionaries
The \I PML tag is used to delimit an index item. Example: \Iaardvark\I
Each entry must start in the normal font. If DropBook shows an error beginning with "No styles permitted before...", there is probably a missing end style tag before the text shown in the error message.
Links, chapters and other PML structures are not permitted in dictionaries. Images, however, are.
A special dictionary entry, "(Front matter)" is shown before other entries in the list of entries, and should be used to include pronunciation symbols and other front matter.
Note that use of dictionaries requires eReader Pro.
 File Format
The eReader format is contained within a Palm Database Format container. The first record in the container is the eReader header which contains information about what type of data is in the rest of the sections as well as other information. All subsequent sections contain data such as compressed text, images, footnotes, sidebars, bookmarks...
 PDB record 0, eReader header.
This is only for 132 byte header files created by Dropbook. 202 byte header files created by Makebook is unknown.
|0-2||compression||Specifies compression and drm. 2 = palmdoc, 10 = zlib. 260 and 272 = DRM|
|2-6||unknown||Value of 0 is used|
|6-8||encoding||Always 25152 (0x6240). All text must be encoded as Latin-1 cp1252|
|8-10||Number of small pages||The number of small font pages. If page index is not build in then 0.|
|10-12||Number of large pages||The number of large font pages. If page index is not build in then 0.|
|12-14||Non-Text record start||The location of the first non text records. record 1 to this value minus 1 are all text records|
|14-16||Number of chapters||The number of chapter index records contained in the file|
|16-18||Number of small index||The number of small font page index records contained in the file|
|18-20||Number of large index||The number of large font page index records contained in the file|
|20-22||Number of images||The number of images contained in the file|
|22-24||Number of links||The number of links contained in the file|
|24-26||Metadata avaliable||Is there a metadata record in the file? 0 = None, 1 = There is a metadata record|
|26-28||Unknown||Value of 0 is used|
|28-30||Number of Footnotes||The number of footnote records in the file|
|30-32||Number of Sidebars||The number of sidebar records in the file|
|32-34||Chapter index record start||The location of chapter index records. If there are no chapters use the value for the Last data record.|
|34-36||2560||Magic value that must be set to 2560|
|36-38||Small page index start||The location of small font page index records. If page table is not built in use the value for the Last data record.|
|38-40||Large page index start||The location of large font page index records. If page table is not built in use the value for the Last data record.|
|40-42||Image data record start||The location of the first image record. If there are no images use the value for the Last data record.|
|42-44||Links record start||The location of the first link index record. If there are no links use the value for the Last data record.|
|44-46||Metadata record start||The location of the metadata record. If there is no metadata use the value for the Last data record.|
|46-48||Unknown||Value of 0 is used|
|48-50||Footnote record start||The location of the first footnote record. If there are no footnotes use the value for the Last data record.|
|50-52||Sidebar record start||The location of the first sidebar record. If there are no sidebars use the value for the Last data record.|
|52-54||Last data record||The location of the last data record|
|54-132||Unknown||Value of 0 is used|
Note: All values are in 2 byte increments. All bytes in the table that have a range larger than 2 can be broken into 2 byte segments and have different values set for each grouping.
* Starting with Dropbook 1.5.2 this value became 25152.
 Records Order
Though the order of this sections is described in eReader header, DropBook makes the following order:
- eReader Header
- Compressed text
- Small font page index
- Large font page index
- Chapter index
- Links index
- (Extrapolation: there should be one more record type here though yet uncovered what it might be).
- Sidebar records
- Footnote records
- Text block size record
- "MeTaInFo\x00" word record
 Text Records
All text records use cp1252 encoding (although eReader documents talk about UTF-8 as well). Their total compressed size is unknown however, anything below 3560 Bytes is known to work. The text will be either zlib or palmdoc compressed. Use the compression value from the eReader header to determine which.
Starting with DropBook 1.6.0 text is divided into 8KB (8192 bytes) blocks trimming the end to the closest space character and then being compressed. Earlier version of DropBook 1.5.2 tries to behave the same way, though sometimes it trims the block in unexpected place.
 Chapter Index Records
Each chapter record corresponds to 1 chapter and points at the place in the book. Chapter record takes a form of 'offset name\x00' First 4 bytes are offset of the original pml file where the chapter index points to (offset of the \x|\X?|\C? tags). Then without a space goes a name of a chapter in chapter index. It should contain only text, all formatting tags should be removed. \U and \a tags are not permitted in chapter name. To maintain sub-chapters 4*n spaces (\x20) are added to the beginning of the name, where "n" is level of chapter: 0 for \x tag and N for \CN="" and \XN tags. And then an ending \x00 symbol.
 Image Records
Image records must be smaller than 65505 Bytes. They must also be 8bit PNG images.
An image record takes the form 'PNG name\x00... image_data'
|0-4||PNG||There must be a space after PNG.|
|4-36||image name.||The image name must be 32 exactly 32 Bytes long. Pad the right side of the name with \x00 characters for names shorter than 32 characters.|
|58-60||width||Width of an image|
|60-62||height||Height of an image|
|62-?||The image data||raw image data in 8 bit PNG format|
Note: DropBooks seems to change something in png raw data. Like reencoding or something, but plain insertion of png image there still works.
 Links Records
Links records are constructed the same way as chapter ones. Each link anchor record corresponds to 1 link anchor and points at the place in the book. Link record takes a form of 'offset name\x00' First 4 bytes are offset of the original pml file where the link anchor points to (offset of the \Q tag). Then without a space goes a name of a link anchor. It should contain only text, all formatting tags should be removed. \U and \a tags are not permitted in link anchor name. And then an ending \x00 symbol.
 Footnote Records
The first footnote record is a \x00 separated list of footnote ids. All subsequent footnote records are the footnote text corresponding to the id's position in the list. Footnote text is compressed in the same manner as normal text records
footnote section 1 = 'notice1\x00notice2\x00notice3\x00'
footnote section 2 = 'Text for notice 1'
footnote section 3 = 'Text for notice 2'
footnote section 4 = 'Text for notice 3'
Starting with Dropbook 1.5.2 first record looks a bit different. It is sequence of \x00\x01 then 1 byte of footnote id length, then footnote id then \x00.
footnote section 1 = '\x00\x01\x07notice1\x00\x00\x01\x0Afootnote10\x00'
 Sidebar Records
The first sidebar record is a \x00 separated list of sidebar ids. All subsequent sidebar records are the sidebar text corresponding to the id's position in the list. Sidebar text is compressed in the same manner as normal text records
sidebar section 1 = 'notice1\x00notice2\x00notice3\x00'
sidebar section 2 = 'Text for notice 1'
sidebar section 3 = 'Text for notice 2'
sidebar section 4 = 'Text for notice 3'
Starting with Dropbook 1.5.2 first record looks a bit different. It is sequence of \x00\x01 then 1 byte of sidebar's id length, then sidebar's id then \x00.
sidebar section 1 = '\x00\x01\x07notice1\x00\x00\x01\x09sidebar10\x00'
 Metadata Record
\x00 separated list of string.
Metadata takes the form:
title\x00 author\x00 copyright\x00 publisher\x00 isbn\x00
Gibraltar Earth\x00Michael McCollum\x001999\x00Sci Fi Arizona\x001929381255\x00
The metdata record is always followed by a record which contains 'MeTaInFo\x00'
Note: Starting with DropBook 1.5.2 'MeTaInFo\x00' is not following Metadata Record. It is a separate record that ends the file and there are some more records between Metadata record and 'MeTaInFo\x00' record.
 Text Sizes Record
There is a special record that contains the initial size of all text blocks before compression. It is just a sequence of 2-byte blocks which are containing the sizes.
Note: By this we can judge that theoretical maximum of initial block size is 65535 bytes.