Ana Guerrero be124392a5 Accepting request 1318194 from devel:libraries:c_c++
- Enable Zopfli compression:
  still needs the user to manually set QPDF_ZOPFLI
- build: enable SHOW_FAILED_TEST_OUTPUT, WERROR
- rename package htmldoc to doc and move in the PDF documentation
- doc obsoletes htmldoc
- version update to 12.2.0
  12.2.0: May 4, 2025 
  - Upcoming C++ Version Change
    - This is expected to be the last minor release of qpdf to work
      with C++-17. We will be switching to C++-20 for 12.3.0.
  - Bug fixes
    - In ``QPDF::getAllPages`` detect shared ``/Kids`` arrays to avoid stack
      overflows in (specially constructed) damaged input files.
    - Fix severe performance issues in ``QPDFFormFieldObjectHelper`` with some
      (specially constructed) damaged input files.
    - Add missing ``QPDFFormFieldObjectHelper::isChecked`` implementation.
    - Fix bug in ``QPDFNameTreeObjectHelper`` / ``QPDFNumberTreeObjectHelper``.
      Under certain conditions tree insertions resulted in a ``/Range`` entry
      being written to the tree root node, which is not permitted. One of the
      possible consequences is that some readers would not recognize
      embedded / attached files.
    - In ``QPDFFormFieldObjectHelper::getChoices`` return the display string
      if an ``/Opt`` entry is a pair of export value and display string rather
      than a single string representing both values. Previously no value was
      returned if the entry was not a single string.
  - Other enhancements
    - More sanity checks have been added when files with damaged xref tables
      are recovered in order to avoid long runtimes and large memory use.
      Objects with with very large arrays or dictionaries (more than 5000
      elements) and duplicate pages are ignored as they are almost certainly
      invalid.
12.1.0: April 6, 2025
  - Bug fixes
    - In ``QPDF::isLinearized`` return false if the first object in the file is
      not a linearization parameter dictionary or its ``/L`` entry is not an
      integer object. Previously the method returned false if the first
      dictionary object was not a linearization parameter dictionary.
    - Fix parsing of object streams containing objects not separated by
      white-space. Pre-2020 editions of the PDF specification incorrectly
      stated that white-space was required between objects. qpdf relied on this
      when parsing object streams.
    - Fix two object stream error/warning messages that reported the wrong
      object id.
    - Accept an array for ``rotate`` in qpdf job JSON since it is a
      repeatable option.
    - When reading an encrypted PDF with cleartext metadata, only
      expect top-level /Metadata to be clear-text. When writing an
      encrypted PDF with cleartext metadata, only leave top-level
      unencrypted. qpdf has always incorrectly handled all
      ``/Metadata`` streams as special with cleartext metadata.
  - Library Enhancements
   - Add function ``Pl_DCT::make_compress_config`` to return a
      ``Pl_DCT::CompressConfig`` unique pointer to a
      ``CompressConfig`` from a ``std::function`` for a more modern
      configuration option.
  - CLI Enhancements
    - New :qpdf:ref:`--remove-structure` option to exclude the document
      structure tree from the output PDF.
    - New :qpdf:ref:`--jpeg-quality` option to set jpeg quality used
      with :qpdf:ref:`--optimize-images`.
  - Other enhancements
    - There have been further enhancements to how files with damaged xref
      tables are recovered.
  - Other changes
    - The ``QPDF::optimize`` method is believed to be not in use and has been
      deprecated. If you are relying on it please open a ticket_.
    - The parsing of object streams including the creation of error/warning
      messages and object descriptions has been refactored with some
      improvement both in runtime and memory usage.
    - There has been some refactoring of QPDFWriter including how object
      streams are written with some performance improvement.
  12.0.0: March 9, 2025
  - API breaking changes
    - The header file ``qpdf/QPDFObject.hh`` now generates an error if
      included. This is to prevent code that includes it from
      accidentally working because an old version is installed
      somewhere on the system. Instead of including that header,
      include ``<qpdf/Constants.h>``, and replace ``QPDFObject::ot_``
      with ``::ot_`` in your code.
    - The deprecated ``QPDFObjectHandle::replaceOrRemoveKey`` method has been
      removed since it was identical to ``QPDFObjectHandle::replaceKey``.
    - The deprecated ``JSON::checkDictionaryKeySeen`` function has been removed.
      If ``JSON::parse`` encounters duplicate keys the last value is silently
      accepted instead of throwing a runtime error. This is consistent with the
      JSON specification.
    - The deprecated versionless overload of ``QPDFObjectHandle::getJSON`` has
      been removed.
    - The deprecated ``Buffer`` copy constructor and assignment operator have
      been removed. ``Buffer`` copy operations are expensive as they always
      involve copying the buffer content. Use ``buffer2 = buffer1.copy();`` or
      ``Buffer buffer2{buffer1.copy()};`` to make it explicit that copying is
      intended.
    - ``QIntC.hh`` contained the typo ``substract`` in function names,
      which has been fixed to ``subtract``.
    - The protected ``QPDFObjectHelper::oh`` data member has been replaced with
      the new accessor method ``QPDFObjectHelper::oh()``.
    - Except for abstract classes and the exceptions listed below, sub-classing of
      qpdf classes is not supported. These classes were never designed to be used as a
      base class and will be made final in version 13. If you have a use case for
      extending one of these classes, please open a ticket_.
      Exceptions:
      - ``QPDFDocumentHelper``
      - ``QPDFObjectHelper``
    - Upcasting to ``QPDFObjectHelper`` and ``QPDFDocumentHelper`` is not supported. Their
      destructors will be made protected in version 13.
    - Catching of logic errors thrown as the result of using an uninitialized
      ``QPDFObjectHandle`` is not supported. In version 13 uninitialized object handles
      will be treated as immutable `shared null`_ objects. Using them will no longer throw
      any logic errors, but may where appropriate generate type warnings or exceptions.
  - CLI breaking Changes
    - To support the future introduction of sub-commands, the use of filenames without
      extension and path element as the first argument is no longer supported, and the
      result may change in the future. For example, ``qpdf check out.pdf`` currently
      copies the file ``check`` to ``out.pdf`` but may in future check ``out.pdf``.
      Use ``qpdf ./check out.pdf`` or ``qpdf -- check out.pdf`` instead.
  - Bug fixes
    - In object streams, ignore objects with invalid offset. Report objects with invalid
      id or offset.
  - Library Enhancements
    - ``QPDFObjectHandle`` supports move construction/assignment.
      This change is invisible to most developers but may break
      your code if you rely on specific behavior around how many
      references to a QPDFObjectHandle's underlying object exist. You
      would have to write code specifically to do that, so if you're not
      sure, then you shouldn't have to worry.
    - Most ``QPDFObjectHandle`` accessor methods are now ``const`` qualified.
    - ``QPDFObjectHandle`` and all object helper classes are now explicitly convertible
      to ``QPDFObjGen``, and therefore can be passed as parameter where a ``QPDFObjGen``
      is required. Redundant overloaded methods have been removed.
    - All object helper classes are now explicitly convertible to ``QPDFObjectHandle``.
  - Other Changes
    - The internal implementation of objects has been extensively refactored, using
      ``std::variant`` to eliminate one level of indirection. This has saved one shared pointer
      per object with some improvement both in runtime and memory usage. A new class
      ``BaseHandle`` has been added as common base class of both ``QPDFObjectHandle``
      and ``QPDFObjectHelper`` to provide common functionality appropriate for all
      object-handle-like classes such as the operator to convert to ``QPDFObjGen``.
      ``BaseHandle`` is an implementation detail and not directly usable by library users.
    - There has been significant refactoring of how qpdf internally iterates over
      arrays and dictionaries.
    - The internal mechanism used to check object sizes for binary
      compatibility between releases has been changed. As such, the
      ``CHECK_SIZES`` maintainer-only build option has been removed.

OBS-URL: https://build.opensuse.org/request/show/1318194
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/qpdf?expand=0&rev=82
2025-11-20 13:46:06 +00:00
2025-09-03 11:04:50 +00:00
2025-09-03 11:04:50 +00:00
2025-09-03 11:04:50 +00:00
2025-09-03 11:04:50 +00:00
2025-09-03 11:04:50 +00:00
Description
No description provided
19 MiB
Languages
Public Key 100%