diff --git a/pypdf/filters.py b/pypdf/filters.py index f7d29611e..7f68748c5 100644 --- a/pypdf/filters.py +++ b/pypdf/filters.py @@ -656,10 +656,10 @@ def decode_stream_data(stream: Any) -> bytes: data = FlateDecode.decode(data, params) elif filter_name in (FT.RUN_LENGTH_DECODE, FTA.RL): data = RunLengthDecode.decode(data) - elif filter_name == FT.CCITT_FAX_DECODE: + elif filter_name in (FT.CCITT_FAX_DECODE, FTA.CCF): height = stream.get(IA.HEIGHT, ()) data = CCITTFaxDecode.decode(data, params, height) - elif filter_name == FT.DCT_DECODE: + elif filter_name in (FT.DCT_DECODE, FTA.DCT): data = DCTDecode.decode(data) elif filter_name == FT.JPX_DECODE: data = JPXDecode.decode(data) diff --git a/tests/test_filters.py b/tests/test_filters.py index 395f52cb2..c48fee84d 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -246,6 +246,30 @@ def test_ccitt_fax_decode(): ) +def test_ccitt_fax_decode_and_ccf(): + data = RESOURCE_ROOT.joinpath("imagemagick-CCITTFaxDecode.pdf").read_bytes() + reader = PdfReader(BytesIO(data)) + image1 = reader.pages[0].images[0].data + + data = data.replace(b"/CCITTFaxDecode", b"/CCF") + reader = PdfReader(BytesIO(data)) + image2 = reader.pages[0].images[0].data + + assert image1 == image2 + + +def test_dct_decode_and_dct(): + data = RESOURCE_ROOT.joinpath("jpeg.pdf").read_bytes() + reader = PdfReader(BytesIO(data)) + image1 = reader.pages[0].images[0].data + + data = data.replace(b"/DCTDecode", b"/DCT") + reader = PdfReader(BytesIO(data)) + image2 = reader.pages[0].images[0].data + + assert image1 == image2 + + @pytest.mark.enable_socket def test_decompress_zlib_error(caplog): reader = PdfReader(BytesIO(get_data_from_url(name="tika-952445.pdf")))