2
1
mirror of https://github.com/qpdf/qpdf.git synced 2025-02-14 09:40:22 +00:00

Code tidy QPDFWriter::willFilterStream

This commit is contained in:
m-holger 2025-01-31 12:55:54 +00:00
parent 018cf0eb54
commit 642a1110ed

View File

@ -1249,7 +1249,7 @@ QPDFWriter::willFilterStream(
if (stream_dict.isDictionaryOfType("/Metadata")) {
is_metadata = true;
}
bool filter = (stream.isDataModified() || m->compress_streams || m->stream_decode_level);
bool filter = stream.isDataModified() || m->compress_streams || m->stream_decode_level;
bool filter_on_write = stream.getFilterOnWrite();
if (!filter_on_write) {
QTC::TC("qpdf", "QPDFWriter getFilterOnWrite false");
@ -1261,15 +1261,15 @@ QPDFWriter::willFilterStream(
// CPU cycles uncompressing and recompressing stuff. This can be overridden with
// setRecompressFlate(true).
QPDFObjectHandle filter_obj = stream_dict.getKey("/Filter");
if ((!m->recompress_flate) && (!stream.isDataModified()) && filter_obj.isName() &&
((filter_obj.getName() == "/FlateDecode") || (filter_obj.getName() == "/Fl"))) {
if (!m->recompress_flate && !stream.isDataModified() && filter_obj.isName() &&
(filter_obj.getName() == "/FlateDecode" || filter_obj.getName() == "/Fl")) {
QTC::TC("qpdf", "QPDFWriter not recompressing /FlateDecode");
filter = false;
}
}
bool normalize = false;
bool uncompress = false;
if (filter_on_write && is_metadata && ((!m->encrypted) || (m->encrypt_metadata == false))) {
if (filter_on_write && is_metadata && (!m->encrypted || !m->encrypt_metadata)) {
QTC::TC("qpdf", "QPDFWriter not compressing metadata");
filter = true;
compress_stream = false;
@ -1283,18 +1283,19 @@ QPDFWriter::willFilterStream(
}
bool filtered = false;
for (int attempt = 1; attempt <= 2; ++attempt) {
for (bool first_attempt: {true, false}) {
pushPipeline(new Pl_Buffer("stream data"));
PipelinePopper pp_stream_data(this, stream_data);
activatePipelineStack(pp_stream_data);
try {
filtered = stream.pipeStreamData(
m->pipeline,
(((filter && normalize) ? qpdf_ef_normalize : 0) |
((filter && compress_stream) ? qpdf_ef_compress : 0)),
(filter ? (uncompress ? qpdf_dl_all : m->stream_decode_level) : qpdf_dl_none),
!filter ? 0
: ((normalize ? qpdf_ef_normalize : 0) |
(compress_stream ? qpdf_ef_compress : 0)),
!filter ? qpdf_dl_none : (uncompress ? qpdf_dl_all : m->stream_decode_level),
false,
(attempt == 1));
first_attempt);
} catch (std::runtime_error& e) {
throw std::runtime_error(
"error while getting stream data for " + stream.unparse() + ": " + e.what());