diff --git a/libqpdf/QPDF_Stream.cc b/libqpdf/QPDF_Stream.cc index 105973f..f8a7dfe 100644 --- a/libqpdf/QPDF_Stream.cc +++ b/libqpdf/QPDF_Stream.cc @@ -80,17 +80,34 @@ namespace }; } // namespace -std::map Stream::filter_abbreviations = { +std::string +QPDF_Stream::Members::expand_filter_name(std::string const& name) const +{ // The PDF specification provides these filter abbreviations for use in inline images, but // according to table H.1 in the pre-ISO versions of the PDF specification, Adobe Reader also // accepts them for stream filters. - {"/AHx", "/ASCIIHexDecode"}, - {"/A85", "/ASCII85Decode"}, - {"/LZW", "/LZWDecode"}, - {"/Fl", "/FlateDecode"}, - {"/RL", "/RunLengthDecode"}, - {"/CCF", "/CCITTFaxDecode"}, - {"/DCT", "/DCTDecode"}, + if (name == "/AHx") { + return "/ASCIIHexDecode"; + } + if (name == "/A85") { + return "/ASCII85Decode"; + } + if (name == "/LZW") { + return "/LZWDecode"; + } + if (name == "/Fl") { + return "/FlateDecode"; + } + if (name == "/RL") { + return "/RunLengthDecode"; + } + if (name == "/CCF") { + return "/CCITTFaxDecode"; + } + if (name == "/DCT") { + return "/DCTDecode"; + } + return name; }; std::map()>> Stream::filter_factories = @@ -333,10 +350,7 @@ Stream::filterable( bool filterable = true; for (auto& filter_name: filter_names) { - if (filter_abbreviations.count(filter_name)) { - QTC::TC("qpdf", "QPDF_Stream expand filter abbreviation"); - filter_name = filter_abbreviations[filter_name]; - } + filter_name = s->expand_filter_name(filter_name); auto ff = filter_factories.find(filter_name); if (ff == filter_factories.end()) { diff --git a/libqpdf/qpdf/QPDFObject_private.hh b/libqpdf/qpdf/QPDFObject_private.hh index 61b8d60..fb08200 100644 --- a/libqpdf/qpdf/QPDFObject_private.hh +++ b/libqpdf/qpdf/QPDFObject_private.hh @@ -226,6 +226,7 @@ class QPDF_Stream final std::shared_ptr stream_data; std::shared_ptr stream_provider; std::vector> token_filters; + std::string expand_filter_name(std::string const& name) const; }; friend class QPDFObject; diff --git a/qpdf/qpdf.testcov b/qpdf/qpdf.testcov index b4d2eab..0d4fa26 100644 --- a/qpdf/qpdf.testcov +++ b/qpdf/qpdf.testcov @@ -177,7 +177,6 @@ QPDFObjectHandle prepend page contents 0 QPDFObjectHandle append page contents 0 QPDF_Stream getRawStreamData 0 QPDF_Stream getStreamData 0 -QPDF_Stream expand filter abbreviation 0 qpdf-c called qpdf_read_memory 0 QPDF stream without newline 0 QPDF stream with CR only 0