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: //lib/python3/dist-packages/ocrmypdf/__pycache__/_graft.cpython-38.pyc
U

��Z^l)�@s^ddlZddlmZddlmZddlZdZdd�Zdd�Zd	d
�Z	dd�Z
Gd
d�d�ZdS)�N)�suppress)�Path�dcCsvd|krt�i�|d<|d}z|d}Wntk
rHt�i�}YnX|dk	rb||krb|||<||d<||d<dS)z?Update this page's fonts with a reference to the Glyphless fontz
/Resources�/FontNz/ProcSet)�pikepdfZ
Dictionary�KeyError)�page�font�font_key�procsetZ	resourcesZfonts�r�1/usr/lib/python3/dist-packages/ocrmypdf/_graft.py�_update_page_resourcessrcs<g}d}d}g}|��t�|d�D]�\}}|sf|t�d�krVd}d}|�||f�q�|�||f�q$|t�d�kr||d}|�||f�|t�d�kr$d}|dkr�|�|�|��q$d	d
��g}|D]V\}}|t�d�kr�|d}	|	��}
n$d��fd
d�|D��d|��}
|�|
�q�d�|�}t�	||�|_
dS)NFr�ZBTTZTrZET�cSs2z
|��WStk
r,t|��d�YSXdS)N�ascii)�unparse�AttributeError�str�encode)�oprrr
�convertGs
z%strip_invisible_text.<locals>.convertzINLINE IMAGE� c3s|]}�|�VqdS�Nr)�.0r�rrr
�	<genexpr>Tsz'strip_invisible_text.<locals>.<genexpr>�
)Zpage_contents_coalescerZparse_content_streamZOperator�append�extend�clearr�join�Stream�Contents)Zpdfr�streamZin_text_objZrender_modeZtext_objectsZoperands�operator�linesZiim�lineZcontent_streamrrr
�strip_invisible_text.s<


$
r(c	s�|�d�t|���jdkr dSt�|���jdj��}	|j�	|���fdd�t
d�D�}
|
d|
d|
d|
d	}}�fd
d�t
d�D�}
|
d|
d|
d|
d	}
}t���|d|d�}t���|
d|d�}t���|
d|
d	�}|d}t���
|�}|dk�r.||}}|
|}||}t���||�}|||||}d
|��|	d}	t�||	�}|�r�t|���j|dd�t�|||d����dS)zAInsert the text layer from text page 0 on to pdf_base at page_numZGraftingrNcs g|]}t�jdj|��qS)r)�float�pages�MediaBox�r�v)�pdf_textrr
�
<listcomp>nsz%_graft_text_layer.<locals>.<listcomp>��r�csg|]}t�j|��qSr)r)r+r,)�	base_pagerr
r/qs�h)�Zisq %s cm
s
Q
T)Zprepend�rr	r
r)�debugr�stat�st_sizer�openr*r#Z
read_bytes�p�rangeZ	PdfMatrixZ
translatedZrotatedZscaledrr"r(Zpage_contents_addr�close)�pdf_base�page_num�textr	r
r�rotation�strip_old_text�logZpdf_text_contentsZmediaboxZwtZhtZwpZhp�	translateZuntranslateZcorner�rotateZscale_xZscale_yZscaleZctmZnew_text_layerr)r3r.r
�_graft_text_layer[sB

""



�rFc	Cs�d\}}d}z�t�|���}z|jdj�di�}Wn(tttfk
rZYW5QR�WdSX|D] }|�|d�}|dk	r`|}q�q`|r�|�|�}||fW5QR�WSQRXWnt	tj
fk
r�YdSXdS)z0Copy a font from the filename text into pdf_base�NN)z/f-0-0z/F1rrN)rr:r*�	Resources�getr�
IndexErrorrZcopy_foreign�FileNotFoundErrorZPdfError)	r@r>r	r
Zpossible_font_namesr.Zpdf_text_fonts�fZ
pdf_text_fontrrr
�
_find_font�s$
 rMc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
OcrGraftercCsr||_|j|_t|j���|_t�|j�|_d\|_	|_
|j|_|�d�|_
|j�tj�d��|_d|_d|_dS)NrGzgraft_layers.pdfs&[ /PDF /Text /ImageB /ImageC /ImageI ]r2r)�contextrCr�origin�resolve�	path_baserr:r>r	r
�pdfinfoZget_path�output_fileZ
make_indirectZObject�parser�emplacements�
interim_count)�selfrOrrr
�__init__�s
�zOcrGrafter.__init__cCs�|\}}}}}|r,|js,t||j�\|_|_d}|j|j}|rLt|���nd}	|	dk	r�|	|jkr�|j	�
d�t�|��T}
|j
d7_
|
jd}|jj�|�|jjd}|jj|�|�|jjd=W5QRXd}|r�|}|}
|
|d}|j	�
d|�d	|
�d
|�d
|�d
|��
�|�rX|j�rX|jjj}t|j|d||j|j||j||j	d�	||d|jj|_|j
tdk�r�|��dS)NFzEmplacement updater2r���Tr4zRotations for page z$: [text, auto, misalign, content] = z, )	r>r?r@r	r
rArrBrC)r	rMr>r
rSrArrQrRrCr7rr:rVr*rZemplacerO�optionsZredo_ocrrFrZRotate�MAX_REPLACE_PAGES�save_and_reload)rXZpage_resultZpagenoZimager@Z_sidecarZautorotate_correctionZ
emplaced_pageZcontent_rotationZ
path_imageZ	pdf_imageZforeign_image_pageZlocal_image_pageZ
text_rotationZtext_misalignedZ	strip_oldrrr
�
graft_page�sR

 �
��zOcrGrafter.graft_pagec	Cs�|jjd}t||j|j|jd�|jd|jd�d�}|jj	j
sbtt��t
�|�W5QRX|jd|jd�d�}|j�|�|j��t�|�|_|jjdjj|_d\|_|_|jd7_dS)Nrr6Z_workingr2z.pdfrG)r>r*rr	r
rrTrWrOr[Zkeep_temporary_filesrrK�os�unlink�saver=rr:rHZProcSet)rXZpage0Zold_fileZ	next_filerrr
r]�s$�	


zOcrGrafter.save_and_reloadcCs|j�|j�|j��|jSr)r>rarTr=)rXrrr
�finalizes
zOcrGrafter.finalizeN)�__name__�
__module__�__qualname__rYr^r]rbrrrr
rN�s6rN)r_�
contextlibr�pathlibrrr\rr(rFrMrNrrrr
�<module>s-@