
    NgF                        U d dl mZ d dlmZ d dlmZmZmZmZm	Z	m
Z
 ddlmZmZ ddlmZmZ ddlmZmZmZmZ ded	ed
edeeee	eeeef         f         eeef         ef         fdZd	ededeeee	eeeef         f         eeef         f         fdZdd e e ed          dgdz                      i fZeeee	eeeef         f         eeef         f         ed<   i dddddddddddddddddd d!d d"d#d$d#d%d#d&d#d'dd(dd)d d*d iZ eeef         ed+<   i d,d-d.d-d/d-d0d-d1d2d3d2d4d2d5d2d6d7d8d7d9d7d:d7d;d<d=d<d>d<d?d<d@d<dAd2iZ!eeef         edB<   dedee	eeeef         f         eeef         f         fdCZ"dede	eeeef         f         fdDZ#dedeeeef         ee         f         fdEZ$dFedGe	eeeef         f         dHeeef         defdIZ%dede&fdJZ'dKe&dLe(dMe(dNe	dOeeef         f         dHeeef         dPee         dee(e(e	dOeeef         f         f         fdQZ)dKe&dHeeef         dPee         dNe	dOeeef         f         de	dOeeef         f         f
dRZ*dKe&dHeeef         dPee         ddOfdSZ+dedTedeeef         fdUZ,dVeeef         dWedefdXZ-dVeeef         dYedefdZZ.dedHeeef         dPee         deeeef         ee         f         fd[Z/dOS )\    )	unhexlify)ceil)AnyDictListTupleUnioncast   )adobe_glyphscharset_encoding)logger_errorlogger_warning)DecodedStreamObjectDictionaryObjectStreamObjectis_null_or_none	font_namespace_widthobjreturnc                 b    |d         d         |          }t          ||          \  }}}}|||||fS )a  
    Determine information about a font.

    Args:
        font_name: font name as a string
        space_width: default space width if no data is found.
        obj: XObject or Page where you can find a /Resource dictionary

    Returns:
        Font sub-type, space_width criteria (50% of width), encoding, map character-map, font-dictionary.
        The font-dictionary itself is suitable for the curious.

    z
/Resourcesz/Font)build_char_map_from_dict)r   r   r   ftfont_subtypefont_halfspacefont_encodingfont_maps           G/var/www/html/ai-engine/env/lib/python3.11/site-packages/pypdf/_cmap.pybuild_char_mapr       sH      |,W5i@B<TR= =9L.- "DD    r   c                     t          t          |d                                                   }t          |          \  }}t	          d||          }t          || dz            }t          ||          dz  }||||fS )ak  
    Determine information about a font.

    Args:
        space_width: default space with if no data found
             (normally half the width of a character).
        ft: Font Dictionary

    Returns:
        Font sub-type, space_width criteria(50% of width), encoding, map character-map.
        The font-dictionary itself is suitable for the curious.

    /Subtype        @)r
   str
get_objectget_encodingget_actual_str_keybuild_font_width_mapcompute_space_width)r   r   	font_typeencodingmap_dictspace_key_charfont_width_maphalf_space_widths           r   r   r   '   s      S"Z.335566I%b))Hh'Xx@@N)"kC.?@@N*>>JJSP 	 r!   Unknowni'     u   �unknown_char_mapz/Identity-H	utf-16-bez/Identity-Vz	/GB-EUC-Hgbkz	/GB-EUC-Vz/GBpc-EUC-Hgb2312z/GBpc-EUC-Vz
/GBK-EUC-Hz
/GBK-EUC-Vz/GBK2K-Hgb18030z/GBK2K-Vz
/ETen-B5-Hcp950z
/ETen-B5-Vz/ETenms-B5-Hz/ETenms-B5-Vz/UniCNS-UTF16-Hz/UniCNS-UTF16-Vz/UniGB-UTF16-Hz/UniGB-UTF16-V_predefined_cmapz/CourieriX  z/Courier-Boldz/Courier-BoldObliquez/Courier-Obliquez
/Helveticai  z/Helvetica-Boldz/Helvetica-BoldObliquez/Helvetica-Obliquez/Helvetica-Narrow   z/Helvetica-NarrowBoldz/Helvetica-NarrowBoldObliquez/Helvetica-NarrowObliquez/Times-Roman   z/Times-Boldz/Times-BoldItalicz/Times-Italicz/Symbolz/ZapfDingbats_default_fonts_space_widthc                     t          |           }t          |           \  }}t          |t                    r|D ]}|dk    rt	          |          ||<   ||fS )N   )_parse_encoding_parse_to_unicode
isinstancedictchr)r   r-   r.   	int_entryxs        r   r(   r(   }   sj     r""H+B//Hi (D!! % 	% 	%ACxx!!ffXr!   c                 v   g }d| vryd| v rqt          t          | d                   t          v rOt          t	          t          d          t          t          t          | d                                                }nd}|S | d                                         }t          |t                    r	 |t          v r t          |                                         }n-|t          v rt          |         }nd|v rd}nt          d          n# t          $ r t          d| d	t                     |}Y nw xY wt          |t                    rd
|v r	 t          t          t          |d
                                                            }ng# t          $ r; t          d| d	t                     t          d                                         }Y n#w xY wt          d                                         }d|v rd}t          t          t          t          |          d                   D ]Y}t          |t                    r|}	 |t          |          k     rt           |         ||<   n# t          $ r |||<   Y nw xY w|dz  }Zt          |t"                    r*t          t	          t          d          |                    }|S )Nz	/Encoding	/BaseFontr3   charmapz-UCS2-r5   z	not foundzAdvanced encoding z not implemented yetz/BaseEncodingz/StandardCodingz/Differencesr   r   )r
   r&   r   rC   zipranger'   rB   copyr:   	Exceptionr   __name__r   intlenr   list)r   r-   encrF   os        r   r@   r@      s    79H""c2k?!;!;?O!O!OE#JJ 0c2k?1K1K LMM HH !H(*;(B(B(D(DC#s >	 &&&+C05577(((+C0S&,,, 	 	 	GcGGGRRRHHH	 
C)	*	* 
>#/E/E	B'S#o2F(G(GHMMOOHH 	B 	B 	BCXCCC   ((9:??AAHHH	B $$56;;==&-=s(C(CN(STT 		 		A!S!! $3x==((&21o  $ $ $"#HQKKK$Q(D!! 3E#JJ1122Os8   0AD %D/.D/8F AG
	G
;#II10I1c           	      (   i }g }d| vr/|                      dd          dk    rt          | ||          S i g fS d}d}d }t          |           }|                    d          D ]-}t	          |                    d          |||||          \  }}}.||fS )N
/ToUnicoder#    z/Type1F   
s    	)get_type1_alternative
prepare_cmsplitprocess_cm_linestrip)r   r.   rE   
process_rgprocess_charmultiline_rgcmlines           r   rA   rA      s    
  "H I266*b!!X--%b(I>>>r6MJL 	  
BB 
 
1@JJv2
 2
.
L,, Yr!   
value_charr-   r.   c                      i }t          |t                    r! fd|                                D             }n  fd|                                D             }|                                }|S )Nc                 B    i | ]\  }}|k    |t          |          S  )rD   .0keyvaluerc   s      r   
<dictcomp>z&get_actual_str_key.<locals>.<dictcomp>   s0    ^^^
U%S]J]J]E3s88J]J]J]r!   c                 (    i | ]\  }}|k    ||S rf   rf   rg   s      r   rk   z&get_actual_str_key.<locals>.<dictcomp>   s)    YYY:3UjEXEXE3EXEXEXr!   )rB   rC   itemsrX   )rc   r-   r.   key_dictkey_chars   `    r   r)   r)      s}     H(D!! Z^^^^hnn6F6F^^^YYYY1A1AYYY||J
33HOr!   c                    | d         }t          |t                    r.t          t          | d                                                   }nd}t          |t
                    r|                                }|                                                    dd                              dd                              dd                              d	d
                              dd                              dd          }|	                    d          }t          t          |                    D ]l}||                             d          }|dk    rI|dk    rd}n$||         d |                             dd          }|dz   ||         |dz   d          z   ||<   md                    |                              dd                              dd                              dd          }|S )NrU   s,   beginbfrange
<0000> <0001> <0000>
endbfrange   beginbfchars   
beginbfchar
	   endbfchars   
endbfchar
   beginbfranges   
beginbfrange

   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
   <   >r      .    r!   r      [s    [    ]s    ]
    rW   )rB   r   r
   r   get_datar&   encoder]   replacer[   rK   rP   findjoin)r   tura   llijcontents          r   rZ   rZ      s   	L	B"l## ?%r,'788AACC ?"c YY[[ 	

	!3	4	4	/	0	0	"5	6	6	 1	2	2		!	!		!	!  
$B3r77^^ 	4 	4qEJJt66Avv Q%)++D#66dNRU1q577^3BqE	2	v			x	 	 				  Ir!   rb   r^   r_   r`   NrE   c                     | dk    s| d         dk    r|||fS |                      dd          } d| v rd}n=d| v rd	}n6d
| v rd}n/d| v rd	}n(|rt          | |||          }n|rt          | ||           |||fS )Nr!   r   %      	rx   rs   Trt   Frq   rr   )r~   parse_bfrangeparse_bfchar)rb   r^   r_   r`   r.   rE   s         r   r\   r\     s     s{{d1gmm<55<<t$$D$

	$		

	4						 0$T8YMM	 0T8Y///|\11r!   c                 h   d |                      d          D             }d}|d|d         dz  z  }|d         }|d         }|dd          D ]~}	|	d	k    rd
} nst          |	                              dd          |t          ||z                                |d         dk    rdndd          <   |                    |           |dz  }nt	          |d         d          }t	          |d         d          }t          t          |d                   t          |d                             }
t          |
dz            |d<   d|d         dz  z  }|d         dk    r|dd          D ]~}	|	d	k    rd
} nst          |	                              dd          |t          ||z                                |d         dk    rdndd          <   |                    |           |dz  }nt	          |d         d          }dt          dt          |d                             z  }d
}||k    rt          ||z                                dd          |t          ||z                                |d         dk    rdndd          <   |                    |           |dz  }|dz  }||k    |rd n||fS )Nc                     g | ]}||S rf   rf   rh   rF   s     r   
<listcomp>z!parse_bfrange.<locals>.<listcomp>?      
,
,
,!
,1
,
,
,r!   rx   Fs   %%0%dX   r   r   rz   Tr5   surrogatepassrI      ry         )r[   r   decodeappendrO   maxrP   r   )rb   r.   rE   r`   lstclosure_foundfmtabsqnbicfmt2s                r   r   r   9  s    -
,djj&&
,
,
,CM8B<!+,OOabb' 	 	BTzz $ "$$[/BB #'""))!)"!2!2II#  QFAAAOOAOO#c!f++s3q6{{++C!G}}8B<!+,q6T>>!""g  ::$(ME bMM((oFF cAg&&--%-b\Q%6%6		K'    ###QCFBAs1c#a&kk222D Mq&& dQh''..{OLL cAg&&--%-b\Q%6%6		K'    ###QQ q&& !,44q!f,r!   c                 H   d |                      d          D             }t          |d                   dz  |d<   t          |          dk    rd}|d         dk    rDt          |d                                       t          |d                   d	k     rd
ndd          }||t          |d                                       |d         dk    rd
ndd          <   |                    t          |d         d                     |dd          }t          |          dk    d S d S )Nc                     g | ]}||S rf   rf   r   s     r   r   z parse_bfchar.<locals>.<listcomp>v  r   r!   rx   r   r   r   r   rV   rw   r   rI   r5   r   r   )r[   rP   r   r   r   rO   )rb   r.   rE   r   map_tos        r   r   r   u  s#   
,
,djj&&
,
,
,Cs1v;;!#HRL
c((Q,,q6T>>s1v&&-- Q[[1__		+ F 	 	c!f$$%b\Q..		K 	

 	SVR)))!""g c((Q,,,,,,r!   default_font_widthc                    i }d}d}	 t           t          t          | d         j                           dz  }n# t          $ r Y nw xY wd| v r| d         d                                         }	 t          t
          |d                   |d<   n# t          $ r ||d<   Y nw xY wd|v r|d                                         }ng }t          |          dk    r*t          |d         t                    r|d         n|d                                         }|d                                         }t          |t                    r;|}t          ||dz             D ]}|d	         |t          |          <   |d
d          }not          |t                    r)|}|D ]}	|	|t          |          <   |dz  }|d	d          }n1t          d|d                                         z   t                     nt          |          dk    *n:d| v r5| d                                         }d| v rAdt          t           | d                   v r$| d         d                                         |d<   nCd}
d}|D ]&}|                                }|dk    r
|
|z  }
|dz  }'|
t#          d|          z  |d<   t          t          | d                   }t          t          | d                   }t          ||dz             D ]I}	 |||z
                                           }	|	|t          |          <   3# t$          t          f$ r Y Fw xY wt'          |                    d                    r	|r|nd|d<   |S )Nr   rH   r%   z/DescendantFontsz/DWdefaultz/Wr   r   r   zunknown widths : 
z/Widths/FontDescriptorz/MissingWidthz
/FirstCharz	/LastChar        )r=   r
   r&   r'   KeyErrorfloatrM   rP   rB   rO   rK   rD   rQ   r   __repr__rN   r   r   
IndexErrorr   rX   )r   r   r0   stenft1wsecondc_codewidthmcptxxs                r   r*   r*     s    (*NBB7S"[/B\8]8]^add   R #$Q'2244	;(,UCJ(?(?N9%% 	; 	; 	;(:N9%%%	;3;;D	$$&&AAA!ffqjj#AaD#..E1AaDOO4E4EBqT__&&F&#&& #BQ// 7 7F23A$N3v;;//abbEFD)) #    E27N3v;;/aKFFabbE)SY,@,@,B,BB   + !ffqjj, 
byM$$&&""$b!23;
 ;
 (
 (
 )++<(=o(N(Y(Y([([N9%% AC  ]]__66GA1HC()C3KKN9%#r,'((#r+''BQ'' 	 	F&2+1133.3s6{{++)     ~)))4455 V:L$U$6$6RUy!s3   .7 
AA-B BB5/L%%L98L9r0   
space_charc                     	 | |         }|dk    rt          d          n"# t          t           f$ r | d         dz  }Y nw xY w|S )Nr   z
Zero widthr   r%   )
ValueErrorr   )r0   r   sp_widths      r   r+   r+     sj    
!*-q==\*** j! 
 
 
9%+ 	

 Os     ??charc                 N    d}	 | |         }n# t           $ r | d         }Y nw xY w|S )Nr   r   )r   )r0   r   
char_widths      r   compute_font_widthr     sN     J
#D)

 
 
 
9% 	



 s    ""c           	      4   d| vr||fS t          t          | d                                       d          }t          |          r||fS |
J d            |                                                                }|                    d          d         }|                    d          d         }|                    dd	                              d	          }|D ]7}|                    d
          rd |                    d          D             }t          |          dk    r|d         dk    rX	 t          |d                   }n# t          $ r Y {w xY w	 t          |d                                                  }	nj# t          $ r] |d                             d          r?	 t          t          |d         dd          d                    }	n# t          $ r Y Y w xY wY nw xY w|	|t          |          <   |                    |           9||fS )Nr   z	/FontFilemypys   eexec
r   s	   /Encodingr   r{   rW   s   dupc                     g | ]
}|d k    |S )r!   rf   )rh   _ws     r   r   z&_type1_alternative.<locals>.<listcomp>  s    >>>BB#IIRIIIr!   rx   r   s   putr   s   /unir   r   )r
   r   rX   r   r'   r|   r[   r~   
startswithrP   rO   r   r   r   r   rD   r   )
r   r.   rE   ft_desctxtlinesliwordsr   vs
             r   rY   rY     sA   
 """"#R(9%:;;??LLGw #""





'
'
)
)C
))J


"C
))L
!
!!
$CKKu%%++E22E    ==   	 >>"((4..>>>E5zzA~~%(f"4"4aMM   ! q!2!23 ! ! !8&&w// !!E!HQRRL" 5 566% ! ! ! !	!  !HSVVQYsH   6E
EE%F%G*)+GG*
G$G*#G$$G*)G*)0binasciir   mathr   typingr   r   r   r   r	   r
   _codecsr   r   _utilsr   r   genericr   r   r   r   r&   r   rO   r    r   rC   rJ   rK   r4   __annotations__r:   r=   r(   r@   rA   r)   bytesrZ   boolr\   r   r   r*   r+   r   rY   rf   r!   r   <module>r      sg                6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0           EE!&E-=E
3uS$sCx.014S>CSSTE E E E.,
3uS$sCx.014S>AB   D DUU3ZZ%3	'	'((	S %UE#tCH~*=$>S#XNO   $;$;$ $ 	$
 8$ 8$ %$ %$ 	$ 	$ '$ '$ G$ G$ {$  {!$" i#$$ i%$ $ $sCx.   ...S. C. 	.
 #. s. c. #. . S. #C. . C. 3. .  S!." s#.$ S%. . DcN   ,
5d38n$%tCH~56   $66
3S#X6 6 6 6r
4S>49$%   D		$S$sCx.%89	EI#s(^		 	 	 	&# & & & & &R2
22 2 eCHo-.	2
 38n2 Cy2 4uT5c?23342 2 2 249-
9-38n9- Cy9- eCHo-.	9-
 4sCx !9- 9- 9- 9-xu S#X 49 QU    &II.3I	#u*I I I IXe$25
   e$
    ""38n" Cy" 4S>49$%	" " " " " "r!   