o
    ¾Ùøiåˆ  ã                   @   sâ  d dl Z d dlZd dl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 d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z% d dl&m'Z' d d	l(m)Z) d d
l*m+Z+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? e @eA¡ZBG dd„ de'ƒZCG dd„ deCƒZDe
de	ee5ƒZEG dd„ deCeeE ƒZFG dd„ deFe5 ƒZGG dd„ deFe5 ƒZHG dd„ deFe5 ƒZIG dd„ deFe5 ƒZJdS )é    N)ÚSequence)ÚBinaryIOÚClassVarÚGenericÚTextIOÚTypeVarÚcast)Úutils)ÚImageWriter)ÚLAParamsÚLTAnnoÚLTCharÚLTComponentÚLTContainerÚLTCurveÚLTFigureÚLTImageÚLTItemÚLTLayoutContainerÚLTLineÚLTPageÚLTRectÚLTTextÚ	LTTextBoxÚLTTextBoxVerticalÚLTTextGroupÚ
LTTextLineÚTextGroupElement)ÚPDFColorSpace)ÚPDFTextDevice)ÚPDFValueError)ÚPDFFontÚPDFUnicodeNotDefined)ÚPDFGraphicStateÚPDFResourceManager)ÚPDFPage)Ú	PDFStream)ÚAnyIOÚMatrixÚPathSegmentÚPointÚRectÚapply_matrix_ptÚapply_matrix_rectÚbbox2strÚencÚmake_compat_strÚmult_matrixc                   @   s(  e Zd ZU eed< eed< 		d0dedededB ddfd	d
„Z	de
deddfdd„Zde
ddfdd„Zdedededdfdd„Zdeddfdd„Zdededdfdd„Zdededededee ddfd d!„Zded"ed#ed$ed%ed&ed'ed(edefd)d*„Zd"ed&edefd+d,„Zd-eddfd.d/„ZdS )1ÚPDFLayoutAnalyzerÚcur_itemÚctmé   NÚrsrcmgrÚpagenoÚlaparamsÚreturnc                 C   s"   t  | |¡ || _|| _g | _d S ©N)r   Ú__init__r7   r8   Ú_stack©Úselfr6   r7   r8   © r?   ú_/home/develop/edictos_py/central_edictos/env/lib/python3.10/site-packages/pdfminer/converter.pyr;   A   s   
zPDFLayoutAnalyzer.__init__Úpagec                 C   sB   t ||jƒ\}}}}ddt|| ƒt|| ƒf}t| j|ƒ| _d S )Nr   )r-   ÚmediaboxÚabsr   r7   r3   )r>   rA   r4   Úx0Úy0Úx1Úy1rB   r?   r?   r@   Ú
begin_pageL   s   zPDFLayoutAnalyzer.begin_pagec                 C   sl   | j rJ tt| j ƒƒƒ‚t| jtƒsJ tt| jƒƒƒ‚| jd ur'| j | j¡ |  j	d7  _	|  
| j¡ d S )Nr5   )r<   ÚstrÚlenÚ
isinstancer3   r   Útyper8   Úanalyzer7   Úreceive_layout)r>   rA   r?   r?   r@   Úend_pageQ   s   
zPDFLayoutAnalyzer.end_pageÚnameÚbboxÚmatrixc                 C   s(   | j  | j¡ t||t|| jƒƒ| _d S r:   )r<   Úappendr3   r   r1   r4   )r>   rP   rQ   rR   r?   r?   r@   Úbegin_figureY   s   zPDFLayoutAnalyzer.begin_figureÚ_c                 C   s@   | j }t| j tƒsJ tt| j ƒƒƒ‚| j ¡ | _ | j  |¡ d S r:   )r3   rK   r   rI   rL   r<   ÚpopÚadd)r>   rU   Úfigr?   r?   r@   Ú
end_figure]   s   zPDFLayoutAnalyzer.end_figureÚstreamc                 C   sR   t | jtƒsJ tt| jƒƒƒ‚t||| jj| jj| jj| jj	fƒ}| j 
|¡ d S r:   )rK   r3   r   rI   rL   r   rD   rE   rF   rG   rW   )r>   rP   rZ   Úitemr?   r?   r@   Úrender_imagec   s   ýzPDFLayoutAnalyzer.render_imageÚgstateÚstrokeÚfillÚevenoddÚpathc                    s€  d  dd„ ˆ D ƒ¡}|dd… dkrdS | d¡dkr;t d|¡D ]}ˆ | d¡| d¡… }ˆ |||||¡ q!dS ‡ fd	d
„ˆ D ƒ}	‡fdd
„|	D ƒ}
dd
„ ˆ D ƒ}‡fdd
„ˆ D ƒ}dd
„ t||dd�D ƒ}t|ƒdkr‹|dd… dkr‹|
d |
d kr‹|dd… d }|
 	¡  |dv r­t
|j|
d |
d ||||j|j||jd�
}ˆj |¡ dS |dv �r(|
\\}}\}}\}}\}}}|
d |
d k}||koØ||koØ||koØ||kpè||koè||koè||koè||k}|�r|�rt|jg |
d ¢|
d ¢R ||||j|j||jƒ	}ˆj |¡ dS t|j|
||||j|j||jƒ	}ˆj |¡ dS t|j|
||||j|j||jƒ	}ˆj |¡ dS )z@Paint paths described in section 4.4 of the PDF reference manualÚ c                 s   s   � | ]}|d  V  qdS )r   Nr?   )Ú.0Úxr?   r?   r@   Ú	<genexpr>u   s   € z/PDFLayoutAnalyzer.paint_path.<locals>.<genexpr>Nr5   Úmzm[^m]+r   c                    s:   g | ]}t t|d  dkr|dd… nˆ d  dd… ƒ‘qS )r   ÚhéþÿÿÿN)r   r*   )rc   Úp)ra   r?   r@   Ú
<listcomp>Ž   s    .ÿz0PDFLayoutAnalyzer.paint_path.<locals>.<listcomp>c                    s   g | ]}t ˆ j|ƒ‘qS r?   )r,   r4   )rc   Úpt©r>   r?   r@   rj   ‘   ó    c                 S   s   g | ]}t |d  ƒ‘qS )r   )rI   ©rc   Ú	operationr?   r?   r@   rj   “   rm   c              	      s<   g | ]}‡ fd d„t |ddd… |ddd… dd�D ƒ‘qS )c                    s(   g | ]\}}t ˆ jt|ƒt|ƒfƒ‘qS r?   )r,   r4   Úfloat)rc   Úoperand1Úoperand2rl   r?   r@   rj   •   s    ÿÿz;PDFLayoutAnalyzer.paint_path.<locals>.<listcomp>.<listcomp>r5   Né   F©Ústrict)Úziprn   rl   r?   r@   rj   ”   s    
úÿþÿc                 S   s"   g | ]\}}t t|g|¢R ƒ‘qS r?   )r   r)   )rc   Úori   r?   r?   r@   rj   �   s    ÿÿFrt   é   rh   Úlhrg   >   ÚmlÚmlh)Úoriginal_pathÚdashing_style>   ÚmlllhÚmllllé   rs   )ÚjoinÚcountÚreÚfinditerÚstartÚendÚ
paint_pathrv   rJ   rV   r   Ú	linewidthÚscolorÚncolorÚdashr3   rW   r   r   )r>   r]   r^   r_   r`   ra   Úshaperf   ÚsubpathÚraw_ptsÚptsÚ	operatorsÚtransformed_pointsÚtransformed_pathÚlinerD   rE   rF   rG   Úx2Úy2Úx3Úy3rU   Úis_closed_loopÚhas_square_coordinatesÚrectÚcurver?   )ra   r>   r@   r‡   l   s    	þ
ÿ
ù	þ,ö
ÿþ÷÷÷zPDFLayoutAnalyzer.paint_pathÚfontÚfontsizeÚscalingÚriseÚcidÚncsÚgraphicstatec	                 C   sˆ   z|  |¡}	t|	tƒsJ tt|	ƒƒƒ‚W n ty#   |  ||¡}	Y nw | |¡}
| |¡}t||||||	|
|||ƒ
}| j	 
|¡ |jS r:   )Ú	to_unichrrK   rI   rL   r"   Úhandle_undefined_charÚ
char_widthÚ	char_dispr   r3   rW   Úadv)r>   rR   rœ   r�   rž   rŸ   r    r¡   r¢   ÚtextÚ	textwidthÚtextdispr[   r?   r?   r@   Úrender_charé   s,   
ÿ

özPDFLayoutAnalyzer.render_charc                 C   s"   t  d|›d|›�¡ d|› d�S )Nzundefined: ú, z(cid:ú))ÚlogÚdebug)r>   rœ   r    r?   r?   r@   r¤   
  s   z'PDFLayoutAnalyzer.handle_undefined_charÚltpagec                 C   ó   d S r:   r?   ©r>   r°   r?   r?   r@   rN     s   z PDFLayoutAnalyzer.receive_layout©r5   N)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r(   r$   Úintr   r;   r%   rH   rO   rI   r+   rT   rY   r&   r\   r#   Úboolr   r)   r‡   r!   rp   r   r«   r¤   r   rN   r?   r?   r?   r@   r2   =   sj   
 üþýü
û	þýüûú
ù}þýüûúùø	÷

ö!r2   c                	   @   sP   e Zd Z		ddedededB ddfdd„Zd	eddfd
d„Zdefdd„Z	dS )ÚPDFPageAggregatorr5   Nr6   r7   r8   r9   c                 C   s   t j| |||d� d | _d S ©N)r7   r8   )r2   r;   Úresultr=   r?   r?   r@   r;     s   
zPDFPageAggregator.__init__r°   c                 C   s
   || _ d S r:   ©r¼   r²   r?   r?   r@   rN     s   
z PDFPageAggregator.receive_layoutc                 C   s   | j d usJ ‚| j S r:   r½   rl   r?   r?   r@   Ú
get_result  s   zPDFPageAggregator.get_resultr³   )
r´   rµ   r¶   r$   r¸   r   r;   r   rN   r¾   r?   r?   r?   r@   rº     s    üþýü
û	rº   ÚIOTypec                   @   sP   e Zd Z			ddedededededB d	dfd
d„Ze	de
d	efdd„ƒZdS )ÚPDFConverterúutf-8r5   Nr6   ÚoutfpÚcodecr7   r8   r9   c                 C   s0   t j| |||d� || _|| _|  | j¡| _d S r»   )r2   r;   rÂ   rÃ   Ú_is_binary_streamÚoutfp_binary)r>   r6   rÂ   rÃ   r7   r8   r?   r?   r@   r;   )  s   zPDFConverter.__init__c                 C   sL   dt | ddƒv r
dS t| dƒrdS t| tjƒrdS t| tjtjfƒr$dS dS )z"Test if an stream is binary or notÚbÚmoderb   TF)ÚgetattrÚhasattrrK   ÚioÚBytesIOÚStringIOÚ
TextIOBase)rÂ   r?   r?   r@   rÄ   6  s   
zPDFConverter._is_binary_stream)rÁ   r5   N)r´   rµ   r¶   r$   r¿   rI   r¸   r   r;   Ústaticmethodr'   r¹   rÄ   r?   r?   r?   r@   rÀ   (  s&    úþýüûú
ùrÀ   c                       s²   e Zd Z					d dedededed	edB d
ede	dB ddf‡ fdd„Z
deddfdd„Zdeddfdd„Zdededdfdd„Zdededededee ddfdd„Z‡  ZS )!ÚTextConverterrÁ   r5   NFr6   rÂ   rÃ   r7   r8   Ú
showpagenoÚimagewriterr9   c                    s&   t ƒ j|||||d� || _|| _d S )N©rÃ   r7   r8   )Úsuperr;   rÐ   rÑ   )r>   r6   rÂ   rÃ   r7   r8   rÐ   rÑ   ©Ú	__class__r?   r@   r;   G  s   

zTextConverter.__init__r¨   c                 C   sF   t  || jd¡}| jrtt| jƒ | ¡ ¡ d S tt	| jƒ |¡ d S )NÚignore)
r	   Úcompatible_encode_methodrÃ   rÅ   r   r   rÂ   ÚwriteÚencoder   ©r>   r¨   r?   r?   r@   Ú
write_textU  s   zTextConverter.write_textr°   c                    sH   dt dd f‡ ‡fdd„‰ ˆjrˆ d|j› d�¡ ˆ |ƒ ˆ d¡ d S )Nr[   r9   c                    sz   t | tƒr| D ]}ˆ |ƒ qnt | tƒrˆ |  ¡ ¡ t | tƒr'ˆ d¡ d S t | tƒr9ˆjd ur;ˆj | ¡ d S d S d S )NÚ
)	rK   r   r   rÛ   Úget_textr   r   rÑ   Úexport_image©r[   Úchild©Úrenderr>   r?   r@   râ   ]  s   

ÿ

ÿz,TextConverter.receive_layout.<locals>.renderzPage rÜ   ú)r   rÐ   rÛ   Úpageidr²   r?   rá   r@   rN   \  s
   zTextConverter.receive_layoutrP   rZ   c                 C   s    | j d urt | ||¡ d S d S r:   )rÑ   rÀ   r\   )r>   rP   rZ   r?   r?   r@   r\   p  s   
ÿzTextConverter.render_imager]   r^   r_   r`   ra   c                 C   r±   r:   r?   )r>   r]   r^   r_   r`   ra   r?   r?   r@   r‡   t  s   zTextConverter.paint_path)rÁ   r5   NFN)r´   rµ   r¶   r$   r'   rI   r¸   r   r¹   r
   r;   rÛ   r   rN   r&   r\   r#   r   r)   r‡   Ú__classcell__r?   r?   rÔ   r@   rÏ   F  sN    øþýüûúùø	÷þýüûúùrÏ   c                   @   s  e Zd ZU dddddddœZeeeef  ed< d	dd
œZeeeef  ed< 												dOde	de
dedededB dededededededB ded eeef dB d!eeef dB d"dfd#d$„Zd%ed"dfd&d'„ZdPd(d)„ZdPd*d+„Zd%ed"dfd,d-„Zd.ed/ed0ed1ed2ed3ed"dfd4d5„Zd.ed/ed6ed"dfd7d8„Zd6ed/ed0ed1ed2ed3ed"dfd9d:„Zd.ed%ed0ed1ed;ed"dfd<d=„Z	>dQd.ed/ed0ed1ed2ed3ed?ed"dfd@dA„Zd.ed"dfdBdC„Zd%edDedEed"dfdFdG„ZdPdHdI„ZdJed"dfdKdL„Z dPdMdN„Z!dS )RÚHTMLConverterÚyellowÚmagentaÚcyanÚredÚblackÚgray)ÚfigureÚtextlineÚtextboxÚ	textgroupr›   rA   ÚRECT_COLORSÚblue)rï   ÚcharÚTEXT_COLORSrÁ   r5   Nç      ð?ÚnormalTé2   r   r6   rÂ   rÃ   r7   r8   ÚscaleÚ	fontscaleÚ
layoutmoderÐ   Ú
pagemarginrÑ   r¯   Úrect_colorsÚtext_colorsr9   c                 C   sÐ   t j| |||||d� | jr| jstdƒ‚| js| jrtdƒ‚|d u r'ddi}|d u r0dddœ}|| _|| _|| _|	| _|
| _	|| _
|| _|| _|rX| j | j¡ | j | j¡ | j	| _d | _g | _|  ¡  d S )NrÒ   ú)Codec is required for a binary I/O outputz1Codec must not be specified for a text I/O outputró   rë   rì   )r›   rA   )rÀ   r;   rÅ   rÃ   r    rø   rù   rú   rÐ   rû   rÑ   rü   rý   Úupdaterñ   rô   Ú_yoffsetÚ_fontÚ
_fontstackÚwrite_header)r>   r6   rÂ   rÃ   r7   r8   rø   rù   rú   rÐ   rû   rÑ   r¯   rü   rý   r?   r?   r@   r;   Ž  s>   ú

zHTMLConverter.__init__r¨   c                 C   ó:   | j rtt| jƒ | | j ¡¡ d S tt| jƒ |¡ d S r:   ©rÃ   r   r   rÂ   rØ   rÙ   r   rÚ   r?   r?   r@   rØ   Ã  ó   zHTMLConverter.writec                 C   s<   |   d¡ | jrd| j› d�}nd}|   |¡ |   d¡ d S )Nz<html><head>
z<<meta http-equiv="Content-Type" content="text/html; charset=ú">
z5<meta http-equiv="Content-Type" content="text/html">
z</head><body>
)rØ   rÃ   )r>   Úsr?   r?   r@   r  É  s   
ÿÿ
zHTMLConverter.write_headerc                 C   s@   dd„ t d| jƒD ƒ}dd |¡› d�}|  |¡ |  d¡ d S )Nc                 S   s   g | ]}d |› d|› d�‘qS )z
<a href="#ú">z</a>r?   )rc   Úir?   r?   r@   rj   Ö  s    z.HTMLConverter.write_footer.<locals>.<listcomp>r5   z/<div style="position:absolute; top:0px;">Page: r¬   ú</div>
z</body></html>
)Úranger7   r�   rØ   )r>   Ú
page_linksr  r?   r?   r@   Úwrite_footerÕ  s   ÿÿ
zHTMLConverter.write_footerc                 C   s   |   t|ƒ¡ d S r:   )rØ   r/   rÚ   r?   r?   r@   rÛ   Þ  s   zHTMLConverter.write_textÚcolorÚborderwidthrd   ÚyÚwrg   c           	      C   sn   | j  |¡}|d ur5d|› d|› d|| j › d| j| | j › d|| j › d|| j › d�}|  |¡ d S d S )Nz(<span style="position:absolute; border: ú zpx solid; left:úpx; top:ú
px; width:úpx; height:zpx;"></span>
)rü   Úgetrø   r   rØ   )	r>   r  r  rd   r  r  rg   Úcolor2r  r?   r?   r@   Ú
place_rectá  s$   	ÿÿþýüûÿ÷zHTMLConverter.place_rectr[   c                 C   s    |   |||j|j|j|j¡ d S r:   )r  rD   rG   ÚwidthÚheight)r>   r  r  r[   r?   r?   r@   Úplace_borderö  s    zHTMLConverter.place_borderc           	      C   st   | j d ur8| j  |¡}dt|ƒ› d|› d|| j › d| j| | j › d|| j › d|| j › d�}|  |¡ d S d S )Nz
<img src="z
" border="z!" style="position:absolute; left:r  zpx;" width="ú
" height="ú" />
)rÑ   rÞ   r/   rø   r   rØ   )	r>   r[   r  rd   r  r  rg   rP   r  r?   r?   r@   Úplace_imageù  s   
	þýüûÿözHTMLConverter.place_imageÚsizec              	   C   sv   | j  |¡}|d ur9d|› d|| j › d| j| | j › d|| j | j › d�	}|  |¡ |  |¡ |  d¡ d S d S )Nz&<span style="position:absolute; color:ú; left:r  zpx; font-size:úpx;">ú</span>
)rý   r  rø   r   rù   rØ   rÛ   )r>   r  r¨   rd   r  r   r  r  r?   r?   r@   Ú
place_text  s    ÿþýüÿ

özHTMLConverter.place_textÚFalseÚwriting_modec           	      C   sp   | j  | j¡ d | _d|› d|› d|› d|| j › d| j| | j › d|| j › d|| j › d�}|  |¡ d S )	Nz'<div style="position:absolute; border: r  zpx solid; writing-mode:r!  r  r  r  r"  )r  rS   r  rø   r   rØ   )	r>   r  r  rd   r  r  rg   r&  r  r?   r?   r@   Ú	begin_div#  s&   
ÿÿþýüûúÿ	zHTMLConverter.begin_divc                 C   s.   | j d ur
|  d¡ | j ¡ | _ |  d¡ d S )Nú</span>z</div>)r  rØ   r  rV   )r>   r  r?   r?   r@   Úend_div:  s   

zHTMLConverter.end_divÚfontnamer�   c                 C   sl   ||f}|| j kr/| j d ur|  d¡ | d¡d }|  d|› d|| j | j › d�¡ || _ |  |¡ d S )Nr(  ú+éÿÿÿÿz<span style="font-family: z; font-size:zpx">)r  rØ   Úsplitrø   rù   rÛ   )r>   r¨   r*  r�   rœ   Úfontname_without_subset_tagr?   r?   r@   Úput_text@  s   


ÿþÿzHTMLConverter.put_textc                 C   ó   |   d¡ d S )Nz<br>©rØ   rl   r?   r?   r@   Úput_newlineO  ó   zHTMLConverter.put_newliner°   c                    sR   dt tB dd f‡‡fdd„‰dtdd f‡ ‡‡fdd„‰ ˆ |ƒ ˆ jˆj7  _d S )Nr[   r9   c                    s2   t | tƒrˆ  dd| ¡ | D ]}ˆ|ƒ qd S d S )Nrð   r5   )rK   r   r  rß   ©r>   Ú
show_groupr?   r@   r5  S  s   

ýz0HTMLConverter.receive_layout.<locals>.show_groupc              
      sÈ  t | tƒrPˆ j| j7  _ˆ dd| ¡ ˆjr4ˆ dˆj| j ˆj › �¡ ˆ d| j› d| j› d�¡ | D ]}ˆ |ƒ q6| j	d urL| j	D ]}ˆ|ƒ qEd S d S t | t
ƒr^ˆ dd| ¡ d S t | tƒr�ˆ dd| j| j| j| j¡ | D ]}ˆ |ƒ qsˆ d¡ d S t | tƒr–ˆ | d| j| j| j| j¡ d S ˆjd	kr÷t | tƒr²ˆ d
d| ¡ | D ]}ˆ |ƒ q©d S t | tƒrÙˆ dd| ¡ ˆ dt| jd ƒ| j| jd¡ | D ]}ˆ |ƒ qÐd S t | tƒrõˆ dd| ¡ ˆ d|  ¡ | j| j| j¡ d S d S t | tƒ�r| D ]}ˆ |ƒ qÿˆjdk�rˆ ¡  d S d S t | tƒ�r<ˆ dd| j| j| j| j|  ¡ ¡ | D ]}ˆ |ƒ �q-ˆ d¡ d S t | tƒ�rSt| jƒ}ˆ  |  ¡ || j¡ d S t | t!ƒ�rbˆ "|  ¡ ¡ d S d S )NrA   r5   z*<div style="position:absolute; top:%dpx;">z	<a name="z">Page z</a></div>
r›   rí   Úexactrî   rï   é   ró   Úloose)#rK   r   r   rG   r  rÐ   rØ   rø   rä   Úgroupsr   r   r'  rD   r  r  r)  r   r  rú   r   r   r$  rI   Úindexr   rÝ   r   r2  Úget_writing_moder0   r*  r/  r   rÛ   )r[   rà   Úgroupr*  ©râ   r>   r5  r?   r@   râ   Y  s¢   
ÿÿÿ



þ



 


ÿ
û
ÿ
ûþ	
ÿù	
ÿz,HTMLConverter.receive_layout.<locals>.render)r   r   r   r   rû   r²   r?   r=  r@   rN   R  s   LzHTMLConverter.receive_layoutc                 C   ó   |   ¡  d S r:   ©r  rl   r?   r?   r@   Úclose¨  ó   zHTMLConverter.close)rÁ   r5   Nr5   rõ   rö   Tr÷   Nr   NN©r9   N)r%  )"r´   rµ   r¶   rñ   r   ÚdictrI   r·   rô   r$   r'   r¸   r   rp   r¹   r
   r;   rØ   r  r  rÛ   r  r   r  r   r  r$  r'  r)  r/  r2  r   rN   r@  r?   r?   r?   r@   ræ     sú   
 ú
þ	ñþýüûúùø	÷
öõôóòñ
ð5

	þýüûúù
øþýüûúù
øþýüûú
ùøþýüûúùø	
÷
Vræ   c                   @   s¨   e Zd Ze d¡Z					ddededed	e	d
e
dB dedB deddfdd„Zdeddfdd„Zddd„Zddd„Zdeddfdd„Zdeddfdd„Zddd„ZdS ) ÚXMLConverterz[ ---]rÁ   r5   NFr6   rÂ   rÃ   r7   r8   rÑ   Ústripcontrolr9   c                 C   sD   t j| |||||d� | j| j krtdƒ‚|| _|| _|  ¡  d S )NrÒ   rþ   )rÀ   r;   rÅ   rÃ   r    rÑ   rE  r  )r>   r6   rÂ   rÃ   r7   r8   rÑ   rE  r?   r?   r@   r;   ¯  s   
ú
zXMLConverter.__init__r¨   c                 C   r  r:   r  rÚ   r?   r?   r@   rØ   Ê  r  zXMLConverter.writec                 C   s4   | j r|  d| j › d�¡ n|  d¡ |  d¡ d S )Nz<?xml version="1.0" encoding="z" ?>
z<?xml version="1.0" ?>
z<pages>
©rÃ   rØ   rl   r?   r?   r@   r  Ð  s   
zXMLConverter.write_headerc                 C   r0  )Nz	</pages>
r1  rl   r?   r?   r@   r  ×  r3  zXMLConverter.write_footerc                 C   s&   | j r
| j d|¡}|  t|ƒ¡ d S ©Nrb   )rE  ÚCONTROLÚsubrØ   r/   rÚ   r?   r?   r@   rÛ   Ú  s   zXMLConverter.write_textr°   c                    s>   dt dd f‡‡fdd„‰dt dd f‡ ‡‡fdd„‰ ˆ |ƒ d S )Nr[   r9   c                    st   t | tƒrˆ  d| j› dt| jƒ› d�¡ d S t | tƒr8ˆ  dt| jƒ› d�¡ | D ]}ˆ|ƒ q*ˆ  d¡ d S d S )Nú<textbox id="ú" bbox="r  z<textgroup bbox="r  z</textgroup>
)rK   r   rØ   r:  r.   rQ   r   rß   r4  r?   r@   r5  à  s   
ÿ

üz/XMLConverter.receive_layout.<locals>.show_groupc                    s4  t | tƒrDd| j› dt| jƒ› d| j› d�}ˆ |¡ | D ]}ˆ |ƒ q| jd ur=ˆ d¡ | jD ]}ˆ|ƒ q1ˆ d¡ ˆ d¡ d S t | tƒr]d| j	› dt| jƒ› d	�}ˆ |¡ d S t | t
ƒrvd
| j	› dt| jƒ› d	�}ˆ |¡ d S t | tƒr”d| j	› dt| jƒ› d|  ¡ › d�}ˆ |¡ d S t | tƒr»d| j› dt| jƒ› d�}ˆ |¡ | D ]}ˆ |ƒ q­ˆ d¡ d S t | tƒrÜˆ dt| jƒ› d�¡ | D ]}ˆ |ƒ qÎˆ d¡ d S t | tƒ�rd}t | tƒrëd}d| j› dt| jƒ› d|› d�}ˆ |¡ | D ]}ˆ |ƒ �qˆ d¡ d S t | tƒ�rHdt| jƒ› dt| jƒ› d| jj› d| jj› d| jd›d�}ˆ |¡ ˆ |  ¡ ¡ ˆ d¡ d S t | tƒ�r[ˆ d|  ¡ › d�¡ d S t | tƒ�r’ˆjd u�r‚ˆj | ¡}ˆ d t|ƒ› d!| j › d"| j!› d	�¡ d S ˆ d#| j › d"| j!› d	�¡ d S t"t#d$| fƒƒ‚)%Nz
<page id="rK  z
" rotate="r  z	<layout>
z
</layout>
z</page>
z<line linewidth="r  z<rect linewidth="z<curve linewidth="z" pts="z"/>
z<figure name="z
</figure>
z<textline bbox="z</textline>
rb   z wmode="vertical"rJ  ú"z>
z</textbox>
z<text font="z" colourspace="z" ncolour="z" size="z.3fr	  z</text>
z<text>z<image src="z	" width="r  z<image width="Ú	Unhandled)$rK   r   rä   r.   rQ   ÚrotaterØ   r9  r   rˆ   r   r   Úget_ptsr   rP   r   r   r   r:  r   r/   r*  r¡   r¢   rŠ   r   rÛ   rÝ   r   r   rÑ   rÞ   r  r  ÚAssertionErrorrI   )r[   r  rà   r<  ÚwmoderP   r=  r?   r@   râ   ë  sÀ   

ÿþÿ







ÿþÿ
ÿþÿ
ÿþýÿ





 
ÿþýüûÿ
ÿþýÿÿz+XMLConverter.receive_layout.<locals>.render©r   r²   r?   r=  r@   rN   ß  s   YzXMLConverter.receive_layoutc                 C   r>  r:   r?  rl   r?   r?   r@   r@  F  rA  zXMLConverter.close)rÁ   r5   NNFrB  )r´   rµ   r¶   rƒ   ÚcompilerH  r$   r'   rI   r¸   r   r
   r¹   r;   rØ   r  r  rÛ   r   rN   r@  r?   r?   r?   r@   rD  ¬  s<    
øþýüûúùø	
÷

grD  c                   @   sº   e Zd ZdZe d¡Z				d#deded	e	d
e
dedB defdd„Zdede	fdd„Zde	ddfdd„Zd$dd„Zd$dd„Zde	ddfdd„Zd$dd„Zdeddfdd „Zd$d!d"„ZdS )%ÚHOCRConverterzKExtract an hOCR representation from explicit text information within a PDF.z[\x00-\x08\x0b-\x0c\x0e-\x1f]Úutf8r5   NFr6   rÂ   rÃ   r7   r8   rE  c                 C   s.   t j| |||||d� || _d| _|  ¡  d S )NrÒ   F)rÀ   r;   rE  Úwithin_charsr  )r>   r6   rÂ   rÃ   r7   r8   rE  r?   r?   r@   r;   ]  s   	úzHOCRConverter.__init__rQ   r9   c           
      C   s\   |\}}}}t |ƒ}t | jd | ƒ}t |ƒ}t | jd | ƒ}	d|› d|› d|› d|	› �S )Nrx   zbbox r  )r¸   Ú	page_bbox)
r>   rQ   Úin_x0Úin_y0Úin_x1Úin_y1Úout_x0Úout_y0Úout_x1Úout_y1r?   r?   r@   Ú	bbox_reprr  s   zHOCRConverter.bbox_reprr¨   c                 C   s>   | j r| | j ¡}tt| jƒ |¡ d S tt| jƒ |¡ d S r:   )rÃ   rÙ   r   r   rÂ   rØ   r   )r>   r¨   Úencoded_textr?   r?   r@   rØ   {  s   zHOCRConverter.writec                 C   sp   | j r|  d| j › d�¡ n|  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d¡ |  d	¡ |  d
¡ d S )NzL<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en' charset='ú'>
zD<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
z<head>
z<title></title>
zE<meta http-equiv='Content-Type' content='text/html;charset=utf-8' />
zA<meta name='ocr-system' content='pdfminer.six HOCR Converter' />
zR  <meta name='ocr-capabilities' content='ocr_page ocr_block ocr_line ocrx_word'/>
z</head>
z<body>
rF  rl   r?   r?   r@   r  ‚  s,   ÿÿÿ

ÿÿÿ
zHOCRConverter.write_headerc                 C   s   |   d¡ |   d¡ d S )Nz0<!-- comment in the following line to debug -->
zD<!--script src='https://unpkg.com/hocrjs'></script--></body></html>
r1  rl   r?   r?   r@   r  ›  s   
ÿzHOCRConverter.write_footerc                 C   s"   | j r
| j d|¡}|  |¡ d S rG  )rE  rH  rI  rØ   rÚ   r?   r?   r@   rÛ   ¡  s   zHOCRConverter.write_textc                 C   sˆ   t | jƒdkr?d}d| jv rd}d| jv r|d7 }|  d| j› d| j› d	|› d
|  | j¡› d| j› d| j› d| j ¡ › d�¡ d| _d S )Nr   rb   ÚItaliczfont-style: italic; ÚBoldzfont-weight: bold; z<span style='font:"z"; font-size:z; z' class='ocrx_word' title='z	; x_font z
; x_fsize ú'>r(  F)	rJ   Úworking_textÚworking_fontrØ   Úworking_sizer`  Úworking_bboxÚstriprV  )r>   Úbold_and_italic_stylesr?   r?   r@   Ú
write_word¦  s,   


ÿþ
üûúùÿ

zHOCRConverter.write_wordr°   c                    s$   dt dd f‡ ‡fdd„‰ ˆ |ƒ d S )Nr[   r9   c                    sò  ˆj rt| tƒrˆ ¡  t| tƒr6| jˆ_ˆ d| j› dˆ 	| j¡› d�¡ | D ]}ˆ |ƒ q(ˆ d¡ d S t| t
ƒrXˆ dˆ 	| j¡› d�¡ | D ]}ˆ |ƒ qJˆ d¡ d S t| tƒr~ˆ d| j› dˆ 	| j¡› d�¡ | D ]}ˆ |ƒ qpˆ d¡ d S t| tƒr÷ˆj sœd	ˆ_ |  ¡ ˆ_| jˆ_| jˆ_| jˆ_d S t|  ¡  ¡ ƒd
kr³ˆ ¡  ˆ |  ¡ ¡ d S ˆjd | jd ksÉˆj| jksÉˆj| jkrÙˆ ¡  | jˆ_| jˆ_| jˆ_ˆ j|  ¡ 7  _ˆjd
 ˆjd | jd ˆjd fˆ_d S d S )Nz<div class='ocr_page' id='z	' title='rb  r  z<span class='ocr_line' title='re  r#  z<div class='ocr_block' id='Tr   r5   rs   rx   )rV  rK   r   rl  r   rQ   rW  rØ   rä   r`  r   r   r:  r   rÝ   rf  ri  r*  rg  r   rh  rJ   rj  )r[   rà   Ú
child_linerá   r?   r@   râ   º  sp   
þ
ýÿ

ÿ

þ
ýÿ



üëz,HOCRConverter.receive_layout.<locals>.renderrR  r²   r?   rá   r@   rN   ¹  s   ;zHOCRConverter.receive_layoutc                 C   r>  r:   r?  rl   r?   r?   r@   r@  ÷  rA  zHOCRConverter.close)rU  r5   NFrB  )r´   rµ   r¶   Ú__doc__rƒ   rS  rH  r$   r'   rI   r¸   r   r¹   r;   r+   r`  rØ   r  r  rÛ   rl  r   rN   r@  r?   r?   r?   r@   rT  J  s8    
ùþýüûú
ù	


>rT  )KrÊ   Úloggingrƒ   Úcollections.abcr   Útypingr   r   r   r   r   r   Úpdfminerr	   Úpdfminer.imager
   Úpdfminer.layoutr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úpdfminer.pdfcolorr   Úpdfminer.pdfdevicer   Úpdfminer.pdfexceptionsr    Úpdfminer.pdffontr!   r"   Úpdfminer.pdfinterpr#   r$   Úpdfminer.pdfpager%   Úpdfminer.pdftypesr&   Úpdfminer.utilsr'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   Ú	getLoggerr´   r®   r2   rº   r¿   rÀ   rÏ   ræ   rD  rT  r?   r?   r?   r@   Ú<module>   s:     	T4
 V9  / 