Ë
    vl�j/c  ã                   óŒ  — 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
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mZmZmZmZmZ d dl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)m*Z*m+Z+ ddl,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2m3Z3m4Z4m5Z5 ddl&m6Z6m7Z7m8Z8 ddl9m:Z:m;Z; ddl<m=Z=  ej|                  d«      Z? e@g d¢«      ZAerddlBmCZC ddlDmEZE ddddddœZFdeGdeHfd „ZId!eeHef   deeHef   fd"„ZJ G d#„ d$e«      ZKd5d%e(d&e)de(fd'„ZLd%e(d(e)de(fd)„ZM G d*„ d+e-«      ZN G d,„ d-eN«      ZOd.e(d/e(ddfd0„ZP G d1„ d2eO«      ZQ G d3„ d4eO«      ZRy)6é    N)Ú	lru_cache)
ÚTYPE_CHECKINGÚAnyÚCallableÚDictÚ	GeneratorÚListÚOptionalÚPatternÚTupleÚUnion)Ú	normalize)Úwarn)ÚPDFPageAggregator)ÚLTCharÚLTComponentÚLTContainerÚLTCurveÚLTItemÚLTPageÚLTTextContainer)ÚPDFPageInterpreterÚ	PDFStackT)ÚPDFPage)Ú	PSLiteralé   )Úutils)ÚT_bboxÚT_numÚT_objÚ
T_obj_list)Ú	Container)ÚPDFStructTreeÚStructTreeMissing)ÚT_table_settingsÚTableÚTableFinderÚTableSettings)Údecode_textÚresolve_allÚresolve_and_decode)ÚMalformedPDFExceptionÚPdfminerException)ÚTextMapz^LT)ÚadvÚheightÚ	linewidthÚptsÚsizeÚsrcsizeÚwidthÚx0Úx1Úy0Úy1ÚbitsÚmatrixÚuprightÚfontnameÚtextÚ	imagemaskÚ
colorspaceÚevenoddÚfillÚnon_stroking_colorÚstrokeÚstroking_colorÚstreamÚnameÚmcidÚtag)Ú	PageImage)ÚPDFzSimSun,RegularzSimHei,RegularzSimKai,RegularzSimFang,RegularzSimLi,Regular)s   ËÎÌås   ºÚÌås   ¿¬Ìå_GB2312s   ·ÂËÎ_GB2312s   Á¥Êér=   Úreturnc                 ó¶   — d| v r| j                  d«      dz   }| d | | |d  }}nd| }}t        j                  |t        |«      dd «      }t        |«      dd |z   S )Nó   +r   ó    é   éÿÿÿÿ)ÚindexÚCP936_FONTNAMESÚgetÚstr)r=   Úsplit_atÚprefixÚsuffixÚ
suffix_news        úE/var/www/html/pp/venv/lib/python3.12/site-packages/pdfplumber/page.pyÚfix_fontname_bytesr[   \   sp   € ØˆxÑØ—>‘> $Ó'¨!Ñ+ˆØ! ) 8Ð,¨h°x°yÐ.A�‰à˜h�ˆä ×$Ñ$ V¬S°«[¸¸2Ð->Ó?€JÜˆv‹;�q˜Ð˜zÑ)Ð)rO   Úkwargsc           	      óŒ   — | j                  «       D ��ci c]#  \  }}|t        |t        «      rt        |«      n|“Œ% c}}S c c}}w ©N)ÚitemsÚ
isinstanceÚlistÚtuple)r\   ÚkeyÚvalues      rZ   Útuplify_list_kwargsre   g   sB   € ð !Ÿ,™,›.÷áˆC�ð 	œj¨´Ô5Œe�EŒl¸5Ñ@óð ùó s   ”(A c                   ó–   ‡ — e Zd ZU dZdZee   ed<   dZee	   ed<   dde
dee   ddfd„Zdd	„Zdd
„Zdefˆ fd„Zdˆ fd„Zdˆ fd„Zˆ xZS )Ú"PDFPageAggregatorWithMarkedContentzZExtract layout from a specific page, adding marked-content IDs to
    objects where found.NÚcur_mcidÚcur_tagrI   ÚpropsrL   c                 ó„   — t        |j                  «      | _        t        |t        «      rd|v r|d   | _        yd| _        y)z5Handle beginning of tag, setting current MCID if any.ÚMCIDN)r)   rG   ri   r`   Údictrh   )ÚselfrI   rj   s      rZ   Ú	begin_tagz,PDFPageAggregatorWithMarkedContent.begin_tagu   s4   € ä" 3§8¡8Ó,ˆŒÜ�eœTÔ" v°¡Ø! &™MˆD�Mà ˆD�MrO   c                 ó    — d| _         d| _        y)z/Handle beginning of tag, clearing current MCID.N)ri   rh   ©rn   s    rZ   Úend_tagz*PDFPageAggregatorWithMarkedContent.end_tag}   s   € àˆŒØˆ�rO   c                 ó¨   — | j                   j                  r<| j                   j                  d   }| j                  |_        | j                  |_        yy)z^Add current MCID to what we hope to be the most recent object created
        by pdfminer.six.rQ   N)Úcur_itemÚ_objsrh   rH   ri   rI   )rn   Úcur_objs     rZ   Útag_cur_itemz/PDFPageAggregatorWithMarkedContent.tag_cur_item‚   s@   € ð �=‰=×ÒØ—m‘m×)Ñ)¨"Ñ-ˆGØŸ=™=ˆGŒLØŸ,™,ˆG�Kð rO   c                 óF   •— t        ‰| �  |i |¤Ž}| j                  «        |S )z;Hook for rendering characters, adding the `mcid` attribute.)ÚsuperÚrender_charrw   )rn   Úargsr\   r/   Ú	__class__s       €rZ   rz   z.PDFPageAggregatorWithMarkedContent.render_char�   s(   ø€ ä‰gÑ! 4Ð2¨6Ñ2ˆØ×ÑÔØˆ
rO   c                 óD   •— t        ‰| �  |i |¤Ž | j                  «        y)z7Hook for rendering images, adding the `mcid` attribute.N)ry   Úrender_imagerw   ©rn   r{   r\   r|   s      €rZ   r~   z/PDFPageAggregatorWithMarkedContent.render_image–   s!   ø€ ä‰Ñ˜dÐ- fÒ-Ø×ÑÕrO   c                 óD   •— t        ‰| �  |i |¤Ž | j                  «        y)zAHook for rendering lines and curves, adding the `mcid` attribute.N)ry   Ú
paint_pathrw   r   s      €rZ   r�   z-PDFPageAggregatorWithMarkedContent.paint_path›   s!   ø€ ä‰Ñ˜DÐ+ FÒ+Ø×ÑÕrO   r^   ©rL   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rh   r
   ÚintÚ__annotations__ri   rU   r   r   ro   rr   rw   Úfloatrz   r~   r�   Ú__classcell__©r|   s   @rZ   rg   rg   n   sj   ø… ñð #€Hˆh�s‰mÓ"Ø!€GˆX�c‰]Ó!ñ!˜Yð !¨x¸	Ñ/Bð !Èdó !óó
'ð¨eõ õ÷
ñ rO   rg   Úbox_rawÚrotationc                 óº   — t        d„ | D «       «      st        d| › �«      ‚t        | d   | d   f«      \  }}t        | d   | d   f«      \  }}|dv r||||fS ||||fS )Nc              3   óP   K  — | ]  }t        |t        j                  «      –— Œ  y ­wr^   )r`   ÚnumbersÚNumber©Ú.0Úxs     rZ   ú	<genexpr>z!_normalize_box.<locals>.<genexpr>¦   s   è ø€ Ò>°Œz˜!œWŸ^™^×,Ñ>ùs   ‚$&z0Bounding box contains non-number coordinate(s): r   rP   r   é   )éZ   i  )Úallr,   Úsorted)rŒ   r�   r6   r7   r8   r9   s         rZ   Ú_normalize_boxrš   ¡   s‡   € ô
 Ñ>°gÔ>Ô>Ü#Ø>¸w¸iÐHó
ð 	
ô �W˜Q‘Z ¨¡Ð,Ó-�F€BˆÜ�W˜Q‘Z ¨¡Ð,Ó-�F€BˆØ�9ÑØ�B˜˜BÐÐà�B˜˜BÐÐrO   Ú	mb_heightc                 ó(   — | \  }}}}|||z
  |||z
  fS r^   © )rŒ   r›   r6   r8   r7   r9   s         rZ   Ú_invert_boxrž   µ   s&   € Ø�N€BˆˆB�Ø�	˜B‘  I°¡NÐ3Ð3rO   c                   ó  — e Zd ZU ej                  dgz   Zee   ed<   dZe	ed<   dZ
	 dEddded	ed
efd„ZdFd„Zedefd„«       Zedefd„«       Zedeeeef      fd„«       Zedefd„«       Zedefd„«       Zedefd„«       Zedeeef   fd„«       Zdeeef   deeef   fd„Zdedefd„Z dee!   de"eddf   fd„Z#deeef   fd„Z$	 dGde%e&   de'fd„Z(	 dGde%e&   dee)   fd„Z*	 dGde%e&   de%e)   fd„Z+	 dGde%e&   deeee%e            fd „Z,	 dGde%e&   de%eee%e            fd!„Z-d"ede.fd#„Z/	 	 	 	 	 dHd$e0ee1e   f   d%e	d&e	d'ed(e	d)e	d"edeeeef      fd*„Z2d"edefd+„Z3d"edefd,„Z4d"edefd-„Z5	 dId.e	d(e	d"edefd/„Z6	 dJd0e7d1e	d2e	dd3fd4„Z8	 dJd0e7d1e	d2e	dd3fd5„Z9	 dJd0e7d1e	d2e	dd3fd6„Z:d7e;ege	f   dd8fd9„Z<d"edd8fd:„Z=	 	 	 	 	 dKd;e%e0ee>f      d<e%e0ee>f      d=e%e0ee>f      d>e	d?e	dd@fdA„Z?dGdBe%ee      deeef   fdC„Z@defdD„ZAy)LÚPageÚ_layoutÚcached_propertiesTÚis_originalNÚpdfrK   Úpage_objÚpage_numberÚinitial_doctopc                 ó`  ‡— || _         | | _        ‰| _        || _        || _        ddt
        dt        dt        fˆfd„} |dd«      }|dz  | _        t         |d«      | j                  «      }|d	   |d
   z
  }t        ||«      | _
        dD ]R  }	|	‰j                  v sŒt        t         ||	«      | j                  «      |«      }
t        | |	j                  «       |
«       ŒT d‰j                  vr| j                  | _        | j                  | _         t!        «       | j"                  «      | _        y )Nrc   ÚdefaultrL   c                 óX   •— t        ‰j                  j                  | «      «      }|€|S |S r^   )r*   ÚattrsrT   )rc   r©   rd   r¥   s      €rZ   Úget_attrzPage.__init__.<locals>.get_attrÌ   s+   ø€ Ü §¡× 2Ñ 2°3Ó 7Ó8ˆEØ#˜m�7Ð6°Ð6rO   ÚRotater   ih  ÚMediaBoxr–   r   )ÚCropBoxÚTrimBoxÚBleedBoxÚArtBoxr¯   r^   )r¤   Ú	root_pager¥   r¦   r§   rU   r   r�   rš   rž   Úmediaboxr«   ÚsetattrÚlowerÚcropboxÚbboxr   Ú_get_textmapÚget_textmap)rn   r¤   r¥   r¦   r§   r¬   Ú	_rotationÚmb_rawr›   Úbox_nameÚbox_normalizeds     `        rZ   Ú__init__zPage.__init__¿   s"  ø€ ð ˆŒØˆŒØ ˆŒØ&ˆÔØ,ˆÔñ	7œ#ð 	7¬ð 	7´sõ 	7ñ ˜X qÓ)ˆ	Ø! C™ˆŒä¡¨Ó 4°d·m±mÓDˆØ˜1‘I  q¡	Ñ)ˆ	ä# F¨IÓ6ˆŒàDò 	@ˆHØ˜8Ÿ>™>Ò)Ü!,Ü"¡8¨HÓ#5°t·}±}ÓEÀyó"�ô ˜˜hŸn™nÓ.°Õ?ð	@ð ˜HŸN™NÑ*ØŸ=™=ˆDŒLð —M‘MˆŒ	ð 'œ9›; t×'8Ñ'8Ó9ˆÕrO   rL   c                 óX   — | j                  «        | j                  j                  «        y r^   )Úflush_cacherº   Úcache_clearrq   s    rZ   Úclosez
Page.closeë   s    € Ø×ÑÔØ×Ñ×$Ñ$Õ&rO   c                 ó@   — | j                   d   | j                   d   z
  S )NrP   r   ©r¸   rq   s    rZ   r5   z
Page.widthï   ó   € à�y‰y˜‰|˜dŸi™i¨™lÑ*Ð*rO   c                 ó@   — | j                   d   | j                   d   z
  S )Nr–   r   rÅ   rq   s    rZ   r0   zPage.heightó   rÆ   rO   c                 ó”   — 	 t        | j                  | «      D �cg c]  }|j                  «       ‘Œ c}S c c}w # t        $ r g cY S w xY w)z-Return the structure tree for a page, if any.)r#   r¤   Úto_dictr$   )rn   Úelems     rZ   Ústructure_treezPage.structure_tree÷   s@   € ð	Ü/<¸T¿X¹XÀtÓ/LÖM t�D—L‘L•NÒMÐMùÒMøÜ ò 	ØŠIð	ús   ‚9 š4±9 ´9 ¹AÁAc                 ó¤  — t        | d«      r| j                  S t        | j                  j                  | j
                  | j                  j                  ¬«      }t        | j                  j                  |«      }	 |j                  | j                  «       |j                  «       | _        | j                  S # t        $ r}t        |«      ‚d }~ww xY w)Nr¡   )ÚpagenoÚlaparams)Úhasattrr¡   rg   r¤   Úrsrcmgrr¦   rÎ   r   Úprocess_pager¥   Ú	Exceptionr-   Ú
get_result)rn   ÚdeviceÚinterpreterÚes       rZ   ÚlayoutzPage.layoutÿ   s«   € ä�4˜Ô#Ø—<‘<ÐÜ3Ø�H‰H×ÑØ×#Ñ#Ø—X‘X×&Ñ&ô
ˆô
 )¨¯©×)9Ñ)9¸6ÓBˆð	'Ø×$Ñ$ T§]¡]Ô3ð  &×0Ñ0Ó2ˆŒØ�|‰|Ðøô ò 	'Ü# AÓ&Ð&ûð	'ús   Á:B6 Â6	CÂ?C
Ã
Cc                 óF  ‡ ‡— dt         t        t        f   dt        dt         t        t        f   fˆ fd„Šdt        dt        fˆˆ fd„}t	        ‰ j
                  j                  «      xs g }t        t        ||«      «      }t        ‰ t        «      r‰ j                  |«      S |S )NÚptÚrrL   c                 óŠ   •— |dz  }t        |«      D ].  }| \  }}||dz  k(  r‰j                  n‰j                  }|||z
  f} Œ0 | S )Nr—   rP   )Úranger5   r0   )rÙ   rÚ   ÚturnsÚir”   ÚyÚcomprn   s          €rZ   Úrotate_pointz!Page.annots.<locals>.rotate_point  sU   ø€ Ø˜‘GˆEÜ˜5“\ò %�Ø‘��1Ø%&¨%°!©)¢^�t—z’z¸¿¹�Ø˜$ ™(�_‘ð%ð ˆIrO   Úannotc                 ó  •— | d   \  }}}} ‰||f‰j                   «      } ‰||f‰j                   «      }‰j                  j                  }t        t	        g |¢|¢­«      |«      \  }}	}
}| j                  di «      }|j                  d«      | j                  d«      | j                  d«      dœ}|j                  «       D ]  \  }}|€Œ		 |j                  d«      ||<   Œ ‰j                  d|||z
  |
||	z
  ‰j                  |	z   |	||
|z
  ||	z
  dœ}|j                  |«       d| v r‰| d<   | |d<   |S # t        $ rQ 	 |j                  d«      ||<   n8# t        $ r, ‰j                  j                  r‚ t        d	|› d
|› d�«       Y nw xY wY ŒËw xY w)NÚRectÚAÚURIÚTÚContents)ÚuriÚtitleÚcontentszutf-8zutf-16zCould not decode z of annotation. z will be missing.râ   )r¦   Úobject_typer6   r8   r7   r9   ÚdoctopÚtopÚbottomr5   r0   ÚPÚdata)r�   r³   r0   rž   rš   rT   r_   ÚdecodeÚUnicodeDecodeErrorr¤   Úraise_unicode_errorsr   r¦   r§   Úupdate)râ   Ú_aÚ_bÚ_cÚ_dÚpt0Úpt1Úrhr6   rî   r7   rï   ÚaÚextrasÚkÚvÚparsedrá   rn   s                    €€rZ   ÚparsezPage.annots.<locals>.parse  s¾  ø€ Ø" 6™]‰NˆB��B˜Ù  B˜x¨¯©Ó7ˆCÙ  B˜x¨¯©Ó7ˆCØ—‘×&Ñ&ˆBÜ"-¬n¸\¸s¸\ÀS¹\Ó.JÈBÓ"OÑˆB��R˜à—	‘	˜#˜rÓ"ˆAà—u‘u˜U“|ØŸ™ 3›Ø!ŸI™I jÓ1ñˆFð
 Ÿ™›ò ‘��1Ø‘=ðØ$%§H¡H¨WÓ$5˜˜qš	ðð   $×/Ñ/Ø&ØØ˜6‘kØØ˜3‘hØ×-Ñ-°Ñ3ØØ Ø˜b™Ø  3™,ñˆFð �M‰M˜&Ô!ð �e‰|Ø!��c‘
Ø"ˆF�6‰NØˆMøô= .ò 	ðØ()¯©°Ó(:˜F 1šIøÜ1ò Ø#Ÿx™x×<Ò<Ø %Ü Ø"3°A°3ð 7$Ø$% 3Ð&7ð!9öðüð	ús6   Ã
D2Ä2	FÄ<EÅFÅ2FÆFÆFÆFÆF)r   r‰   r‡   r    r*   r¥   Úannotsra   Úmapr`   ÚCroppedPageÚ_crop_fn)rn   r  Úrawr  rá   s   `   @rZ   r  zPage.annots  sŒ   ù€ ð	œU¤5¬% <Ñ0ð 	´Sð 	¼UÄ5Ì%À<Ñ=Põ 	ð/	œð /	¤5ö /	ôb ˜$Ÿ-™-×.Ñ.Ó/Ò5°2ˆÜ”c˜% “oÓ&ˆÜ�dœKÔ(Ø—=‘= Ó(Ð(àˆMrO   c                 óL   — | j                   D �cg c]
  }|d   €Œ	|‘Œ c}S c c}w )Nré   )r  )rn   rý   s     rZ   Ú
hyperlinkszPage.hyperlinksR  s#   € àŸ;™;Ö?�a¨!¨E©(Ñ*>’Ò?Ð?ùÒ?s   �
!š!c                 ót   — t        | d«      r| j                  S | j                  «       | _        | j                  S ©NÚ_objects)rÏ   r  Úparse_objectsrq   s    rZ   ÚobjectszPage.objectsV  s0   € ä�4˜Ô$Ø—=‘=Ð Ø/3×/AÑ/AÓ/CˆŒØ�}‰}ÐrO   rÙ   c                 óp   — | j                   d   |d   z   | j                   d   | j                  z   |d   z
  fS )Nr   r   )r´   r0   )rn   rÙ   s     rZ   Úpoint2coordzPage.point2coord]  s:   € à—‘˜aÑ  2 a¡5Ñ(¨$¯-©-¸Ñ*:¸T¿[¹[Ñ*HÈ2ÈaÉ5Ñ*PÐQÐQrO   Úobjc           
      óü  — t        j                  t        d|j                  j                  «      j                  «       }dt        t        t        f   dt        t        t        t        f      fd„}t        t        d t        ||j                  j                  «       «      «      «      }||d<   | j                  |d<   dD ]1  }t!        ||«      sŒt#        t%        ||«      j&                  «      ||<   Œ3 t)        |t*        t,        f«      rK|j/                  «       }| j0                  j2                  � t5        | j0                  j2                  |«      n||d<   t)        |t*        «      r�|j6                  }t)        |j8                  t:        «      r|j8                  n|j8                  f|d	<   t)        |j<                  t:        «      r|j<                  n|j<                  f|d
<   t)        |d   t>        «      r�tA        |d   «      |d<   n~t)        |tB        f«      rmtE        t        | jF                  |d   «      «      |d<   |jH                  D ��	cg c]  ^}}	|gt        | jF                  |	«      ¢­‘Œ  c}	}|d<   |jJ                  |d<   | jL                  d d \  }
}d|v rE| jN                  |d   z
  |z   |d<   | jN                  |d   z
  |z   |d<   | jP                  |d   z   |d<   d|v r|
dk7  r|d   |
z   |d<   |d   |
z   |d<   |S c c}	}w )NÚ ÚitemrL   c                 ó<   — | \  }}|t         v rt        |«      }||fS y r^   )Ú	ALL_ATTRSr*   )r  rÿ   r   Úress       rZ   Úprocess_attrz)Page.process_object.<locals>.process_attrd  s'   € Ø‰DˆAˆqØ”I‰~Ü! !“n�Ø˜3�x�àrO   rì   r¦   )ÚncsÚscsr>   rE   rC   r=   r2   ÚpathÚdashrP   r8   r9   rî   rï   rí   r6   r   r7   ))ÚreÚsubÚlt_patr|   rƒ   r¶   r   rU   r   r
   rm   Úfilterr  Ú__dict__r_   r¦   rÏ   r+   ÚgetattrrG   r`   r   r   Úget_textr¤   Úunicode_normÚnormalize_unicodeÚgraphicstateÚscolorrb   ÚncolorÚbytesr[   r   ra   r  Úoriginal_pathÚdashing_styler´   r0   r§   )rn   r  Úkindr  ÚattrÚcsr>   ÚgsÚcmdr2   Úmb_x0Úmb_tops               rZ   Úprocess_objectzPage.process_objecta  s¾  € Ü�v‰v”f˜b #§-¡-×"8Ñ"8Ó9×?Ñ?ÓAˆð	œu¤S¬# X™ð 	´8¼EÄ#ÄsÀ(¹OÑ3Ló 	ô ”F˜4¤ \°3·<±<×3EÑ3EÓ3GÓ!HÓIÓJˆà"ˆˆ]ÑØ"×.Ñ.ˆˆ]Ñà ò 	EˆBô �s˜BÕÜ-¬g°c¸2Ó.>×.CÑ.CÓD��R’ð	Eô �cœF¤OÐ4Ô5Ø—<‘<“>ˆDð —8‘8×(Ñ(Ð4ô " $§(¡(×"7Ñ"7¸Ô>àð �‰Lô �cœ6Ô"ð ×!Ñ!ˆBä'¨¯	©	´5Ô9�—	’	ÀÇ	Á	¸|ð Ð!Ñ"ô (¨¯	©	´5Ô9�—	’	ÀÇ	Á	¸|ð Ð%Ñ&ô
 ˜$˜zÑ*¬EÔ2Ü#5°d¸:Ñ6FÓ#G��ZÒ ä˜œg˜ZÔ(Üœs 4×#3Ñ#3°T¸%±[ÓAÓBˆD�‰Kð QT×PaÑPa×bÀ9À3È˜SÐ>¤3 t×'7Ñ'7¸Ó#=Ó>ÓbˆD�‰Là×,Ñ,ˆD�‰Lð
 Ÿ™ b qÐ)‰ˆˆvà�4‰<ØŸ;™;¨¨d©Ñ3°vÑ=ˆD�‰KØ"Ÿk™k¨D°©JÑ6¸&Ñ@ˆD�‰NØ!×0Ñ0°4¸±;Ñ>ˆD�‰Nà�4‰<˜E QšJØ˜d™ eÑ+ˆD�‰JØ˜d™ eÑ+ˆD�‰Jàˆùó% cs   É#K8Úlayout_objectsc              #   óþ   K  — |D ]r  }t        |t        «      rM| j                  j                  �| j	                  |«      –— | j                  |j                  «      E d {  –—†  Œ`| j	                  |«      –— Œt y 7 Œ­wr^   )r`   r   r¤   rÎ   r3  Úiter_layout_objectsru   )rn   r4  r  s      rZ   r6  zPage.iter_layout_objects«  sp   è ø€ ð "ò 		/ˆCä˜#œ{Ô+à—8‘8×$Ñ$Ð0Ø×-Ñ-¨cÓ2Ò2à×3Ñ3°C·I±IÓ>×>Ñ>à×)Ñ)¨#Ó.Ó.ñ		/ð ?ús   ‚AA=ÁA;Á A=c                 óÆ   — i }| j                  | j                  j                  «      D ]6  }|d   }|dv rŒ|j                  |«      €g ||<   ||   j	                  |«       Œ8 |S )Nrì   )Úanno)r6  r×   ru   rT   Úappend)rn   r  r  r,  s       rZ   r  zPage.parse_objects¹  sq   € Ø)+ˆØ×+Ñ+¨D¯K©K×,=Ñ,=Ó>ò 	&ˆCØ�}Ñ%ˆDØ�xÑØØ�{‰{˜4Ó Ð(Ø "�˜‘Ø�D‰M× Ñ  Õ%ð	&ð ˆrO   Útable_settingsc                 óD   — t        j                  |«      }t        | |«      S r^   )r(   Úresolver'   ©rn   r:  Útsets      rZ   Údebug_tablefinderzPage.debug_tablefinderÄ  s!   € ô ×$Ñ$ ^Ó4ˆÜ˜4 Ó&Ð&rO   c                 óX   — t        j                  |«      }t        | |«      j                  S r^   )r(   r<  r'   Útablesr=  s      rZ   Úfind_tableszPage.find_tablesÊ  s'   € ô ×$Ñ$ ^Ó4ˆÜ˜4 Ó&×-Ñ-Ð-rO   c                 óæ   — t        j                  |«      }| j                  |«      }t        |«      dk(  ry dt        dt
        t        t        t        f   fd„}t        t        ||¬«      «      d   }|S )Nr   r”   rL   c                 óh   — t        | j                  «       | j                  d   | j                  d   fS )Nr   r   )ÚlenÚcellsr¸   ©r”   s    rZ   ÚsorterzPage.find_table.<locals>.sorterÚ  s)   € Ü˜Ÿ™“\�M 1§6¡6¨!¡9¨a¯f©f°Q©iÐ8Ð8rO   )rc   )
r(   r<  rB  rE  r&   r   r‡   r   ra   r™   )rn   r:  r>  rA  rH  Úlargests         rZ   Ú
find_tablezPage.find_tableÐ  so   € ô ×$Ñ$ ^Ó4ˆØ×!Ñ! $Ó'ˆäˆv‹;˜!ÒØð	9”eð 	9¤¤c¬5´%Ð&7Ñ 8ó 	9ô ”v˜f¨&Ô1Ó2°1Ñ5ˆàˆrO   c           	      ó´   — t        j                  |«      }| j                  |«      }|D �cg c]"  } |j                  di |j                  xs i ¤Ž‘Œ$ c}S c c}w ©Nr�   )r(   r<  rB  ÚextractÚtext_settings)rn   r:  r>  rA  Útables        rZ   Úextract_tableszPage.extract_tablesá  sQ   € ô ×$Ñ$ ^Ó4ˆØ×!Ñ! $Ó'ˆØIOÖPÀ��—‘Ñ; ×!3Ñ!3Ò!9°rÓ;ÒPÐPùÒPs   «'Ac                 ó”   — t        j                  |«      }| j                  |«      }|€y  |j                  di |j                  xs i ¤ŽS rL  )r(   r<  rJ  rM  rN  )rn   r:  r>  rO  s       rZ   Úextract_tablezPage.extract_tableè  sI   € ô ×$Ñ$ ^Ó4ˆØ—‘ Ó%ˆØˆ=Øà �5—=‘=Ñ> D×$6Ñ$6Ò$<¸"Ñ>Ð>rO   r\   c                 óþ   — t        | j                  ¬«      }d|vr|j                  d| j                  i«       d|vr|j                  d| j                  i«       i |¥|¥}t        j                  | j                  fi |¤ŽS )N)Úlayout_bboxÚlayout_width_charsÚlayout_widthÚlayout_height_charsÚlayout_height)rm   r¸   rõ   r5   r0   r   Úchars_to_textmapÚchars)rn   r\   ÚdefaultsÚfull_kwargss       rZ   r¹   zPage._get_textmapò  sx   € Ü#'ØŸ	™	ô$
ˆð   vÑ-Ø�O‰O˜^¨T¯Z©ZÐ8Ô9Ø ¨Ñ.Ø�O‰O˜_¨d¯k©kÐ:Ô;Ø&<¨Ð&<°VÐ&<ˆÜ×%Ñ% d§j¡jÑ@°KÑ@Ð@rO   ÚpatternÚregexÚcaseÚ
main_groupÚreturn_charsÚreturn_groupsc                 óf   —  | j                   di t        |«      ¤Ž}|j                  ||||||¬«      S )N)r^  r_  r`  ra  rb  r�   )rº   re   Úsearch)	rn   r]  r^  r_  r`  ra  rb  r\   Útextmaps	            rZ   rd  zPage.searchý  sG   € ð #�$×"Ñ"ÑAÔ%8¸Ó%@ÑAˆØ�~‰~ØØØØ!Ø%Ø'ð ó 
ð 	
rO   c                 óL   —  | j                   di t        |«      ¤Žj                  S rL  )rº   re   Ú	as_string©rn   r\   s     rZ   Úextract_textzPage.extract_text  s$   € Øˆt×ÑÑ>Ô"5°fÓ"=Ñ>×HÑHÐHrO   c                 óB   — t        j                  | j                  fi |¤ŽS r^   )r   Úextract_text_simplerZ  rh  s     rZ   rk  zPage.extract_text_simple  s   € Ü×(Ñ(¨¯©Ñ>°vÑ>Ð>rO   c                 óB   — t        j                  | j                  fi |¤ŽS r^   )r   Úextract_wordsrZ  rh  s     rZ   rm  zPage.extract_words  s   € Ü×"Ñ" 4§:¡:Ñ8°Ñ8Ð8rO   Ústripc                 óZ   —  | j                   di t        |«      ¤Žj                  ||¬«      S )N)rn  ra  r�   )rº   re   Úextract_text_lines)rn   rn  ra  r\   s       rZ   rp  zPage.extract_text_lines  s8   € ð  ˆt×ÑÑ>Ô"5°fÓ"=Ñ>×QÑQØ lð Ró 
ð 	
rO   r¸   ÚrelativeÚstrictr  c                 ó    — t        | |||¬«      S )N)rq  rr  )r  ©rn   r¸   rq  rr  s       rZ   Úcropz	Page.crop!  s   € ô ˜4 °ÀÔHÐHrO   c                 ó>   — t        | |||t        j                  ¬«      S ©zS
        Same as .crop, except only includes objects fully within the bbox
        )rq  rr  Úcrop_fn)r  r   Úwithin_bboxrt  s       rZ   ry  zPage.within_bbox&  s"   € ô Ø�$ °&Ä%×BSÑBSô
ð 	
rO   c                 ó>   — t        | |||t        j                  ¬«      S rw  )r  r   Úoutside_bboxrt  s       rZ   r{  zPage.outside_bbox0  s"   € ô Ø�$ °&Ä%×BTÑBTô
ð 	
rO   Útest_functionÚFilteredPagec                 ó   — t        | |«      S r^   )r}  )rn   r|  s     rZ   r   zPage.filter:  s   € Ü˜D -Ó0Ð0rO   c                 óì   — t        | d„ «      }| j                  j                  «       D ��ci c]  \  }}||“Œ
 c}}|_        t	        j
                  | j                  fi |¤Ž|j                  d<   |S c c}}w )uê   
        Removes duplicate chars â€”Â those sharing the same text and positioning
        (within `tolerance`) as other characters in the set. Adjust extra_args
        to be more/less restrictive with the properties checked.
        c                  ó   — y)NTr�   rG  s    rZ   ú<lambda>z#Page.dedupe_chars.<locals>.<lambda>C  s   � rO   Úchar)r}  r  r_   r  r   Údedupe_charsrZ  )rn   r\   Úpr,  Úobjss        rZ   rƒ  zPage.dedupe_chars=  sd   € ô ˜™~Ó.ˆØ37·<±<×3EÑ3EÓ3G×H¡Z T¨4�d˜D‘jÓHˆŒ
Ü"×/Ñ/°·
±
ÑE¸fÑEˆ�
‰
�6ÑØˆùó Is   «A0Ú
resolutionr5   r0   Ú	antialiasÚforce_mediaboxrJ   c                 óÔ   — ddl m}m} t        d„ |||fD «       «      }|dkD  rt	        d|› �«      ‚|�d|z  | j
                  z  }n|�d|z  | j                  z  } || |xs |||¬«      S )zò
        You can pass a maximum of 1 of the following:
        - resolution: The desired number pixels per inch. Defaults to 72.
        - width: The desired image width in pixels.
        - height: The desired image width in pixels.
        r   )ÚDEFAULT_RESOLUTIONrJ   c              3   ó$   K  — | ]  }|d u–— Œ
 y ­wr^   r�   r’   s     rZ   r•   z Page.to_image.<locals>.<genexpr>X  s   è ø€ ÒK¨!˜ œÑKùs   ‚zUOnly one of these arguments can be provided: resolution, width, height. You provided éH   )r†  r‡  rˆ  )ÚdisplayrŠ  rJ   ÚsumÚ
ValueErrorr5   r0   )	rn   r†  r5   r0   r‡  rˆ  rŠ  rJ   Ú	num_specss	            rZ   Úto_imagezPage.to_imageH  s�   € ÷ 	;äÑK°
¸EÀ6Ð/JÔKÓKˆ	Ø�qŠ=ÜØgÐhqÐgrÐsóð ð ÐØ˜e™ d§j¡jÑ0‰JØÐØ˜f™ t§{¡{Ñ2ˆJáØØ!Ò7Ð%7ØØ)ô	
ð 	
rO   Úobject_typesc           	      óL  — |€(t        | j                  j                  «       «      dgz   }n|}| j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  dœ}|D ]  }t        | |dz   «      ||dz   <   Œ |S )Nrâ   )r¦   r§   r�   r·   r´   r¸   r5   r0   Ús)ra   r  Úkeysr¦   r§   r�   r·   r´   r¸   r5   r0   r"  )rn   r’  Ú_object_typesÚdÚts        rZ   rÉ   zPage.to_dicti  sœ   € ØÐÜ  §¡×!2Ñ!2Ó!4Ó5¸¸	ÑA‰Mà(ˆMà×+Ñ+Ø"×1Ñ1ØŸ™Ø—|‘|ØŸ™Ø—I‘IØ—Z‘ZØ—k‘kñ	
ˆð ò 	0ˆAÜ   q¨3¡wÓ/ˆAˆa�#‰gŠJð	0àˆrO   c                 ó"   — d| j                   › d�S )Nz<Page:ú>)r¦   rq   s    rZ   Ú__repr__zPage.__repr__|  s   € Ø˜×(Ñ(Ð)¨Ð+Ð+rO   ©r   r‚   r^   )TTr   TT)TT)FT)NNNFF)Brƒ   r„   r…   r"   r¢   r	   rU   rˆ   r£   ÚboolÚpagesr   r‡   r   r¿   rÃ   Úpropertyr5   r0   r   r   rË   r   r×   r!   r  r	  r  r   r  r   r    r3  r   r   r6  r  r
   r%   r'   r?  r&   rB  rJ  rP  rR  r.   r¹   r   r   rd  ri  rk  rm  rp  r   ru  ry  r{  r   r   rƒ  r‰   r‘  rÉ   r›  r�   rO   rZ   r    r    º   sê  … Ø#,×#>Ñ#>À)ÀÑ#LÐ�t˜C‘yÓLØ€K�ÓØ€Eð !"ñ*:àð*:ð ð*:ð ð	*:ð
 ó*:óX'ð ð+�uò +ó ð+ð ð+˜ò +ó ð+ð ð  T¨#¨s¨(¡^Ñ 4ò ó ðð ð˜ò ó ðð  ð?˜
ò ?ó ð?ðB ð@˜Jò @ó ð@ð ð˜˜c :˜oÑ.ò ó ððR˜e E¨5 LÑ1ð R°e¸EÀ5¸LÑ6Ió RðH &ð H¨Uó HðT/Ø" ;Ñ/ð/à	�5˜$ Ð$Ñ	%ó/ð	˜t C¨ OÑ4ó 	ð <@ñ'Ø&Ð'7Ñ8ð'à	ó'ð <@ñ.Ø&Ð'7Ñ8ð.à	ˆe‰ó.ð <@ñØ&Ð'7Ñ8ðà	�%‰óð$ <@ñQØ&Ð'7Ñ8ðQà	ˆd�4˜ ™Ñ&Ñ'Ñ	(óQð <@ñ?Ø&Ð'7Ñ8ð?à	�$�t˜H S™MÑ*Ñ+Ñ	,ó?ð	A Sð 	A¨Wó 	Að ØØØ!Ø"ñ
à�s˜G C™LÐ(Ñ)ð
ð ð
ð ð	
ð
 ð
ð ð
ð ð
ð ð
ð 
ˆd�3˜�8‰nÑ	ó
ð(I Sð I¨Só Ið?¨Cð ?°Có ?ð9 cð 9¨jó 9ð 8<ñ
Øð
Ø04ð
ØGJð
à	ó
ð DHñIØðIØ&*ðIØ<@ðIà	óIð DHñ
Øð
Ø&*ð
Ø<@ð
à	ó
ð DHñ
Øð
Ø&*ð
Ø<@ð
à	ó
ð1 H¨e¨W°d¨]Ñ$;ð 1Àó 1ð	 Sð 	¨^ó 	ð 37Ø-1Ø.2ØØ$ñ
à˜U 3¨ :Ñ.Ñ/ð
ð ˜˜c 5˜jÑ)Ñ*ð
ð ˜˜s E˜zÑ*Ñ+ð	
ð
 ð
ð ð
ð 
ó
ñB H¨T°#©YÑ$7ð À4ÈÈSÈÁ>ó ð&,˜#ô ,rO   r    c                   ó(   — e Zd ZU dZeed<   defd„Zy)ÚDerivedPageFr£   Úparent_pagec                 óž  — || _         |j                  | _        |j                  | _        |j                  | _        |j                  | _        |j
                  | _        |j                  | _        |j                  | _        |j                  | _        | j                  t        j                  «        t        «       | j                  «      | _        y r^   )r¢  r³   r¤   r¥   r¦   r§   r�   r´   r·   rÁ   r"   r¢   r   r¹   rº   )rn   r¢  s     rZ   r¿   zDerivedPage.__init__ƒ  s�   € Ø&ˆÔØ$×.Ñ.ˆŒØ—?‘?ˆŒØ#×,Ñ,ˆŒØ&×2Ñ2ˆÔØ)×8Ñ8ˆÔØ#×,Ñ,ˆŒØ#×,Ñ,ˆŒØ"×*Ñ*ˆŒØ×Ñœ×4Ñ4Ô5Ø&œ9›; t×'8Ñ'8Ó9ˆÕrO   N)rƒ   r„   r…   r£   r�  rˆ   r    r¿   r�   rO   rZ   r¡  r¡  €  s   … Ø€K�Óð: Dô :rO   r¡  r¸   Úparent_bboxc                 óþ   — t        j                  | «      }|dk(  rt        d| › d�«      ‚t        j                  | |«      }|€t        d| › d|› �«      ‚t        j                  |«      }||k  rt        d| › d|› �«      ‚y )Nr   zBounding box z has an area of zero.z. is entirely outside parent page bounding box z. is not fully within parent page bounding box )r   Úcalculate_arear�  Úget_bbox_overlap)r¸   r¤  Ú	bbox_areaÚoverlapÚoverlap_areas        rZ   Útest_proposed_bboxr«  ‘  sª   € Ü×$Ñ$ TÓ*€IØ�A‚~Ü˜=¨¨Ð.CÐDÓEÐEä×$Ñ$ T¨;Ó7€GØ€ÜØ˜D˜6ð "(Ø(3 }ð6ó
ð 	
ô
 ×'Ñ'¨Ó0€LØ�iÒÜØ˜D˜6ð "(Ø(3 }ð6ó
ð 	
ð  rO   c                   ó~   ‡ — e Zd Zej                  ddfdededeeegef   de	de	f
ˆ fd„Z
ed	eeef   fd
„«       Zˆ xZS )r  FTr¢  Ú	crop_bboxrx  rq  rr  c                 ó:  •‡‡— |r*|j                   \  }}}}‰\  }	}
}}|	|z   |
|z   ||z   ||z   fŠ|rt        ‰|j                   «       dt        dt        fˆˆfd„}t        ‰| �  |«       || _        ‰t        j                  u r|j                   | _         y ‰| _         y )Nr…  rL   c                 ó   •—  ‰| ‰«      S r^   r�   )r…  r­  rx  s    €€rZ   r  z&CroppedPage.__init__.<locals>._crop_fn¶  s   ø€ Ù˜4 Ó+Ð+rO   )r¸   r«  r!   ry   r¿   r  r   r{  )rn   r¢  r­  rx  rq  rr  Úo_x0Úo_topÚ_r6   rî   r7   rï   r  r|   s     ``          €rZ   r¿   zCroppedPage.__init__¦  s¨   ú€ ñ Ø +× 0Ñ 0ÑˆD�%˜˜AØ"+ÑˆB��R˜Ø˜d™ C¨%¡K°°d±¸FÀU¹NÐKˆIáÜ˜y¨+×*:Ñ*:Ô;ð	,œ:ð 	,¬*ö 	,ô 	‰Ñ˜Ô%à ˆŒð ”e×(Ñ(Ñ(Ø#×(Ñ(ˆD�Ià!ˆD�IrO   rL   c                 óî   — t        | d«      r| j                  S | j                  j                  j	                  «       D ��ci c]  \  }}|| j                  |«      “Œ c}}| _        | j                  S c c}}w r  )rÏ   r  r¢  r  r_   r  ©rn   rÿ   r   s      rZ   r  zCroppedPage.objectsÃ  se   € ä�4˜Ô$Ø—=‘=Ð à,0×,<Ñ,<×,DÑ,D×,JÑ,JÓ,L÷0
Ù$( A qˆAˆt�}‰}˜QÓÑó0
ˆŒð �}‰}Ðùó0
s   Á A1)rƒ   r„   r…   r   Úcrop_to_bboxr    r   r   r!   r�  r¿   rŸ  r   rU   r  rŠ   r‹   s   @rZ   r  r  ¥  s}   ø„ ð
 ?D×>PÑ>PØØñ"àð"ð ð"ð ˜: vÐ.°
Ð:Ñ;ð	"ð
 ð"ð õ"ð: ð˜˜c :˜oÑ.ò ó ôrO   r  c                   óT   ‡ — e Zd Zdedeegef   fˆ fd„Zede	e
ef   fd„«       Zˆ xZS )r}  r¢  Ú	filter_fnc                 óT   •— |j                   | _         || _        t        ‰| �  |«       y r^   )r¸   r·  ry   r¿   )rn   r¢  r·  r|   s      €rZ   r¿   zFilteredPage.__init__Î  s$   ø€ Ø×$Ñ$ˆŒ	Ø"ˆŒÜ‰Ñ˜Õ%rO   rL   c                 ó
  — t        | d«      r| j                  S | j                  j                  j	                  «       D ��ci c]%  \  }}|t        t        | j                  |«      «      “Œ' c}}| _        | j                  S c c}}w r  )rÏ   r  r¢  r  r_   ra   r   r·  r´  s      rZ   r  zFilteredPage.objectsÓ  sq   € ä�4˜Ô$Ø—=‘=Ð ð ×(Ñ(×0Ñ0×6Ñ6Ó8÷0
á��1ð Œt”F˜4Ÿ>™>¨1Ó-Ó.Ñ.ó0
ˆŒð �}‰}Ðùó	0
s   Á *A?)rƒ   r„   r…   r    r   r    r�  r¿   rŸ  r   rU   r!   r  rŠ   r‹   s   @rZ   r}  r}  Í  sE   ø„ ð& Dð &°X¸u¸gÀt¸mÑ5Lõ &ð
 ð˜˜c :˜oÑ.ò ó ôrO   r}  rœ  )Sr�   r  Ú	functoolsr   Útypingr   r   r   r   r   r	   r
   r   r   r   Úunicodedatar   r%  Úwarningsr   Úpdfminer.converterr   Úpdfminer.layoutr   r   r   r   r   r   r   Úpdfminer.pdfinterpr   r   Úpdfminer.pdfpager   Úpdfminer.psparserr   r  r   Ú_typingr   r   r    r!   Ú	containerr"   Ú	structurer#   r$   rO  r%   r&   r'   r(   r)   r*   r+   Úutils.exceptionsr,   r-   Ú
utils.textr.   Úcompiler  Úsetr  r�  rJ   r¤   rK   rS   r)  rU   r[   re   rg   rš   rž   r    r¡  r«  r  r}  r�   rO   rZ   ú<module>rÊ     sl  ðÛ Û 	Ý ÷÷ ÷ õ 7Ý å 0÷÷ ñ ÷ =Ý $Ý 'å ß 5Ó 5Ý  ß 7ß FÓ Fß ?Ñ ?ß FÝ à	ˆ�‰�FÓ	€áòó€	ñB Ý"Ýð
 *Ø)Ø 0Ø 1Ø(ñ€ð* ð *¨3ó *ð  S¨# X¡ð °4¸¸S¸±>ó ô0Ð):ô 0ñf ˜Fð  ¨eð  ¸Fó  ð(4˜ð 4¨Eð 4°fó 4ô
C,ˆ9ô C,ôL:�$ô :ð"
˜Vð 
°&ð 
¸Tó 
ô(%�+ô %ôP�;õ rO   