diff --git a/pypdf/filters.py b/pypdf/filters.py index 05eee23ff..430bec220 100644 --- a/pypdf/filters.py +++ b/pypdf/filters.py @@ -285,7 +285,8 @@ def decode( index = 0 while True: if index >= len(data): - raise PdfStreamError("Unexpected EOD in ASCIIHexDecode") + logger_warning("missing EOD in ASCIIHexDecode, check if output is OK", __name__) + break # reach End Of String even if no EOD char = data[index : index + 1] if char == b">": break @@ -340,7 +341,8 @@ def decode( index = 0 while True: if index >= len(data): - raise PdfStreamError("Unexpected EOD in RunLengthDecode") + logger_warning("missing EOD in RunLengthDecode, check if output is OK", __name__) + break # reach End Of String even if no EOD length = data[index] index += 1 if length == 128: diff --git a/tests/test_filters.py b/tests/test_filters.py index 6edd4c513..a2292d967 100644 --- a/tests/test_filters.py +++ b/tests/test_filters.py @@ -11,7 +11,7 @@ from PIL import Image from pypdf import PdfReader -from pypdf.errors import DeprecationError, PdfReadError, PdfStreamError +from pypdf.errors import DeprecationError, PdfReadError from pypdf.filters import ( ASCII85Decode, ASCIIHexDecode, @@ -131,9 +131,9 @@ def test_ascii_hex_decode_method(data, expected): def test_ascii_hex_decode_missing_eod(): """ASCIIHexDecode.decode() raises error when no EOD character is present.""" - with pytest.raises(PdfStreamError) as exc: - ASCIIHexDecode.decode("") - assert exc.value.args[0] == "Unexpected EOD in ASCIIHexDecode" + # with pytest.raises(PdfStreamError) as exc: + ASCIIHexDecode.decode("") + # assert exc.value.args[0] == "Unexpected EOD in ASCIIHexDecode" @pytest.mark.enable_socket() @@ -500,14 +500,10 @@ def test_runlengthdecode(): url = "https://github.com/py-pdf/pypdf/files/12162905/out.pdf" name = "FailedRLE1.pdf" reader = PdfReader(BytesIO(get_data_from_url(url, name=name))) - with pytest.raises(PdfStreamError) as exc: - reader.pages[0].images[0] - assert exc.value.args[0] == "Unexpected EOD in RunLengthDecode" + reader.pages[0].images[0] url = "https://github.com/py-pdf/pypdf/files/12162926/out.pdf" name = "FailedRLE2.pdf" - with pytest.raises(PdfStreamError) as exc: - reader.pages[0].images[0] - assert exc.value.args[0] == "Unexpected EOD in RunLengthDecode" + reader.pages[0].images[0] @pytest.mark.enable_socket()