-
The original QPDF is only required now when the source QPDFObjectHandle is a stream that gets its stream data from a QPDFObjectHandle::StreamDataProvider.
-
This is in preparation of being able to pipe a stream's data without keeping a copy of its containing qpdf object.
-
Use this instead of QPDF* as a map key for object_copiers.
-
Don't attempt to pass data through a JPEG filter if we are unable to filter the data.
-
It was too long for some compilers.
-
Some of the images were supposed to have no filter, but somewhere along the line, they ended up with /FlateDecode, most likely because qpdf rewrote the file without having --compress-streams=n specified. If this error is repeated, it will cause a test failure.
-
Instead of calling assert for problems found during checking linearization data, throw an exception which is later caught and issued as an error. Ideally we would handle errors more robustly, but this is still a significant improvement.
-
On certain operations, such as iterating through all objects and adding new indirect objects, walk through the entire object structure and explicitly resolve any indirect references to non-existent objects. That prevents new objects from springing into existence and causing the previously dangling references to point to them.