View Single Post
Old 04-28-2009, 09:26 PM   #17
nrapallo
GuteBook/Mobi2IMP Creator
nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.nrapallo ought to be getting tired of karma fortunes by now.
 
nrapallo's Avatar
 
Posts: 2,958
Karma: 2530691
Join Date: Dec 2007
Location: Toronto, Canada
Device: REB1200 EBW1150 Device: T1 NSTG iLiad_v2 NC Device: Asus_TF Next1 WPDN
Quote:
Originally Posted by user_none View Post
The pdb header is documented on the wiki. Within the pdb container is the a header for the ereader format. It is record 0 of the pdb file. The ereader header is a 132 byte package that defines certain values regarding to the ereader format within the pdb container. The 132 byte ereader header is not defined in the wiki and I have not been able to find it defined fully anywhere.
If you know how to read Perl code, this may help http://cpansearch.perl.org/src/AZED/...ols/EReader.pm . It is part of EBook-Tools by Zed Pobre.

Here is an excerpt of the ParseRecord0 code:
Code:
    my $version;     # EReader version
                     # Expected values are:
                     # 02 - PalmDoc Compression
                     # 10 - Inflate Compression
                     # >255 - data is in Record 1
    my $headerdata;  # used for holding temporary data segments
    my $offset;
    my %header;
    my @list;

    debug(1,"DEBUG: EReader Record 0 is ",length($data)," bytes");
    $headerdata = substr($data,0,16);
    @list = unpack('nnNnnnn',$headerdata);
    $header{version}        = $list[0]; # Bytes 0-1
    $header{unknown2}       = $list[1]; # Bytes 2-3
    $header{unknown4}       = $list[2]; # Bytes 4-7
    $header{unknown8}       = $list[3]; # Bytes 8-9
    $header{unknown10}      = $list[4]; # Bytes 10-11
    $header{nontextoffset}  = $list[5]; # Bytes 12-13
    $header{nontextoffset2} = $list[5]; # Bytes 14-15

    $headerdata = substr($data,16,16);
    @list = unpack('nnNnnnn',$headerdata);
    $header{unknown16}    = $list[0];
    $header{unknown18}    = $list[1];
    $header{unknown20}    = $list[2];
    $header{unknown22}    = $list[3];
    $header{unknown24}    = $list[4];
    $header{footnoterecs} = $list[5];
    $header{sidebarrecs}  = $list[6];

    $headerdata = substr($data,32,24);
    @list = unpack('nnnnnnnnnnnn',$headerdata);
    $header{bookmarkoffset}   = $list[0];
    $header{unknown34}        = $list[1];
    $header{nontextoffset3}   = $list[2];
    $header{unknown38}        = $list[3];
    $header{imagedataoffset}  = $list[4];
    $header{imagedataoffset2} = $list[5];
    $header{metadataoffset}   = $list[6];
    $header{metadataoffset2}  = $list[7];
    $header{footnoteoffset}   = $list[8];
    $header{sidebaroffset}    = $list[9];
    $header{lastdataoffset}   = $list[10];
    $header{unknown54}        = $list[11];

Last edited by nrapallo; 04-28-2009 at 09:30 PM.
nrapallo is offline   Reply With Quote