Skip to content

Bug with pdfly extract-images: ValueError: conversion from 1 to LA not supported #2176

@Lucas-C

Description

@Lucas-C

Hi!

This problem was spotted in #2170:
https://github.com/py-pdf/pypdf/blob/issue-2160/tests/test_cli.py#L91

I was able to quickly reproduce it with pdfly,
but the underlying bug is in pypdf:

Reproduction steps

pdfly extract-images box.pdf

PDF file source: https://github.com/py-pdf/pypdf/blob/main/resources/box.pdf

Traceback

Error in sys.excepthook:
Traceback (most recent call last):
  File "~/.local/lib/python3.8/site-packages/typer/main.py", line 72, in except_hook
    rich_tb = Traceback.from_exception(
TypeError: from_exception() got an unexpected keyword argument 'suppress'

Original exception was:
Traceback (most recent call last):
  File "~/.local/lib/python3.8/site-packages/PIL/Image.py", line 1853, in putalpha
    self.im.setmode(mode)
ValueError: image has wrong mode

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "~/.local/bin/pdfly", line 8, in <module>
    sys.exit(entry_point())
  File "~/.local/lib/python3.8/site-packages/typer/main.py", line 328, in __call__
    raise e
  File "~/.local/lib/python3.8/site-packages/typer/main.py", line 311, in __call__
    return get_command(self)(*args, **kwargs)
  File "~/.local/lib/python3.8/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "~/.local/lib/python3.8/site-packages/typer/core.py", line 778, in main
    return _main(
  File "~/.local/lib/python3.8/site-packages/typer/core.py", line 216, in _main
    rv = self.invoke(ctx)
  File "~/.local/lib/python3.8/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "~/.local/lib/python3.8/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "~/.local/lib/python3.8/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "~/.local/lib/python3.8/site-packages/typer/main.py", line 683, in wrapper
    return callback(**use_params)  # type: ignore
  File "~/.local/lib/python3.8/site-packages/pdfly/cli.py", line 62, in extract_images
    pdfly.extract_images.main(pdf)
  File "~/.local/lib/python3.8/site-packages/pdfly/extract_images.py", line 17, in main
    for image_file_object in page0.images:
  File "/opt/pypdf/pypdf/_page.py", line 2644, in __iter__
    yield self[i]
  File "/opt/pypdf/pypdf/_page.py", line 2640, in __getitem__
    return self.get_function(lst[index])
  File "/opt/pypdf/pypdf/_page.py", line 555, in _get_image
    return self._get_image(ids, cast(DictionaryObject, xobjs[id[0]]))
  File "/opt/pypdf/pypdf/_page.py", line 544, in _get_image
    imgd = _xobj_to_image(cast(DictionaryObject, xobjs[id]))
  File "/opt/pypdf/pypdf/filters.py", line 1100, in _xobj_to_image
    img.putalpha(alpha)
  File "~/.local/lib/python3.8/site-packages/PIL/Image.py", line 1856, in putalpha
    im = self.im.convert(mode)
ValueError: conversion from 1 to LA not supported

Environment

Which environment were you using when you encountered the problem?

$ python -m platform
Linux-5.10.102.1-microsoft-standard-WSL2-x86_64-with-glibc2.29

$ pdfly --version
pdfly 0.2.14
  using pypdf==3.15.5

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions