-
Fix QPDFFormFieldObjectHelper::getChoices (fixes #1433)
-
Add additional sanity check during xref recovery
-
Enhance Windows build for local dev
-
* Remove dependency on `perl`, now only required for maintenance activities and running the test suite. * Exercise building qpdf and running executables from JetBrains CLion without any special additional tooling beyond pre-built external libraries. This replaces the `copy_dlls` with a powershell script, written mostly by ChatGPT, starting from the bash script below. The copy_dlls script had a lot of logic that was no longer needed. ```bash #!/bin/bash set -eo pipefail exe="$1" dest="$2" mingw_bin_dir="$3" if [[ $mingw_bin_dir == "" ]]; then echo >&2 "Usage: $(basename $0) exe dest mingw-bin-dir" exit 2 fi get_dlls() { objdump -p "$1" | grep 'DLL Name:' | awk '{print $NF}' } declare -a dlls dlls=($(get_dlls "$exe")) declare -A seen while [[ ${#dlls[@]} -gt 0 ]]; do i="${dlls[0]}" dlls=("${dlls[@]:1}") if [[ ${seen[$i]} == 1 ]]; then continue fi seen[$i]=1 full="$mingw_bin_dir/$i" if [[ -f "$full" ]]; then cp "$full" $dest/ dlls+=($(get_dlls "$full")) fi done ``` -
Return the display value if the choices entry is an array of strings rather than a single string. Test file is need-appearances.pdf modified to contain one array entry.
-
Do not copy duplicate pages during xref recovery.
-
During xref reconstruction reject unreasonably large objects
-
Reject objects containing arrays or dictionaries with more than 5000 elements. We are by definition dealing with damaged files, and such objects are extremely likely to be invalid or malicious.
-
Don't set tree root /Limits in NNTreeIterator::resetLimits (fixes #1435)
-
Bump version to 12.1.1
-
Fix android build issues (fixes #950)
-
Implement QPDFFormFieldObjectHelper::isChecked
-
Detect shared /Kids arrays in pages tree
-
API was defined, but .cc had no implementation. PDF 2.0 manual is surprisingly unclear as to on/off values, giving /Yes in an example and /Off in descriptive text as "not on".
-
In QPDF::getAllPagesInternal include the /Kids array in the visited set for loop detection. Fixes oss-fuzz issue 411312393
-
Refactor QPDFFormFieldObjectHelper ValueSetter::writeAppearance
-
Adjusting for under/overflow by repeated incrementing/decrementing can cause excessive runtime with invalid BBox coordinates. Fixes oss-fuzz issue 409905355.
-
Detection of fseeko on Android ABI level < 24 gets a false positive if _FILE_OFFSET_BITS is not set first.
-
Thanks to github user @cdosborn for the basic enhancement.
-
Fix logic around cleartext metadata (fixes #1368)
-
Only top-level XMP metadata is supposed to be left unencrypted. All other metadata is not treated specially.
-
Allow rotate as array in job JSON (fixes #1401)
-
Replace JetBrains-specific cmake profiles with CMakePresets.json
-
Deprecate QPDF::optimize
-
Plus sneak in some spell checks
-
Fix offsets in QPDF::resolveObjectsInStream warnings
-
CMake: correctly detect that timezone is not an int
-
As discussed in #1396.
-
Internally use -1 to represent a missing offset and provide a constructor overload that allows 0 as a valid offset. In QPDF::damagedPDF use the new overload.
-
Enhance --rotate usage message (fixes #1410)