
    :Qg#                        d dl Z d dlZ d dlZd dlmZ d dlmZmZ 	 d dlmZ ddlmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZmZmZ ddlmZ dZdedefdZ G d d      Z G d d      Zy# e	$ r	 d dl
mZ Y ^w xY w)    N)BytesIO)BinaryIOTuple)Literal   )JBIG2StreamReaderJBIG2StreamWriter)LTImage)LITERAL_DEVICE_CMYK)LITERAL_DEVICE_GRAY)LITERAL_DEVICE_RGB)LITERALS_DCT_DECODELITERALS_JBIG2_DECODELITERALS_JPX_DECODELITERALS_FLATE_DECODE)PDFValueErrorzCould not import Pillow. This dependency of pdfminer.six is not installed by default. You need it to to save jpg images to a file. Install it with `pip install 'pdfminer.six[image]'`xreturnc                     | dz   dz  dz  S )N       )r   s    K/var/www/html/answerous/venv/lib/python3.12/site-packages/pdfminer/image.pyalign32r   !   s    UqLA    c            
       <    e Zd Zdededededdf
dZded	eddfd
Zy)	BMPWriterfpbitswidthheightr   Nc                    || _         || _        || _        || _        |dk(  rd}n|dk(  rd}n|dk(  rd}nt	        |      t        | j                  | j                  z  dz   dz        | _        | j                  | j                  z  | _        d|d	z  z   }t        j                  d
d| j                  | j                  d| j                  d| j                  dd|d      }t        |      dk(  sJ t        t        |                   t        j                  ddd|| j                  z   dd|      }t        |      dk(  sJ t        t        |                   | j                   j                  |       | j                   j                  |       |dk(  r9dD ]3  }	| j                   j                  t        j                  d|	|	|	             5 nF|dk(  rAt        d      D ]3  }	| j                   j                  t        j                  d|	|	|	             5 | j                   j                         | _        | j                  | j                  z   | _        y )Nr               r      6   r   z<IiiHHIIIIII(   z<ccIHHI   B   M   )r      BBBx)r   r   r    r!   r   r   linesizedatasizestructpacklenstrwriterangetellpos0pos1)
selfr   r   r    r!   ncols
headersizeinfoheaderis
             r   __init__zBMPWriter.__init__&   s   	
19EQYERZE%%dii!7!!; AB3uqy(
{{JJKKIIMM
 4yB.CI.tT:#=q!Z
 6{b 2#c&k"22 fdA: <fkk&!Q:;<c\3Z <fkk&!Q:;<GGLLN	II-	r   ydatac                     | j                   j                  | j                  |dz   | j                  z  z
         | j                   j	                  |       y )Nr   )r   seekr9   r/   r5   )r:   rA   rB   s      r   
write_linezBMPWriter.write_lineV   s8    TYY!a%4==!889dr   )__name__
__module____qualname__r   intr@   bytesrE   r   r   r   r   r   %   sE    ..8 ..3 ..s ..C ..D ..`C u  r   r   c                       e Zd ZdZdeddfdZdedefdZdedefdZdedefd	Z	dedefd
Z
dedededededefdZdedefdZdedefdZededefd       Zdededeeef   fdZy)ImageWriterzUWrite image to a file

    Supports various image types: JPEG, JBIG2 and bitmaps
    outdirr   Nc                     || _         t        j                  j                  | j                         s t        j                  | j                          y y )N)rM   ospathexistsmakedirs)r:   rM   s     r   r@   zImageWriter.__init__a   s2    ww~~dkk*KK$ +r   imagec                 $   |j                   \  }}|j                  j                         }|d   d   t        v r| j	                  |      }|S |d   d   t
        v r| j                  |      }|S | j                  |      r| j                  |      }|S |j                  dk(  r'| j                  ||||dz   dz  |j                        }|S |j                  dk(  r9t        |j                  v r'| j                  ||||dz  |j                  dz        }|S |j                  dk(  r3t        |j                  v r!| j                  |||||j                        }|S t        |      dk(  r!|d   d   t        v r| j!                  |      }|S | j#                  |      }|S )zSave an LTImage to diskr   r   r'   r$   r   )srcsizestreamget_filtersr   
_save_jpegr   _save_jpeg2000_is_jbig2_iamge_save_jbig2r   	_save_bmpr   
colorspacer   r3   r   _save_bytes	_save_raw)r:   rS   r    r!   filtersnames         r   export_imagezImageWriter.export_imagef   s   --,,**,2;q>00??5)D. + R[^22&&u-D( % !!%(##E*D"  ZZ1_>>%q8H%**UD  ZZ1_!3u7G7G!G>>%	5::PQ>RD  ZZ1_!48H8H!H>>%uzzJD  \Q71:a=4I#I##E*D
  >>%(Dr   c                    |j                   j                         }| j                  |d      \  }}t        |d      5 }t        |j
                  v rZ	 ddlm}m} t        |      }|j                  |      }	|j                  |	      }	|	j                  d      }	|	j                  |d       n|j                  |       ddd       |S # t        $ r t        t              w xY w# 1 sw Y   |S xY w)zSave a JPEG encoded image.jpgwbr   )Image
ImageChopsRGBJPEGN)rW   get_data_create_unique_image_nameopenr   r^   PILrg   rh   ImportErrorPIL_ERROR_MESSAGEr   invertconvertsaver5   )
r:   rS   rB   rb   rP   r   rg   rh   ifpr?   s
             r   rY   zImageWriter._save_jpeg   s    ||$$&33E6B
d$ 	"e&6&6695 dmJJsO%%a(IIe$r6"	  # 9%&7889		 s$   C CA"C CC  C*c                 J   |j                   j                         }| j                  |d      \  }}t        |d      5 }	 ddlm} t        |      }|j                  |      }|j                  |d       ddd       |S # t        $ r t        t              w xY w# 1 sw Y   |S xY w)zSave a JPEG 2000 encoded imagez.jp2rf   r   rg   JPEG2000N)
rW   rk   rl   rm   rn   rg   ro   rp   r   rs   )	r:   rS   rB   rb   rP   r   rg   rt   r?   s	            r   rZ   zImageWriter._save_jpeg2000   s    ||$$&33E6B
d$ 	#5% $-C

3AFF2z"	#   5!"3445	# s"   BA<.B<BBB"c                    | j                  |d      \  }}t        |d      5 }t               }g }|j                  j	                         }|D ]0  \  }}	|t
        v s|j                  |	d   j                                2 t        |      dkD  rd}
t        |
      t        |      dk(  r1|j                  |d   j                         j                  d             |j                  |j                  j                                |j                  d       t        |      }|j                         }t!        |      }|j#                  |       ddd       |S # 1 sw Y   |S xY w)	zSave a JBIG2 encoded imagez.jb2rf   JBIG2Globalsr   zWThere should never be more than one JBIG2Globals associated with a JBIG2 embedded imager      
N)rl   rm   r   rW   rX   r   appendresolver3   r   r5   rk   rstriprD   r   get_segmentsr	   
write_file)r:   rS   rb   rP   r   input_streamglobal_streamsra   filter_nameparamsmsgreadersegmentswriters                 r   r\   zImageWriter._save_jbig2   sN   33E6B
d$ 	("9LNll..0G'. L#V"77"))&*@*H*H*JKL >"Q&=  $C((>"a'"">!#4#=#=#?#F#Fu#MNu||4467a &|4F**,H&r*Fh'/	(0 1	(0 s   7EC/EEr    r!   bytes_per_liner   c           	      $   | j                  |d      \  }}t        |d      5 }t        ||||      }	|j                  j	                         }
d}t        |      D ]  }|	j                  ||
|||z           ||z  }! 	 ddd       |S # 1 sw Y   |S xY w)zSave a BMP encoded imagez.bmprf   r   N)rl   rm   r   rW   rk   r6   rE   )r:   rS   r    r!   r   r   rb   rP   r   bmprB   r?   rA   s                r   r]   zImageWriter._save_bmp   s     33E6B
d$ 	$BeV4C<<((*DA6] $q$q1~+=">?^#$		$ 	$ s   ABBc                    | j                  |d      \  }}|j                  \  }}t        |j                  j	                               |z  |z  |j
                  dz  z  }t        |d      5 }	 ddlm} ddlm	}	 |j
                  dk(  rd}
nD|j
                  dk(  r|dk(  rd	}
n-|j
                  dk(  r|d
k(  rd}
n|j
                  dk(  r|dk(  rd}
|j                  
|j                  |j                  j	                         d      }|
d	k(  r|	j                  |      }|j                  |       ddd       |S # t        $ r t        t              w xY w# 1 sw Y   |S xY w)z*Save an image without encoding, just bytesre   r$   rf   r   rv   )ImageOpsr   1Lr   ri   r   CMYKrawN)rl   rV   r3   rW   rk   r   rm   rn   rg   r   ro   rp   	frombytesrq   rs   )r:   rS   rb   rP   r    r!   channelsr   rg   r   modeimgs               r   r_   zImageWriter._save_bytes   s@   33E6B
dvu||,,./%7&@EJJQRNS$ 	5%(
 zzQqX]qX]qX]//$u||7L7L7NPUVCs{ooc*HHRL+	. '  5!"3445		. s%   *E,D58B3E5EEEc                    d|j                   |j                  d   |j                  d   fz  }| j                  ||      \  }}t        |d      5 }|j	                  |j
                  j                                ddd       |S # 1 sw Y   |S xY w)z#Save an image with unknown encodingz.%d.%dx%d.imgr   r   rf   N)r   rV   rl   rm   r5   rW   rk   )r:   rS   extrb   rP   r   s         r   r`   zImageWriter._save_raw   s~    U]]1-=u}}Q?O PP33E3?
d$ 	.HHU\\**,-	.	.s   *BBc                 `    | j                   j                         }|D ]  \  }}|t        v s y y)NTF)rW   rX   r   )rS   ra   r   r   s       r   r[   zImageWriter._is_jbig2_iamge  s9    ,,**,#* 	K33	 r   r   c                    |j                   |z   }t        j                  j                  | j                  |      }d}t        j                  j                  |      rad|j                   ||fz  }t        j                  j                  | j                  |      }|dz  }t        j                  j                  |      ra||fS )Nr   z%s.%d%sr   )rb   rO   rP   joinrM   rQ   )r:   rS   r   rb   rP   	img_indexs         r   rl   z%ImageWriter._create_unique_image_name
  s    zzCww||DKK.	ggnnT"

Is;;D77<<T2DNI ggnnT" Tzr   )rF   rG   rH   __doc__r4   r@   r
   rc   rY   rZ   r\   rI   r]   r_   r`   staticmethodboolr[   r   rl   r   r   r   rL   rL   [   s   
%s %t %
' c @ C ,G  ( S :%(25GJRU	 S <w 3  w 4  w S U3PS8_ r   rL   ) rO   os.pathr1   ior   typingr   r   r   ro   typing_extensionsjbig2r   r	   layoutr
   pdfcolorr   r   r   pdftypesr   r   r   r   pdfexceptionsr   rp   rI   r   r   rL   r   r   r   <module>r      s    	    "*
 8  ) ) (  )/ s s 3 3lw we  *)*s   A3 3B B