-
…y management and eliminate redundant `dynamic_cast` logic.
-
…, improving encapsulation and memory management. Remove the now redundant `pushMD5Pipeline` method and streamline MD5 activation.
-
…line `linearization pass1` logic when writing pass1 file
-
…te encryption handling
-
…mplified pipeline stack management in `QPDFWriter`.
-
…ify pipeline stack management
-
Encapsulated pipeline stack management into a dedicated `Pl_stack` class within `QPDFWriter::Members`. Reorganized related methods to streamline and simplify initialization and activation of pipelines, removing redundant code.
-
…dundant normalization and string unparse logic across multiple write calls.
-
…ndling, leverage `std::string_view`, and streamline QDF indent logic.
-
… overloads, streamline QDF handling, and simplify string and trailer writes.
-
…ased logic in `setEncryptionMinimumVersion`, and reduce redundancy across `QPDFWriter` methods.
-
…ption dictionary generation, and reduce redundancy in encryption handling logic.
-
… encryption handling, and reduce redundancy across methods.
-
…`, simplify method signatures, and centralize logic in `QPDF::EncryptionData` for improved maintainability.
-
…ng in method parameters, and simplify encryption logic for improved maintainability and reduced redundancy.
-
…uce redundancy, improve maintainability, and streamline parameter handling.
-
…ling, and improve maintainability.
-
Reorganized and cleaned up the logic for managing ADBE entries in the /Extensions dictionary, improving clarity and maintainability. Adjusted object shallow copying to avoid unnecessary copying.
-
Replaced raw pointer defaults (e.g., `0`) with `nullptr` for better readability and type-safety. Simplified object initializer syntax using uniform initialization `{}`. These changes enhance code maintainability and ensure modern C++ standards compliance. -
Simplified checks for empty containers and strings across the codebase using the `.empty()` method. This improves code readability and adheres to best practices for checking emptiness.
-
Converted multiple occurrences of `count()` to `contains()` throughout the codebase where the goal was to check key existence in containers. This improves code readability and aligns with modern C++ practices, particularly with C++20, making the intent more explicit and potentially aiding performance.
-
qpdf permits replacing standard stream filters with user provided filters. #1457 incorrectly removed that option.
-
Only top-level XMP metadata is supposed to be left unencrypted. All other metadata is not treated specially.
-
Rather than converting each (sequential) object id to a string, generate a string for the first id and than increment the digits in the string.
-
... and use it in QPDFWriter and QPDF::generateHintStream.
-
Also, remove redundant QPDFWriter::writeBuffer.
-
Also, - use Pl_Discard when only checking whether stream is filterable - get last char directly from output string
-
Cache output of pass 1.
-
Refactor xref table reconstruction (Fixes #1362)
-
Split reconstruction into three passes - scanning of input for objects and trailer, insertion of objects into the xref table, and loading the trailer. This allows insertion to take place in the usual reverse order and removes the need for a separate insertReconstructedXrefEntry method. It also allows trailer to be tried from most recent to oldest. Ignore any found trailers without /Root entry.