2
1
mirror of https://github.com/qpdf/qpdf.git synced 2025-01-23 07:08:30 +00:00

Update TODO-pages with comments from #1104

This commit is contained in:
Jay Berkenbilt 2024-01-05 08:49:12 -05:00
parent 395bc7f825
commit 1921e44ca7

View File

@ -146,7 +146,9 @@ Broadly, the above has to be modified in the following ways:
* The entire create QPDF logic will move into `QPDFAssembler`. * The entire create QPDF logic will move into `QPDFAssembler`.
* `QPDFAssembler`'s API will allow using an arbitrary QPDF as an input rather than having to start * `QPDFAssembler`'s API will allow using an arbitrary QPDF as an input rather than having to start
with a file. That makes it possible to do arbitrary work on the PDF prior to passing it to with a file. That makes it possible to do arbitrary work on the PDF prior to passing it to
`QPDFAssembler`. `QPDFAssembler`. The API contract will state that, if an existing `QPDF` is used as the primary
input, the same `QPDF` will be returned. Effectively, `QPDFAssembler` will modify the `QPDF` in
place.
* `QPDFAssembler` and `QPDFSplitter` may need a C API, or perhaps C users will have to work through * `QPDFAssembler` and `QPDFSplitter` may need a C API, or perhaps C users will have to work through
`QPDFJob`, which will expose nearly all of the functionality. `QPDFJob`, which will expose nearly all of the functionality.
@ -184,6 +186,11 @@ to manage sequencing and destination tracking as well as to provide a future-pro
allow developers to automatically benefit from additional document-level support as it is added to allow developers to automatically benefit from additional document-level support as it is added to
qpdf. qpdf.
Other notes:
* Per jbarlow, raw pointers are hard to work with in pybind11. Use references or shared pointers
instead for fluent interfaces.
## Flexible Assembly ## Flexible Assembly
This section discusses modifications to the command-line syntax to make it easier to add flexibility This section discusses modifications to the command-line syntax to make it easier to add flexibility
@ -407,6 +414,7 @@ Document-level structures to merge:
* AcroForm * AcroForm
* StructTreeRoot * StructTreeRoot
* Page: StructParents * Page: StructParents
* See jbarlow's comments in #1104 for additional notes
* MarkInfo (see 14.7 - Logical Structure, 14.8 Tagged PDF) * MarkInfo (see 14.7 - Logical Structure, 14.8 Tagged PDF)
* SpiderInfo * SpiderInfo
* Page: ID * Page: ID
@ -557,3 +565,13 @@ gh search issues label:pages --repo qpdf/qpdf --limit 200 --state=open
* There is some helpful discussion in #343 including * There is some helpful discussion in #343 including
* Preserving open/closed status * Preserving open/closed status
* Preserving javascript actions * Preserving javascript actions
# Other use cases
* Other ways to specify pages besides numeric range
* all pages reachable from a section of the outline hierarchy
* something based on threads or document structure
* selection based on page labels
* Placement for composition, overlay, underlay
* Scale the smaller page up to the size of the larger page
* Center the smaller page horizontally and bottom-align the trim boxes