Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

7.7.3. Implement Page Tree #153

Open
Tracked by #37
victor-pogor opened this issue Mar 12, 2023 · 0 comments
Open
Tracked by #37

7.7.3. Implement Page Tree #153

victor-pogor opened this issue Mar 12, 2023 · 0 comments

Comments

@victor-pogor
Copy link
Member

victor-pogor commented Mar 12, 2023

Context

According to the ISO 32000-1:2008 specification, section 7.7.3, The pages of a document are accessed through a structure known as the page tree, which defines the ordering of pages in the document.

The tree contains nodes of two types — intermediate nodes, called page tree nodes (light blue), and leaf nodes, called page objects (purple).

graph TD;
    Root[Root Page Tree node]:::tree_node -->ChildNode1[Intermediate Node 1]:::tree_node;
    Root[Root Page Tree node]-->ChildNode2[Intermediate Node 2]:::tree_node;
    ChildNode1-->Page1[Page1]:::tree_leaf
    ChildNode1-->Page2[Page2]:::tree_leaf
    ChildNode2-->Page3[Page3]:::tree_leaf
    ChildNode2-->Page4[Page4]:::tree_leaf
    classDef tree_node fill:#03a9f4
    classDef tree_leaf fill:#673ab7
Loading

Example of Page Tree:

2 0 obj
  << /Type /Pages
     /Kids [ 4 0 R
            10 0 R
            24 0 R
          ]
     /Count 3
  >>
endobj

4 0 obj
  << /Type /Page
    …Additional entries describing the attributes of this page…
  >>
endobj

10 0 obj
  << /Type /Page
    …Additional entries describing the attributes of this page…
  >>
endobj

24 0 obj
  << /Type /Page
    …Additional entries describing the attributes of this page…
  >>
endobj

Page Tree node dictionary

  1. Page Tree dictionary keys

    Key Type Deps
    Type name
    Parent dictionary
    Kids array
    Count integer
  2. Inheritable attributes 7.7.3.4 Implement inheritance of Attributes #65

    Key Type Deps
    Resources dictionary 7.8.3. Implement Base Resource Dictionary #67
    MediaBox rectangle 7.9.5. Implement Rectangle #68
    14.11.2. Implement Page Boundaries #69
    CropBox rectangle 14.11.2. Implement Page Boundaries #69
    Rotate integer

Page Object dictionary

  1. Page Object dictionary keys
    Key Type Deps
    Type name
    Parent dictionary
    LastModified date 14.5. Implement Page-Piece Dictionary #57
    7.9.4. Implement Date #66
    Resources dictionary 7.8.3. Implement Base Resource Dictionary #67
    MediaBox rectangle 7.9.5. Implement Rectangle #68
    14.11.2. Implement Page Boundaries #69
    CropBox rectangle 14.11.2. Implement Page Boundaries #69
    BleedBox rectangle 14.11.2. Implement Page Boundaries #69
    TrimBox rectangle 14.11.2. Implement Page Boundaries #69
    ArtBox rectangle 14.11.2. Implement Page Boundaries #69
    BoxColorInfo dictionary 14.11.2. Implement Page Boundaries #69
    Content stream or array 7.8.2. Implement Content Streams #70
    7.2. Implement Lexical Conventions #71
    Rotate integer
    Group dictionary 11.4.7. Implement Page Group #72
    Thumb stream 12.3.4. Implement Thumbnail Images #74
    B array 12.4.3. Implement Articles #46
    Dur number 12.4.4. Implement Presentations #75
    Trans dictionary 12.4.4. Implement Presentations #75
    Annots array 12.5. Implement Annotations #76
    AA dictionary 12.6.3. Implement Trigger Events | #48
    Metadata stream 14.3.2. Implement Metadata Streams #51
    PieceInfo dictionary 14.5. Implement Page-Piece Dictionary #57
    StructParents integer 14.7.4. Implement Structure Content #77
    ID byte string 14.10.6. Implement Object Attributes Related to Web Capture #78
    PZ SeparationInfo 14.10.6. Implement Object Attributes Related to Web Capture #78
    SeparationInfo dictionary 14.11.4. Implement Separation Dictionary #79
    Tabs name
    TemplateInstantiated name 12.7.6. Implement Named Pages #80
    PresSteps dictionary 12.4.4. Implement Presentations #75
    UserUnit number
    VP dictionary
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: 🆕 New
Development

No branches or pull requests

1 participant