diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index ca718c5..1bb98c2 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -432,7 +432,16 @@ Stream::pipeStreamData( filterp = &ignored; } bool& filter = *filterp; - filter = encode_flags || decode_level != qpdf_dl_none; + + const bool empty_stream = !s->stream_provider && !s->stream_data && s->length == 0; + const bool empty_stream_data = s->stream_data && s->stream_data->getSize() == 0; + const bool empty = empty_stream || empty_stream_data; + + if(empty_stream || empty_stream_data) { + filter = true; + } + + filter = empty || encode_flags || decode_level != qpdf_dl_none; if (filter) { filter = filterable(decode_level, filters); } diff --git a/manual/release-notes.rst b/manual/release-notes.rst index e8b802b..514626a 100644 --- a/manual/release-notes.rst +++ b/manual/release-notes.rst @@ -23,6 +23,13 @@ more detail. not work on some older Linux distributions. If you need support for an older distribution, please use version 12.2.0 or below. + - Other enhancements + + - ``QPDFWriter`` will no longer add filters when writing empty streams. + + - More sanity checks have been added when files with damaged xref tables + are recovered. + 12.2.0: May 4, 2025 - Upcoming C++ Version Change