o
    Œ™i1
  ã                   @   sŒ   d Z ddlmZ ddlmZ ddlmZ dedeej fdd„Zdedeej fd	d
„Z	dedeej fdd„Z
dedeej fdd„ZdS )z%
    pdf2image custom buffer parsers
é    )ÚBytesIO)ÚList)ÚImageÚdataÚreturnc           	   	   C   s¶   g }d}|t | ƒk rYt| ||d …  d¡dd… ƒ\}}}t| d¡ƒ\}}t |ƒt |ƒ t |ƒ d t|ƒt|ƒ d  }| t t| ||| … ƒ¡¡ ||7 }|t | ƒk s
|S )zÇParse PPM file bytes to Pillow Image

    :param data: pdftoppm/pdftocairo output bytes
    :type data: bytes
    :return: List of PPM images parsed from the output
    :rtype: List[Image.Image]
    r   é(   ó   
é   ó    ©ÚlenÚtupleÚsplitÚintÚappendr   Úopenr   )	r   ÚimagesÚindexÚcodeÚsizeÚrgbÚsize_xÚsize_yÚ	file_size© r   úQ/var/www/html/flask_server/venv/lib/python3.10/site-packages/pdf2image/parsers.pyÚparse_buffer_to_ppm   s   	(0 ûr   c           	   	   C   s²   g }d}|t | ƒk rWt| ||d …  d¡dd… ƒ\}}}t| d¡ƒ\}}t |ƒt |ƒ t |ƒ d t|ƒt|ƒ  }| t t| ||| … ƒ¡¡ ||7 }|t | ƒk s
|S )zÇParse PGM file bytes to Pillow Image

    :param data: pdftoppm/pdftocairo output bytes
    :type data: bytes
    :return: List of PGM images parsed from the output
    :rtype: List[Image.Image]
    r   r   r   r	   r
   r   )	r   r   r   r   r   Úmaxvalr   r   r   r   r   r   Úparse_buffer_to_pgm"   s   	(, ûr   c                 C   s   dd„ |   d¡dd… D ƒS )zÉParse JPEG file bytes to Pillow Image

    :param data: pdftoppm/pdftocairo output bytes
    :type data: bytes
    :return: List of JPEG images parsed from the output
    :rtype: List[Image.Image]
    c                 S   s   g | ]}t  t|d  ƒ¡‘qS )ó   ÿÙ)r   r   r   )Ú.0Ú
image_datar   r   r   Ú
<listcomp>B   s    ÿÿz(parse_buffer_to_jpeg.<locals>.<listcomp>r   Néÿÿÿÿ)r   )r   r   r   r   Úparse_buffer_to_jpeg9   s
   	ÿþr$   c              	   C   s”   g }d}d}t | ƒ}||k rH| ||d … dkr@|d |ks*| |d |d … dkr@| t t| ||d … ƒ¡¡ |d }|}|d7 }||k s|S )	zÇParse PNG file bytes to Pillow Image

    :param data: pdftoppm/pdftocairo output bytes
    :type data: bytes
    :return: List of PNG images parsed from the output
    :rtype: List[Image.Image]
    r   é   s   IENDé   é	   é   s   PNGé   )r   r   r   r   r   )r   r   Úc1Úc2Údata_lenr   r   r   Úparse_buffer_to_pngJ   s   	$ ø
r-   N)Ú__doc__Úior   Útypingr   ÚPILr   Úbytesr   r   r$   r-   r   r   r   r   Ú<module>   s    