HEX
Server: Apache
System: Linux srv1.prosuiteplus.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: prosuiteplus (1001)
PHP: 8.3.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/pdfminer/__pycache__/cmapdb.cpython-38.pyc
U

�R�]�/�@s�dZddlZddlZddlZddlZzddlZWnek
rLddlZYnXddlZddl	Z	ddl
mZddl
mZddl
m
Z
ddl
mZddl
mZdd	l
mZdd
lmZddlmZddlmZddlZe	�e�ZGd
d�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gdd�de�Z"Gdd�de!�Z#Gdd�de�Z$Gdd �d e!�Z%Gd!d"�d"e�Z&Gd#d$�d$e�Z'd%d&�Z(ed'k�r�e�)e(ej*��dS)(a Adobe character mapping (CMap) support.

CMaps provide the mapping between character codes and Unicode
code-points to character ids (CIDs).

More information is available on the Adobe website:

  http://opensource.adobe.com/wiki/display/cmap/CMap+Resources

�N�)�
PSStackParser)�
PSSyntaxError)�PSEOF)�	PSLiteral)�literal_name)�KWD)�name2unicode)�choplist)�nunpackc@seZdZdS)�	CMapErrorN��__name__�
__module__�__qualname__�rr�1/usr/lib/python3/dist-packages/pdfminer/cmapdb.pyr%src@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�CMapBasercKs|��|_dS�N)�copy�attrs��self�kwargsrrr�__init__-s
zCMapBase.__init__cCs|j�dd�dkS)N�WModer�r�get�rrrr�is_vertical1szCMapBase.is_verticalcCs||j|<dSr)r)r�k�vrrr�set_attr4s
zCMapBase.set_attrcCsdSrr)r�code�cidrrr�add_code2cid8szCMapBase.add_code2cidcCsdSrr�rr$r#rrr�add_cid2unichr;szCMapBase.add_cid2unichrcCsdSrr�r�cmaprrr�use_cmap>szCMapBase.use_cmapN)
rrr�debugrrr"r%r'r*rrrrr)src@s>eZdZdd�Zdd�Zdd�Zdd�Zejd	d	fd
d�Z	d	S)�CMapcKstj|f|�i|_dSr)rr�code2cidrrrrrDsz
CMap.__init__cCsd|j�d�S)Nz
<CMap: %s>�CMapNamerrrrr�__repr__Isz
CMap.__repr__cs8t|t�sttt|�����fdd���|j|j�dS)NcsBt�|�D]2\}}t|t�r4i}|||<�||�q
|||<q
dSr)�six�	iteritems�
isinstance�dict)Zdst�srcr r!�d�rrrrOs
zCMap.use_cmap.<locals>.copy)r2r,�AssertionError�str�typer-r(rr6rr*Lsz
CMap.use_cmapccsVt�d||�|j}t�|�D]2}||krJ||}t|t�rP|V|j}q|j}qdS)Nzdecode: %r, %r)�logr+r-r0Z	iterbytesr2�int)rr#r5�irrr�decodeZs
zCMap.decodeNcCsf|dkr|j}d}tt�|��D]@\}}||f}t|t�rP|�d||f�q |j|||d�q dS)Nrzcode %r = cid %d
)�outr-r#)r-�sortedr0r1r2r;�write�dump)rr>r-r#r r!�crrrrAgs

z	CMap.dump)
rrrrr/r*r=�sys�stdoutrArrrrr,Bs

r,c@seZdZdd�ZdS)�IdentityCMapcCs(t|�d}|r t�d||�SdSdS)N�z>%dHr��len�structZunpack�rr#�nrrrr=vszIdentityCMap.decodeN�rrrr=rrrrrEtsrEc@seZdZdd�ZdS)�IdentityCMapBytecCs$t|�}|rt�d||�SdSdS)Nz>%dBrrGrJrrrr=�szIdentityCMapByte.decodeNrLrrrrrM~srMc@s2eZdZdd�Zdd�Zdd�Zejfdd�Zd	S)
�
UnicodeMapcKstj|f|�i|_dSr)rr�
cid2unichrrrrrr�szUnicodeMap.__init__cCsd|j�d�S)Nz<UnicodeMap: %s>r.rrrrrr/�szUnicodeMap.__repr__cCst�d||�|j|S)Nzget_unichr: %r, %r)r:r+rO)rr$rrr�
get_unichr�szUnicodeMap.get_unichrcCs0tt�|j��D]\}}|�d||f�qdS)Nzcid %d = unicode %r
)r?r0r1rOr@)rr>r r!rrrrA�szUnicodeMap.dumpN)	rrrrr/rPrCrDrArrrrrN�srNc@seZdZdd�ZdS)�FileCMapcCs�t|t�rt|t�s,ttt|�t|�f���|j}|dd�D].}t|�}||kr\||}q>i}|||<|}q>t|d�}|||<dS)N���)r2r8r;r7r9r-�ord)rr#r$r5rB�trrrr%�s,
zFileCMap.add_code2cidN)rrrr%rrrrrQ�srQc@seZdZdd�ZdS)�FileUnicodeMapcCs|t|t�sttt|����t|t�r6t|j�|j|<nBt|t	�rT|�
dd�|j|<n$t|t�rpt�|�|j|<nt
|��dS)NzUTF-16BE�ignore)r2r;r7r8r9rr	�namerO�bytesr=r0Zunichr�	TypeErrorr&rrrr'�s


zFileUnicodeMap.add_cid2unichrN)rrrr'rrrrrU�srUc@seZdZdd�ZdS)�PyCMapcCs*tj||d�|j|_|jr&d|jd<dS�N)r.rr)r,rZCODE2CIDr-ZIS_VERTICALr)rrW�modulerrrr�s

zPyCMap.__init__N�rrrrrrrrrZ�srZc@seZdZdd�ZdS)�PyUnicodeMapcCs2tj||d�|r&|j|_d|jd<n|j|_dSr[)rNrZCID2UNICHR_VrOrZCID2UNICHR_H)rrWr\�verticalrrrr�szPyUnicodeMap.__init__Nr]rrrrr^�sr^c@sJeZdZiZiZGdd�de�Zedd��Zedd��Z	eddd	��Z
d
S)�CMapDBc@seZdZdS)zCMapDB.CMapNotFoundNr
rrrr�CMapNotFound�srac	Cs�|�dd�}d|}t�d|�tj�dd�tj�tj�t	�d�f}|D]V}tj�||�}tj�
|�rHt�|�}z"tt|�dt�|����W�S|�
�XqHt�|��dS)	N��z%s.pickle.gzzloading: %rZ	CMAP_PATHz/usr/share/pdfminer/r)r)�replacer:�info�os�environr�path�join�dirname�__file__�exists�gzip�open�closer9r8�pickle�loads�readr`ra)�klassrW�filenameZ
cmap_pathsZ	directoryrhZgzfilerrr�
_load_data�s�
"zCMapDB._load_datacCs�|dkrtdd�S|dkr$tdd�S|dkr6tdd�S|dkrHtdd�Sz|j|WStk
rhYnX|�|�}t||�|j|<}|S)Nz
Identity-Hr)rz
Identity-VrZOneByteIdentityHZOneByteIdentityV)rErM�_cmap_cache�KeyErrorrurZ)rsrW�datar)rrr�get_cmap�s




zCMapDB.get_cmapFcsZz|j�|WStk
r$YnX|�d�����fdd�dD�|j�<}||S)Nz
to-unicode-%scsg|]}t��|��qSr)r^)�.0r!�rxrWrr�
<listcomp>sz*CMapDB.get_unicode_map.<locals>.<listcomp>)FT)�_umap_cacherwru)rsrWr_Zumapsrr{r�get_unicode_mapszCMapDB.get_unicode_mapN)F)rrrrvr}rra�classmethodruryr~rrrrr`�s

r`c@s�eZdZdd�Zdd�Zed�Zed�Zed�Zed�Z	ed	�Z
ed
�Zed�Zed�Z
ed
�Zed�Zed�Zed�Zed�Zed�Zed�Zed�Zdd�ZdS)�
CMapParsercCst�||�||_d|_dS)NT)rrr)�_in_cmap)rr)�fprrrrszCMapParser.__init__cCs&z|��Wntk
r YnXdSr)Z
nextobjectrrrrr�runs
zCMapParser.runs	begincmapsendcmapsusecmapsdefsbegincodespacerangesendcodespaceranges
begincidrangesendcidrangesbegincidchars
endcidcharsbeginbfranges
endbfrangesbeginbfchars	endbfcharsbeginnotdefrangesendnotdefrangecCs�||jkrd|_|��dS||jkr0d|_dS|js:dS||jkr�z,|�d�\\}}\}}|j�t|�|�Wnt	k
r�YnXdS||j
kr�z*|�d�\\}}|j�t�
t|���Wn(t	k
r�Yntjk
r�YnXdS||jk�r|��dS||jk�r|��dS||jk�r4|��dS||jk�rFdd�|��D�}td|�D]�\}}	}
t|t��r\t|	t��r\t|
t��r\t|�t|	�k�r��q\|dd�}|	dd�}||k�rƐq\|dd�}
|	dd�}t|
�}t|�}t|
�}t||d�D]6}|t�d	||�|d�}|j�||
|��q�q\dS||jk�r^|��dS||jk�r�d
d�|��D�}td|�D]4\}
}t|t��r�t|
t��r�|j�|t|
���q�dS||jk�r�|��dS||j k�r�dd�|��D�}td|�D]�\}}	}t|t!��rt|	t!��rt|�t|	�k�r8�qt|�}t|	�}t|t"��r�t||d�D]}|j�#||||��qdnp|dd�}t|�}|dd�}t|�}t||d�D]6}|t�d	||�|d�}|j�#|||��q��qdS||j$k�r|��dS||j%k�rvdd�|��D�}td|�D]4\}
}t|
t!��r<t|t!��r<|j�#t|
�|��q<dS||j&k�r�|��dS||j'k�r�|��dS|�(||f�dS)
NTFrFrcSsg|]\}}|�qSrr�rz�__�objrrrr|Usz)CMapParser.do_keyword.<locals>.<listcomp>����z>LcSsg|]\}}|�qSrrr�rrrr|lscSsg|]\}}|�qSrrr�rrrr|vscSsg|]\}}|�qSrrr�rrrr|�s))�KEYWORD_BEGINCMAPr�Zpopall�KEYWORD_ENDCMAP�KEYWORD_DEF�popr)r"rr�KEYWORD_USECMAPr*r`ryra�KEYWORD_BEGINCODESPACERANGE�KEYWORD_ENDCODESPACERANGE�KEYWORD_BEGINCIDRANGE�KEYWORD_ENDCIDRANGEr
r2r8r;rHr�rangerIZpackr%�KEYWORD_BEGINCIDCHAR�KEYWORD_ENDCIDCHAR�KEYWORD_BEGINBFRANGE�KEYWORD_ENDBFRANGErX�listr'�KEYWORD_BEGINBFCHAR�KEYWORD_ENDBFCHAR�KEYWORD_BEGINNOTDEFRANGE�KEYWORD_ENDNOTDEFRANGE�push)r�pos�token�_r r!ZcmapnameZobjs�s�er$ZsprefixZeprefixZsvarZevar�s1Ze1Zvlenr<�xr#�var�base�prefixrrr�
do_keyword-s�



��
�zCMapParser.do_keywordN)rrrrr�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�s&r�cCsH|dd�}|D]2}t|d�}t�}t||���|��|��qdS)Nr�rb)rnrUr�r�rorA)�argv�args�fnamer�r)rrr�main�s

r��__main__)+�__doc__rCrf�os.pathrmZcPicklerp�ImportErrorrIZloggingZpsparserrrrrrrZ
encodingdbr	Zutilsr
rr0Z	getLoggerrr:�	Exceptionr�objectrr,rErMrNrQrUrZr^r`r�r��exitr�rrrr�<module>sJ
2


7