I have released qpdf 6.0.0. This is 5.2.0 but with a shared library soname bump because of binary compatibility changes. If you are looking for the new features introduced in 5.2.0, please grab 6.0.0 instead.
I removed qpdf 5.2.0 because it broke binary compatibility. I will be re-uploading that release as 6.0.0 later today.
I have released qpdf 5.2.0. This release includes the ability to create PDF files with deterministic /IDs for non-encrypted files. Specifically, when this option is used, the /ID of a file is derived from a hash of the output file's contents rather than the file name and timestamp. At a small runtime cost, this ensures that the same file will have the same /ID when generated multiple times while still having extremely high probability of being unique. The new functionality is off by default but is available from the command-line tool as well as from both the C++ and C APIs. Additionally, a small enhancement to xref table parsing should make qpdf able to handle a few more invalid files that it was previously rejecting.
I have released qpdf 5.1.3. This is just a bugfix release from 5.1.2.
I have released qpdf 5.1.2. The changes from 5.1.1 includes fixes to two obscure bugs, a new example program for efficiently splitting by pages, and restoration of support for Windows XP in the Visual C++ Windows binary packages.
qpdf 5.1.1 is out. There is just one small change: a performance fix when copying objects from one QPDF to another. If you're using qpdf for splitting pages or as a dependency in open printing, you should take this update.
I have released qpdf 5.1.0. The main functional change here is the ability to provide your own source of random numbers at runtime if you want to avoid both the OS-provided secure random numbers (used by default since 5.0.1) and the older stdlib random numbers. This release also features a number of small fixes for newer versions of several compilers and to handle one more type of damage to a PDF file.
I have released qpdf 5.0.1. This version contains several security hardening changes thanks to a review from Florian Weimer of the Red Hat Product Security Team. An analysis of the issues suggests that there are likely some ways to make older versions of qpdf crash on certain malformed files but there don't seem to be any opportunities for buffer overruns or other ways to inject malicious code. No CVEs are being issued based on the changes. Still, it is recommended to upgrade to 5.0.1. For details, see the revision history or the ChangeLog.
I have released qpdf 5.0.0. This is basically what 4.2.0 was supposed to be except that the shared library version is updated. Elf systems now build libqpdf13, and the Windows DLL is now qpdf13.dll.
I have also removed from the public API a few methods that were only intended to be called from QPDFWriter and couldn't really have been called from anywhere else.
Turns out 4.2.0 was not binary compatible on some platforms. I will be re-releasing the same changes as 5.0.0 shortly.
I have released qpdf 4.2.0. This release includes one bug fix (loss of objects with generation != 0 when generating object streams) and a few small enhancements including a new --show-npages option to qpdf, some enhancements to handle some additional broken files, and some API additions for better handling of object ID and generation.
I have released qpdf 4.1.0. The major change here is new API methods for parsing PDF content streams. There are also some build changes and at least one change that is important to people who include qpdf in software distributions. Please see the release notes in the documentation (http://qpdf.sourceforge.net/files/qpdf-manual.html#ref.release-notes) for details.
I have released qpdf 4.0.1. There are no changes to the qpdf code in this version. This version includes a change to a comment in QPDF.hh and a fix to a test case to prevent false test failures on big-endian systems. If 4.0.0 is working for you, you can upgrade at your discretion.
I have released qpdf 4.0.0. The big change in this version is support for the newer encryption schemes used by Acrobat IX and X. Also in this release is support for extension levels in PDF version information, new methods for supporting read and write from/to arbitrary sources, support for unencrypted files with encrypted attachments, and support for files with junk preceding the PDF header. There are also a few minor bug fixes and some API changes. For details, see the release notes at http://qpdf.sourceforge.net/files/qpdf-manual.html#ref.release-notes.
I have released qpdf 3.0.2. It includes one bug fix to a new method (QPDFWriter::setOutputMemory), one minor feature improvement, and one new public method to enable insertion of comments in the PDF header.
I have released qpdf 3.0.1. This version contains one bug fix for a problem that has been in qpdf since 2.0, so this is unrelated to the changes from 3.0.0. The specific problem caused qpdf to falsely report premature EOF when reading files constructed in a very specific way.
qpdf 3.0.0 has been released. It is identical to 3.0.rc1 except for the version number and a few tweaks of README files.
I have released a release candidate for qpdf 3.0.0. You can find qpdf 3.0.rc1 in the download area. This is a major release that includes support for files over 2 gigabytes, merging and splitting support, and numerous new APIs in the library. For release notes, see http://qpdf.sourceforge.net/files/qpdf-manual.html#ref.release-notes. I expect to do a full 3.0.0 release by mid August.
qpdf 2.3.1 includes a handful of minor improvements. The most significant change is a fix for a threading problem resulting from non-thread-safe use of a third-party library. There are also a few updates to the documentation to fix previous errors or omissions, a workaround to a (fixed) ghostscript bug that caused some test failures under certain conditions, and a tweak to improve compilation with MSVC 2010. This version of qpdf also tests clean on a 64-bit Windows build. (Older ones probably did too, but this is the first time I have been able to try.) I hope the next release will include Windows 64-bit binaries.
I have released qpdf 2.3.0. This release includes one bug fix (copying encrypted PDFs with clear-text metadata didn't work without explicit encryption parameters) and a handful of API changes. New APIs allow some new manipulations of objects by object ID (replace and swap), the ability to write PDF files to memory instead of files on disk, and the ability to retrieve all elements of a dictionary or array at once as a map or vector. For details, please see the release notes in the documentation.
I have release version 2.2.4 of qpdf. There are no functionality changes in this release. There are very few changes, and they are all related to fixing build, installation, and compiler warning issues.
I have released qpdf 2.2.3. There are no interface changes in this version. The only changes are a few enhancements in recovering from certain problematic files and one enhancement to qdf mode for streams with inline images.
When I released 2.2.1, I neglected to add a method to the C API to access the new processMemoryFile method. The only change from 2.2.1 to 2.2.2 is the addition of a qpdf_read_memory function the C API. Hopefully this release will last a little longer!
I have released qpdf 2.2.1. This version features the ability to process PDF files loaded into memory in addition to those on disk. It also adds the ability to override any output or error messages generated by the library for redirection, for example, for display in a gui. There have also been some minor enhancements that allow qpdf to handle some erroneous PDF files that were previously rejected.
I have placed a port of qpdf to VC6 in the contrib/vc6 directory. Thanks to Jian Ma for generously providing this port.