diff options
author | Jay Berkenbilt <ejb@ql.org> | 2022-05-07 19:33:45 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2022-05-08 19:45:20 +0200 |
commit | c76536dd9a150adb71fdcda11ee1a93f25128cc7 (patch) | |
tree | 03f68965ad1646f643d184b0435bd6706b42fcdc /libqpdf/QPDF_Stream.cc | |
parent | bdfc4da5105c86f0dc63ed390da240306e6b4466 (diff) | |
download | qpdf-c76536dd9a150adb71fdcda11ee1a93f25128cc7.tar.zst |
Implement JSON v2 output
Diffstat (limited to 'libqpdf/QPDF_Stream.cc')
-rw-r--r-- | libqpdf/QPDF_Stream.cc | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index 67a3ad0d..ff62df73 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -189,7 +189,7 @@ QPDF_Stream::getJSON(int json_version) JSON QPDF_Stream::getStreamJSON( int json_version, - qpdf_stream_data_json_e json_data, + qpdf_json_stream_data_e json_data, qpdf_stream_decode_level_e decode_level, Pipeline* p, std::string const& data_filename) @@ -231,11 +231,17 @@ QPDF_Stream::getStreamJSON( } else { data_pipeline = &discard; } - filtered = pipeStreamData( - data_pipeline, nullptr, 0, decode_level, false, (attempt == 1)); - if (filter && (!filtered)) { + bool succeeded = pipeStreamData( + data_pipeline, + &filtered, + 0, + decode_level, + false, + (attempt == 1)); + if ((!succeeded) || (filter && (!filtered))) { // Try again filter = false; + decode_level = qpdf_dl_none; } else { if (buf_pl.get()) { buf = buf_pl->getBufferSharedPointer(); @@ -247,7 +253,7 @@ QPDF_Stream::getStreamJSON( // touching top-level keys. dict = this->stream_dict.unsafeShallowCopy(); dict.removeKey("/Length"); - if (filtered) { + if (filter && filtered) { dict.removeKey("/Filter"); dict.removeKey("/DecodeParms"); } |