o
    j
                     @   s   d dl 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 d dlmZmZmZ e dZeedZed	d
ZdZdd Zdd ZerNdddZn
ed dddZdd ZdS )    N)	addressof)
namedtuple)	find_spec)Lazy)	add_input	get_inputpagenums_rangerpypdfium2_clitabulate
FontHolder)objpageszFont objects are compared by memory address, so the same font name may occur multiple times
in different configurations (e.g. differing weights, or even hidden differences like /Subtype).
This is intentional. Nameless fonts may also occur.c                 C   s   t | dd d S )NT)r   )r   )parser r   Y/var/www/html/fyndo/pharma/fyndo/venv/lib/python3.10/site-packages/pypdfium2_cli/fonts.pyattach   s   r   c                 c   sf    |   D ]+}|j}| }|jrdnd}ddd tt|jD }|| |	 ||fV  qd S )Nyesnoz, c                 s   s    | ]}t |V  qd S N)str).0pr   r   r   	<genexpr>%   s    z!_iterate_fonts.<locals>.<genexpr>)
valuesr   get_base_nameis_embeddedjoinr   sortedr   get_family_name
get_weight)	all_fonts
fontholderfontobj	base_nameembedded	pages_strr   r   r   _iterate_fonts    s   r&   c                 C   s,   t |}|sd S ttj|| dd|d d S )Nleftpretty)headersstraligntablefmtmaxcolwidths)listprintr   r
   )r)   
table_iterr,   
table_listr   r   r   _show_table)   s   r1   z7You may want to install `tabulate` for prettier output.c                 C   s   t |  |D ]}t | qd S r   )r.   )r)   r/   r,   entryr   r   r   r1   0   s   
c                 C   s   t | }td i }| jD ]6}|| }|jtjfdD ]'}| }t|j	j
}||v r1|| }n
t|t }|||< |j|d  qqd}	g d}
t|}t|	||
 d S )NzGathering fonts from pages...)filter   )z	Base namezFamily nameWeightEmbPages)   r8   NNP   )r   loggerdebugr   get_objectspdfium_cFPDF_PAGEOBJ_TEXTget_fontr   rawcontentsr   setaddr&   r1   )argspdfr    ipagetextobjr"   addrr!   r)   r,   
fonts_iterr   r   r   main6   s$   



rK   r   )loggingctypesr   collectionsr   importlib.utilr   pypdfium2.rawr@   r=   pypdfium2._lazyr   pypdfium2_cli._parsersr   r   r   	getLoggerr:   boolHAVE_TABULATEr   PARSER_DESCr   r&   r1   inforK   r   r   r   r   <module>   s$   



