
    jjgF                     2   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dCedee	eeeef         f         ef         fdDZ"dedCedeeeef         eee         f         fdEZ#dede$fdFZ%dGe$dHe&dIe&dJe	dKeeef         f         dLeeef         dMee         dee&e&e	dKeeef         f         f         fdNZ'dGe$dLeeef         dMee         dJe	dKeeef         f         de	dKeeef         f         f
dOZ(dGe$dLeeef         dMee         ddKfdPZ)dedCed	edefdQZ*dedLeeef         dCedMee         deeeef         eee         f         f
dRZ+dKS )S    )	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           [/lsinfo/ai/hellotax_ai/data_center/backend/venv/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                   }d}t          ||          \  }}t          ||          \  }}}|dk    rd|vs|d         dk    rd}n5d}n2t	          |t
                    r|D ]}|dk    rt          |          ||<   	 t          t          t          |d	                            } n# t          $ r Y nw xY wt	          |t                    rV	 |	                    d          d
         }n;# t          $ r, |	                    d          }|d
         d|d         z  z   }Y nw xY w|}t          |||           }	|t          |	dz            ||fS )aj  
    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   charmap	utf-16-be   	/BaseFontr         )r
   strparse_encodingparse_to_unicode
isinstancedictchr_default_fonts_space_width	Exceptionencodecompute_space_widthfloat)
r   r   	font_type
space_codeencodingmap_dict	int_entryxspsp_widths
             r   r   r   &   s    #r*~..IJ)"j99Hj&6r:&F&F#Hj) 2~~X"!2!2 !HH"HH
 
Hd	#	# % 	% 	%ACxx!!ff0c2k?1K1KL    *c"" 	%""9--a0BB 	% 	% 	%"";//BAr!u$BBB	% "2r;77H 	hl s$   &B; ;
CC!C= =3D32D3Unknowni'  r+   u   �unknown_char_mapz/Identity-Hr(   z/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/ZapfDingbatsr3   r9   c                 J   g }d| vr	 d| v rqt          t          | d                   t          v rOt          t	          t          d          t          t          t          | d                                                }nd}|t          t          t          | d                            fS # t          $ r, t          t          | d                   dk    rd|fcY S d|fcY S w xY w| 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 ]a}t          |t                    r|}	 |t!          |          k     rt"          |         ||<   n# t          $ r |||<   |dk    r|}Y nw xY w|dz  }bt          |t$                    r*t          t	          t          d          |                    }||fS )Nz	/Encodingr*   r+   r'   r#   /Type1r%   z-UCS2-r(   z	not foundzAdvanced encoding z not implemented yetz/BaseEncodingz/StandardCodingz/Differencesr    r   )r
   r-   r   r1   zipranger3   r4   
get_objectr0   copyrF   r   __name__r   intlenr   list)r   r9   r:   encr=   os         r   r.   r.      sq    79H"	&b  T#r+%?%?CS%S%Sc

$4T#r+5O5O$PQQ  %7S"[/8R8RSSS 	& 	& 	&CJ((H44 *,,,,:~%%%		&
 )+;(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  ' ' '"#HQKCxx%&
' Q(D!! 3E#JJ1122ZsP   BB' '-CCCAE' '%FF,8G% %AH*)H*#J??KKc           	      r   i }g }d| vr1|                      dd          dk    rt          | |||          S i |g fS d}d}d }t          |           }|                    d          D ]-}t	          |                    d          |||||          \  }}}.|                                D ]\  }	}
|
dk    r|	}|||fS )	N
/ToUnicoder#   r%   rJ   F   
s    	rK   )gettype1_alternative
prepare_cmsplitprocess_cm_linestripitems)r   r9   r;   r<   
process_rgprocess_charmultiline_rgcmlineavalues              r   r/   r/      s    
  "H I266*b!!X--$R:yIIIz2%%JL 	  
BB 
 
1@JJv2
 2
.
L,, NN$$  5C<<JZ**r!   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 )NrW   s,   beginbfrange
<0000> <0001> <0000>
endbfrange   beginbfchars   
beginbfchar
	   endbfchars   
endbfchar
   beginbfranges   
beginbfrange

   endbfranges   
endbfrange
s   <<s   
{
s   >>s   
}
   <   >r      .    r!   r      [s    [    ]s    ]
    rX   )r0   r   r
   r   get_datar-   r5   r^   replacer\   rM   rR   findjoin)r   turc   llijcontents          r   r[   r[     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!   rd   r`   ra   rb   Nr;   r<   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   %      	ro   rj   Trk   Frh   ri   )rt   parse_bfrangeparse_bfchar)rd   r`   ra   rb   r;   r<   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  r   .0r=   s     r   
<listcomp>z!parse_bfrange.<locals>.<listcomp>L      
,
,
,!
,1
,
,
,r!   ro   Fs   %%0%dXr&   r,   r   r   rq   Tr(   surrogatepassr'      rp         )r\   r   decodeappendrQ   maxrR   r   )rd   r;   r<   rb   lstclosure_foundfmtre   bsqnbicfmt2s                r   r   r   F  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 r   r   r   s     r   r   z parse_bfchar.<locals>.<listcomp>  r   r!   ro   r   r,   r&   r   r%   rn   r   r'   r(   r   r   )r\   rR   r   r   r   rQ   )rd   r;   r<   r   map_tos        r   r   r     s#   
,
,djj&&
,
,
,Cs1v;;!#HRL
c((Q,,q6T>>s1v&&-- Q[[1__		+ F 	 	c!f$$%b\Q..		K 	

 	SVR)))!""g c((Q,,,,,,r!   c                 P   |dz  }g }i }d}d| v r| d         d                                          }	 t          t          |d                   |d<   n# t          $ r d|d<   Y nw xY wd|v rt	          |d                   }ng }t          |          dk    r	t          |d         t                    r|d         n|d                                          }|d                                          }t          |t                    r)t          ||          D ]}	|d	         ||	<   |d
d          }n`t          |t                    r|D ]}
|
||<   |dz  }|d	d          }n1t          d|d         
                                z   t                     nt          |          dk    		 ||         }nk# t          $ r |d         dz  }Y nSw xY wd| v rJt	          | d                   }	 t          t          | d                   }t          t          | d                   }||k    s||k     rt          d          |||z
                                            dk    rt          d          |||z
                                            }n# t          $ r d| v r>dt          t          | d                   v r!| d         d                                          }nCd}d}|D ]&}|                                 }|dk    r
||z  }|dz  }'|t          d|          z  d	z  }Y nw xY wt          |          rd}|S )Ng       @r   z/DescendantFontsz/DWr&   g     @@z/Wr   r,   r   zunknown widths : 
z/Widthsz
/FirstCharz	/LastCharzNot in rangez
null width/FontDescriptorz/MissingWidthg        )rN   r
   r7   r4   rS   rR   r0   rQ   rM   r   __repr__rP   r   r   r   )r   r9   r   r?   ww1stft1secondr=   yenmcptxxs                  r   r6   r6     s    "C'H
A	BBR#$Q'2244	%U,,BrFF 	 	 	BrFFF	3;;SYAAA!ffqjj#AaD#..E1AaDOO4E4EBqT__&&F&#&& r6** ! !AaDBqEEabbEFD)) 
  ABrF!GBBabbE)SY,@,@,B,BB   # !ffqjj$	*~HH 	 	 	2 HH	 
bI	/c2l+,,B3;00BJ"z/////b!,,..!33---b)4466HH 	/ 	/ 	/ B&&?d "%6"7? ? , , /0ALLNN  ! !BBAvvRqs1c{{?Q.	/  x   Os7   A A#"A# F* *GG!BJ   BLLc           	         d| vr|||fS t          t          | d                                       d          }t          |          r|||fS |
J d            |                                                                }|                    d          d         }|                    d          d         }|                    dd	                              d	          }|D ]Z}|                    d
          rAd |                    d          D             }t          |          dk    r|d         dk    rX	 t          |d                   }	n# t          $ r Y {w xY w	 t          |d                                                  }
nm# t          $ r` |d                             d          r?	 t          t          |d         dd          d                    }
n# t          $ r Y Y w xY wY Y nw xY w|d                                         dk    r|	}|
|t          |	          <   |                    |	           \|||fS )Nr   z	/FontFilemypys   eexec
r   s	   /Encodingr   rr   rX   s   dupc                     g | ]
}|d k    |S )r!   r   )r   _ws     r   r   z%type1_alternative.<locals>.<listcomp>  s    >>>BB#IIRIIIr!   ro   r   s   putr,   s   /unir   r   )r
   r   rY   r   rN   rs   r\   rt   
startswithrR   rQ   
ValueErrorr   r   KeyErrorr2   r   )r   r;   r9   r<   ft_desctxtlinesliwordsry   vs              r   rZ   rZ     sq    ""Y..#R(9%:;;??LLGw /Y..





'
'
)
)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% ! ! ! ! H	  Qx  D((
 HSVVQZ**sH   8E
EE%F%G/++GG/
G&!G/%G&&G/.G/),binasciir   mathr   typingr   r   r   r   r	   r
   _codecsr   r   _utilsr   r   genericr   r   r   r   r-   r7   rQ   r    r   r1   rL   rM   rA   __annotations__rF   r3   r.   r/   bytesr[   boolr]   r   r   r6   rZ   r   r!   r   <module>r      s                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> > > >F 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$%s*+>  >  >  > B"+"+&)"+
4S>3S	)*"+ "+ "+ "+J&# & & & & &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    &EE&)E8=E
E E E EP'+'+38n'+ '+ Cy	'+
 4S>3S	)*'+ '+ '+ '+ '+ '+r!   