
    OAiu                    &   % S r SSKJr  SSKrSSKrSSKJrJr  SSKJ	r	  SSK
JrJrJrJr  SSKJr  SSKJrJr  SS	KJr  SS
KJr  \R0                  S:X  a  SSK
Jr  \rS\S'   OSr " S S\5      r " S S\5      r\" 5       qS\S'   SS jrSS jr g)zwIntegrate JBIG2 image decoding.

Requires third-party JBIG2 decoder in the form of an external program, like
jbig2dec.
    )annotationsN)ABCabstractmethod)Path)DEVNULLPIPECalledProcessErrorrun)TemporaryDirectory)InvalidVersionVersion)Image)DependencyErrorwin32)CREATE_NO_WINDOWintCREATION_FLAGSc                  J    \ rS rSrSr\SS j5       r\S	S j5       rS
S jrSr	g)JBIG2DecoderInterface    zFpikepdf's C++ expects this Python interface to be available for JBIG2.c                    g)z=Check if decoder is available. Throws DependencyError if not.N selfs    I/var/www/html/land-ocr/venv/lib/python3.13/site-packages/pikepdf/jbig2.pycheck_available%JBIG2DecoderInterface.check_available#           c                    g)z=Decode JBIG2 from jbig2 and globals, returning decoded bytes.Nr   )r   jbig2jbig2_globalss      r   decode_jbig2"JBIG2DecoderInterface.decode_jbig2'   r   r   c                F     U R                  5         g! [         a     gf = f)z$Return True if decoder is available.TF)r   r   r   s    r   	availableJBIG2DecoderInterface.available+   s,    	  "   		s    
  r   NreturnNoner!   bytesr"   r,   r)   r,   )r)   bool)
__name__
__module____qualname____firstlineno____doc__r   r   r#   r&   __static_attributes__r   r   r   r   r       s4    PL L L Lr   r   c                  F    \ rS rSrSr\\S.S jrS
S jrSS jr	SS jr
Srg	)JBIG2Decoder5   zJBIG2 decoder implementation.)subprocess_runcreationflagsc                   Xl         X l        g)zInitialize the decoder.N)_run_creationflags)r   r7   r8   s      r   __init__JBIG2Decoder.__init__8   s    "	+r   c                `    U R                  5       nUb  U[        S5      :  a  [        S5      egg)z*Check if jbig2dec is installed and usable.Nz0.15z-jbig2dec is too old (older than version 0.15))_versionr   r   )r   versions     r   r   JBIG2Decoder.check_available=   s2    --/7WV_#<!"QRR $=r   c           	        [        SSS9 n[        U5      S-  n[        U5      S-  n[        U5      S-  nSSS	S
S[        R                  " U5      /nUR	                  U5        [        U5      S:  a6  UR	                  U5        UR                  [        R                  " U5      5        UR                  [        R                  " U5      5        U R                  U[        SU R                  S9  [        R                  " U5       nUR                  5       sSSS5        sSSS5        $ ! , (       d  f       O= f SSS5        g! , (       d  f       g= f)z6Decode JBIG2 from binary data, returning decode bytes.zpikepdf-z.jbig2)prefixsuffiximageglobaloutfilejbig2decz
--embeddedz--formatpngz--outputr   T)stdoutcheckr8   N)r   r   osfspathwrite_byteslenappendr:   r   r;   r   opentobytes)	r   r!   r"   tmpdir
image_pathglobal_pathoutput_pathargsims	            r   r#   JBIG2Decoder.decode_jbig2C   s   z(Cvf/Jv,1Kv,2K 		+&D ""5)=!A%''6BIIk23KK		*-.IIWD@S@S   K(Bzz| )(; DC: )((; DCCs$   C8ED&	E&
D4	0E
Ec                "    U R                  SS/[        SSU R                  S9nUR                  nUR	                  SS5      R                  5       n [        U5      $ ! [         a     g f = f! [        [        4 a  n[        S5      UeS nAff = f)NrH   z	--versionTascii)rJ   rK   encodingr8    z%jbig2dec - not installed or not found)r:   r   r;   rJ   replacestripr   r   r	   FileNotFoundErrorr   )r   procresultversion_stres        r   r?   JBIG2Decoder._versione   s    	99[) "11  D [[F ..Beg {++!  #$56 	R!"IJPQQ	Rs)   #A- 
A 
A*)A*-B=B		B)r;   r:   Nr(   r+   )r)   zVersion | None)r.   r/   r0   r1   r2   r
   r   r<   r   r#   r?   r3   r   r   r   r5   r5   5   s     '),N ,
S $Dr   r5   _jbig2_decoderc                     [         $ )z&Return an instance of a JBIG2 decoder.rf   r   r   r   get_decoderri   ~   s    r   c                    U q g)zSet the JBIG2 decoder to use.Nrh   )jbig2_decoders    r   set_decoderrl      s	     #Nr   )r)   r   )rk   r   r)   r*   )!r2   
__future__r   rL   sysabcr   r   pathlibr   
subprocessr   r   r	   r
   tempfiler   packaging.versionr   r   PILr   pikepdf._exceptionsr   platformr   r   __annotations__r   r5   rf   ri   rl   r   r   r   <module>rx      s    # 	 
 #  = = ' 5  /<<7+*NC*NC *C( CL )5% 6
#r   