Commit 395bc7f8252d2438c8ee8b26cc430f154e179d1a
1 parent
f7dd653d
Prepare for the discussion ticket on GitHub
Showing
1 changed file
with
21 additions
and
4 deletions
TODO-pages.md
| 1 | # Pages | 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 | This document describes a project known as the _pages epic_. The goal of the pages epic is to enable | 3 | This document describes a project known as the _pages epic_. The goal of the pages epic is to enable |
| 8 | qpdf to properly preserve all functionality associated with a page as pages are copied from one PDF | 4 | qpdf to properly preserve all functionality associated with a page as pages are copied from one PDF |
| 9 | to another (or back to the same PDF). A secondary goal is to add more flexiblity to the ways in | 5 | to another (or back to the same PDF). A secondary goal is to add more flexiblity to the ways in |
| 10 | which documents can be split and combined (flexible assembly). | 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 | Terminology: | 29 | Terminology: |
| 13 | * _Page-level data_: information that is contained within objects reachable from the page dictionary | 30 | * _Page-level data_: information that is contained within objects reachable from the page dictionary |
| 14 | without traversing through any `/Parent` pointers | 31 | without traversing through any `/Parent` pointers |