Commit 395bc7f8252d2438c8ee8b26cc430f154e179d1a

Authored by Jay Berkenbilt
1 parent f7dd653d

Prepare for the discussion ticket on GitHub

Showing 1 changed file with 21 additions and 4 deletions
TODO-pages.md
1 1 # Pages
2 2  
3   -**This is a work in progress, but it's getting close. When this gets to the stage where it is
4   -starting to congeal into an actual plan, I will remove this disclaimer and open a discussion ticket
5   -in GitHub to work out details.**
6   -
7 3 This document describes a project known as the _pages epic_. The goal of the pages epic is to enable
8 4 qpdf to properly preserve all functionality associated with a page as pages are copied from one PDF
9 5 to another (or back to the same PDF). A secondary goal is to add more flexiblity to the ways in
10 6 which documents can be split and combined (flexible assembly).
11 7  
  8 +This is a work in progress. As implementation proceeds, details will become more solid. Comments are
  9 +encouraged. Please make comments in the [QPDF pages epic
  10 +discussion](https://github.com/qpdf/qpdf/discussions/1104). As ideas are refined, they will be
  11 +updated in this document.
  12 +
  13 +# Tasks
  14 +
  15 +This a breakdown of work. It is near the top of the file for easy access but doesn't make sense
  16 +without reading the rest of the file.
  17 +
  18 +* Issue #939 (`--set-page-labels`) is unblocked and can be done at any time.
  19 +* Create `QPDFAssembler` and incrementally move functionality from `QPDFJob` into it.
  20 +* Create `QPDFSplitter` to use `QPDFAssembler`. Write a section in the manual describing how they
  21 + work, but leave the detailed API documentation in the header files. Model after how `QPDFJob` is
  22 + documented.
  23 +* Break down remaining work, to include coming up with a mechanism for tracking destinations and
  24 + creating helper classes for other document-level operations, then incrementally adding support for
  25 + each idea. Keep the manual updated as we go.
  26 +
  27 +# Design and Background
  28 +
12 29 Terminology:
13 30 * _Page-level data_: information that is contained within objects reachable from the page dictionary
14 31 without traversing through any `/Parent` pointers
... ...