aboutsummaryrefslogtreecommitdiffstats
path: root/libqpdf/QPDF_Stream.cc
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2022-05-07 19:33:45 +0200
committerJay Berkenbilt <ejb@ql.org>2022-05-08 19:45:20 +0200
commitc76536dd9a150adb71fdcda11ee1a93f25128cc7 (patch)
tree03f68965ad1646f643d184b0435bd6706b42fcdc /libqpdf/QPDF_Stream.cc
parentbdfc4da5105c86f0dc63ed390da240306e6b4466 (diff)
downloadqpdf-c76536dd9a150adb71fdcda11ee1a93f25128cc7.tar.zst
Implement JSON v2 output
Diffstat (limited to 'libqpdf/QPDF_Stream.cc')
-rw-r--r--libqpdf/QPDF_Stream.cc16
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");
}