QPDF / News: Recent posts

qpdf 7.0.0

I have released qpdf version 7.0.0. There have been no substantive code changes from the 7.0 beta release. Version 7.0.0 is now released primarily under the terms of version 2.0 of the Apache license, though you may continue to use the terms of the Artistic license, version 2.0, which was used for older versions.

Posted by Jay Berkenbilt 2017-09-16

7.0 beta released

I have released 7.0.b1 of qpdf. This represents significant effort over the last few weeks getting caught up on almost two years of backlog. This version of qpdf is very close to what the final 7.0.0 will look like. I have not yet prepared release notes, but the ChangeLog is pretty up to date, and the manual has been updated with the new changes. Here are some highlights:

  • Substantial improvements in qpdf's ability to recover from all kinds of corrupted files. qpdf is able to recover many more types of damaged files than it could before, and most damage that it cannot recover from now results in just skipping or preserving the bad parts of the file rather than crashing.
  • Several infinite loop issues were addressed.
  • Many new features were added including page rotation, an option for efficient splitting of files into groups of fixed numbers of pages, the ability to read command-line arguments, including passwords, from stdin or files, the ability to preserve unreferenced objects when writing files, support for DCT (JPEG) and RunLength encoding filters, and various other improvements to the API.... read more
Posted by Jay Berkenbilt 2017-08-22

qpdf 6.0.0

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.

Posted by Jay Berkenbilt 2015-11-10

qpdf 5.2.0 withdrawn

I removed qpdf 5.2.0 because it broke binary compatibility. I will be re-uploading that release as 6.0.0 later today.

Posted by Jay Berkenbilt 2015-11-10

qpdf 5.2.0

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.

Posted by Jay Berkenbilt 2015-11-07

qpdf 5.1.3

I have released qpdf 5.1.3. This is just a bugfix release from 5.1.2.

Posted by Jay Berkenbilt 2015-05-24

qpdf 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.

Posted by Jay Berkenbilt 2014-06-07

qpdf 5.1.1

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.

Posted by Jay Berkenbilt 2014-01-14

qpdf 5.1.0

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.

Posted by Jay Berkenbilt 2013-12-17

qpdf 5.0.1

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.

Posted by Jay Berkenbilt 2013-10-18

qpdf 5.0.0

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.

Posted by Jay Berkenbilt 2013-07-10

4.2.0 withdrawn

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.

Posted by Jay Berkenbilt 2013-07-10

qpdf 4.2.0

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.

Posted by Jay Berkenbilt 2013-07-08

qpdf 4.1.0

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.

Posted by Jay Berkenbilt 2013-04-14

qpdf 4.0.1

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.

Posted by Jay Berkenbilt 2013-01-17

qpdf 4.0.0

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.

Posted by Jay Berkenbilt 2012-12-31

qpdf 3.0.2

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.

Posted by Jay Berkenbilt 2012-09-07

qpdf 3.0.1

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.

Posted by Jay Berkenbilt 2012-08-11

qpdf 3.0.0

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.

Posted by Jay Berkenbilt 2012-08-02

qpdf 3.0 rc1

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.

Posted by Jay Berkenbilt 2012-07-29

qpdf 2.3.1

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.

Posted by Jay Berkenbilt 2011-12-29

qpdf 2.3.0

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.

Posted by Jay Berkenbilt 2011-08-11

qpdf 2.2.4

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.

Posted by Jay Berkenbilt 2011-06-25

qpdf 2.2.3

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.

Posted by Jay Berkenbilt 2011-04-30

qpdf 2.2.2

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!

Posted by Jay Berkenbilt 2010-10-04