Difference between revisions of "ZIM file format"

From openZIM
Jump to: navigation, search
(simplify file header)
Line 8: Line 8:
 
! Field Name !! Type !! Offset !! Length !! Description
 
! Field Name !! Type !! Offset !! Length !! Description
 
|-
 
|-
| rMagicNumber           || integer || 0 || 4 || Magic number to recognise the file format, must be "1439867043"
+
| magicNumber           || integer || 0 || 4 || Magic number to recognise the file format, must be 72173914
 
|-
 
|-
| rVersion               || integer || 4 || 4 || wp2006=2, wp2007=3, ZIM=4, version of the file format for backwards compatibility
+
| version               || integer || 4 || 4 || ZIM=4, version of the file format
 
|-
 
|-
| rCount                 || integer || 8 || 4 || total number of articles
+
| count                 || integer || 8 || 4 || total number of articles
 
|-
 
|-
|                         || integer || 12 || 4 || ''deprecated''
+
| indexPtrPos            || integer || 12 || 8 || position to the directory pointerlist
 
|-
 
|-
| rIndexPos               || integer || 16 || 8 || position of the article index
+
| mainPage               || integer || 16 || 4 || article index of main page or 0xffff if no main page
 
|-
 
|-
| rIndexLen              || integer || 24 || 4 || length of the article index
+
| layoutPage           || integer || 20 || 4 || article index of layout page or 0xffff if no layout page
|-
 
| headerLen                      || integer || 28 || 4 || length of header (currently 60)
 
|-
 
| rIndexPtrPos            || integer || 32 || 8 || position to the directory pointerlist
 
|-
 
| rIndexPtrLen           || integer || 40 || 4 || length of directory pointerlist (always 4*rCount)
 
|-
 
| rMainPage              || integer || 44 || 4 || article index of main page or 0xffff if no main page
 
|-
 
| rLayoutPage            || integer || 48 || 4 || article index of layout page or 0xffff if no layout page
 
|-
 
|                                  || integer || 52 || 8 || ''deprecated''
 
 
|}
 
|}
  

Revision as of 22:48, 2 March 2009

The ZIM file format is based on the Zeno File Format. It starts with a header, which is described here:

Header

length in byte, all types are littlendian

Field Name Type Offset Length Description
magicNumber integer 0 4 Magic number to recognise the file format, must be 72173914
version integer 4 4 ZIM=4, version of the file format
count integer 8 4 total number of articles
indexPtrPos integer 12 8 position to the directory pointerlist
mainPage integer 16 4 article index of main page or 0xffff if no main page
layoutPage integer 20 4 article index of layout page or 0xffff if no layout page

Each article in the zim file has a directory entry. Since the directory entry has a variable size, we have a index pointerlist, which is a list of 4-byte offsets, which points to the directory entries.

Directory Entries

Data

Namespaces

Namespaces seperate different types of data stored in the ZIM File Format.

They can be distinguished by prepending the article namespace before the article name in the URL path, eg. http://localhost/A/Articlename.

Namespace Description
- template data
A articles
I images, files - see Image Handling
J images, text - see Image Handling
U categories, text - see Category Handling
V categories, article list - see Category Handling
W deprecated - see Zeno File Format
X fulltext index
Y deprecated - see Zeno File Format
Z deprecated - see Zeno File Format