Skip to content

Commit 09299f2

Browse files
committed
BUG: process CMYK / no filter images
closes py-pdf#2522
1 parent e35df5a commit 09299f2

File tree

2 files changed

+18
-2
lines changed

2 files changed

+18
-2
lines changed

pypdf/filters.py

+9-2
Original file line numberDiff line numberDiff line change
@@ -815,9 +815,16 @@ def _xobj_to_image(x_object_obj: Dict[str, Any]) -> Tuple[Optional[str], bytes,
815815
".tiff",
816816
False,
817817
)
818+
elif mode == "CMYK":
819+
img, image_format, extension, invert_color = (
820+
Image.frombytes(mode, size, data),
821+
"TIFF",
822+
".tif",
823+
False,
824+
)
825+
elif mode == "":
826+
raise PdfReadError(f"ColorSpace field not found in {x_object_obj}")
818827
else:
819-
if mode == "":
820-
raise PdfReadError(f"ColorSpace field not found in {x_object_obj}")
821828
img, image_format, extension, invert_color = (
822829
Image.frombytes(mode, size, data),
823830
"PNG",

tests/test_images.py

+9
Original file line numberDiff line numberDiff line change
@@ -246,3 +246,12 @@ def test_bi_in_text():
246246
reader = PdfReader(BytesIO(get_data_from_url(url, name=name)))
247247
assert reader.pages[0].images.keys() == ["~0~"]
248248
assert reader.pages[0].images[0].name == "~0~.png"
249+
250+
251+
@pytest.mark.enable_socket()
252+
def test_cmyk_no_filter():
253+
"""Cf #2522"""
254+
url = "https://github.com/py-pdf/pypdf/files/14614887/out3.pdf"
255+
name = "iss2522.pdf"
256+
reader = PdfReader(BytesIO(get_data_from_url(url, name=name)))
257+
reader.pages[0].images[0].image

0 commit comments

Comments
 (0)