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 )zParse 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   M/var/www/html/ocr-read/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 )zParse 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 )zParse 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 )	zParse 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    