+
    f0i/c              
       p   ^ RI t ^ RIt^ RIHt ^ RIHtHtHtHtH	t	H
t
HtHtHtHt ^ RIHt ^ RIHt ^ RIHt ^ RIHtHtHtHtHtHtHt ^ RIHtH t  ^ R	I!H"t" ^ R
I#H$t$ ^RI%H&t& ^RI'H(t(H)t)H*t*H+t+ ^RI,H-t- ^RI.H/t/H0t0 ^RI1H2t2H3t3H4t4H5t5 ^RI&H6t6H7t7H8t8 ^RI9H:t:H;t; ^RI<H=t= ]P|                  ! R4      t?]@! . R4O4      tA]'       d   ^RIBHCtC ^RIDHEtE RRRRRRRRRR/tFR  R! ltGR" R# ltH ! R$ R%]4      tIR5R& R' lltJR( R) ltK ! R* R+]-4      tL ! R, R-]L4      tMR. R/ ltN ! R0 R1]M4      tO ! R2 R3]M4      tPR# )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)	PageImage)PDFs   zSimSun,Regulars   zSimHei,Regulars   _GB2312zSimKai,Regulars   _GB2312zSimFang,Regulars   zSimLi,Regularc                0    V ^8  d   QhR\         R\        /# )   fontnamereturn)bytesstr)formats   "U/Users/agent/.openclaw/workspace/venv/lib/python3.14/site-packages/pdfplumber/page.py__annotate__r8   \   s     * * *3 *    c                     R V 9   d"   V P                  R 4      ^,           pV RV WR r2MRT r2\        P                  V\        V4      ^R 4      p\        V4      ^R V,           # )   +Nr9   )indexCP936_FONTNAMESgetr5   )r2   split_atprefixsuffix
suffix_news   &    r7   fix_fontname_bytesrD   \   sj    x>>$'!+!)8,hy.Ah $$VS[2->?Jv;qz))r9   c                t    V ^8  d   QhR\         \        \        3,          R\         \        \        3,          /# r1   kwargsr3   )r   r5   r   )r6   s   "r7   r8   r8   g   s*      S#X 4S> r9   c           	          V P                  4        UUu/ uF)  w  rT\        V\        4      '       d   \        V4      MTbK+  	  upp# u uppi N)items
isinstancelisttuple)rG   keyvalues   &  r7   tuplify_list_kwargsrP   g   sH     !,,.(JC 	j55eEl5@(  s   /Ac                      a a ] tR t^nt oRtRtRtRV3R lR lltV3R lR ltV3R lR lt	V3R	 lV 3R
 llt
V3R lV 3R lltV3R lV 3R lltV3R ltRtVtV ;t# )"PDFPageAggregatorWithMarkedContentzVExtract layout from a specific page, adding marked-content IDs to
objects where found.Nc                :   < V ^8  d   QhRS[ RS[S[,          RR/# )r1   tagpropsr3   N)r   r
   r   )r6   __classdict__s   "r7   r8   /PDFPageAggregatorWithMarkedContent.__annotate__u   s'     ! !Y !x	/B !d !r9   c                    \        VP                  4      V n        \        V\        4      '       d   RV9   d   VR,          V n        R# RV n        R# )z5Handle beginning of tag, setting current MCID if any.MCIDN)r(   namecur_tagrK   dictcur_mcid)selfrT   rU   s   &&&r7   	begin_tag,PDFPageAggregatorWithMarkedContent.begin_tagu   s7    "388,eT""v!&MDM DMr9   c                   < V ^8  d   QhRR/# r1   r3   N )r6   rV   s   "r7   r8   rW   }   s       r9   c                "    RV n         RV n        R# )z/Handle beginning of tag, clearing current MCID.N)r[   r]   r^   s   &r7   end_tag*PDFPageAggregatorWithMarkedContent.end_tag}   s    r9   c                   < V ^8  d   QhRR/# rb   rc   )r6   rV   s   "r7   r8   rW      s     ' 'd 'r9   c                    V P                   P                  '       dB   V P                   P                  R,          pV P                  Vn        V P                  Vn        R# R# )zVAdd current MCID to what we hope to be the most recent object created
by pdfminer.six.Nr<   )cur_item_objsr]   mcidr[   rT   )r^   cur_objs   & r7   tag_cur_item/PDFPageAggregatorWithMarkedContent.tag_cur_item   sC     ==mm))"-G==GL,,GK r9   c                    < V ^8  d   QhRS[ /# r1   r3   )float)r6   rV   s   "r7   r8   rW      s      e r9   c                H   < \         SV `  ! V/ VB pV P                  4        V# )z;Hook for rendering characters, adding the `mcid` attribute.)superrender_charrn   )r^   argsrG   adv	__class__s   &*, r7   ru   .PDFPageAggregatorWithMarkedContent.render_char   s(    g!4262
r9   c                   < V ^8  d   QhRR/# rb   rc   )r6   rV   s   "r7   r8   rW      s      t r9   c                H   < \         SV `  ! V/ VB  V P                  4        R# )z7Hook for rendering images, adding the `mcid` attribute.N)rt   render_imagern   r^   rv   rG   rx   s   &*,r7   r|   /PDFPageAggregatorWithMarkedContent.render_image   s!    d-f-r9   c                   < V ^8  d   QhRR/# rb   rc   )r6   rV   s   "r7   r8   rW      s      T r9   c                H   < \         SV `  ! V/ VB  V P                  4        R# )zAHook for rendering lines and curves, adding the `mcid` attribute.N)rt   
paint_pathrn   r}   s   &*,r7   r   -PDFPageAggregatorWithMarkedContent.paint_path   s!    D+F+r9   c                R   < V ^8  d   Qh/ S[ S[,          ;R&   S[ S[,          ;R&   # )r1   r]   r[   )r
   intr5   )r6   rV   s   "r7   r8   rW   n   s'      sm"	 
 c]! r9   )r]   r[   rI   )__name__
__module____qualname____firstlineno____doc__r]   r[   r_   rf   rn   ru   r|   r   __annotate_func____static_attributes____classdictcell____classcell__rx   rV   s   @@r7   rR   rR   n   sZ      #H!G! ! 
' '  
 [  r9   rR   c                <    V ^8  d   QhR\         R\        R\         /# )r1   box_rawrotationr3   r   r   )r6   s   "r7   r8   r8      s!        F  e  F  r9   c                 $   \         ;QJ d    R  V  4       F  '       d   K   RM	  RM! R  V  4       4      '       g   \        RV  24      h\        V ^ ,          V ^,          34      w  r#\        V ^,          V ^,          34      w  rEVR9   d   WBWS3# W$W53# )c              3   V   "   T F  p\        V\        P                  4      x  K!  	  R # 5irI   )rK   numbersNumber.0xs   & r7   	<genexpr>!_normalize_box.<locals>.<genexpr>   s     >gz!W^^,,gs   ')FTz0Bounding box contains non-number coordinate(s): )Z   i  )allr+   sorted)r   r   x0x1y0y1s   &&    r7   _normalize_boxr      s    
 3>g>333>g>>>#>wiH
 	
 WQZ,-FBWQZ,-FB9r9   c                <    V ^8  d   QhR\         R\        R\         /# )r1   r   	mb_heightr3   r   )r6   s   "r7   r8   r8      s!     4 4 4E 4f 4r9   c                 0    V w  r#rEW!V,
          WAV,
          3# rI   rc   )r   r   r   r   r   r   s   &&    r7   _invert_boxr      s    NBBBN33r9   c                     a  ] tR t^t o ]P
                  R.,           tRtRtRFV 3R lR lltV 3R lR lt	]
V 3R lR	 l4       t]
V 3R
 lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       t]
V 3R lR l4       tV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRGV 3R lR lltRGV 3R  lR! lltRGV 3R" lR# lltRGV 3R$ lR% lltRGV 3R& lR' lltV 3R( lR) ltRHV 3R* lR+ lltV 3R, lR- ltV 3R. lR/ ltV 3R0 lR1 ltRIV 3R2 lR3 llt RJV 3R4 lR5 llt!RJV 3R6 lR7 llt"RJV 3R8 lR9 llt#V 3R: lR; lt$V 3R< lR= lt%RKV 3R> lR? llt&RGV 3R@ lRA llt'V 3RB lRC lt(V 3RD lt)REt*V t+R# )LPage_layoutTNc                0   < V ^8  d   QhRRRS[ RS[RS[/# )r1   pdfr/   page_objpage_numberinitial_doctop)r   r   r   )r6   rV   s   "r7   r8   Page.__annotate__   s3     *: *:*: *: 	*:
 *:r9   c                l  a Wn         W n        SV n        W0n        W@n        RR V3R lllpV! R^ 4      pVR,          V n        \        V! R4      V P
                  4      pV^,          V^,          ,
          p\        Wx4      V n        R FV  p	V	SP                  9   g   K  \        \        V! V	4      V P
                  4      V4      p
\        W	P                  4       V
4       KX  	  RSP                  9  d   V P                  V n        V P                  V n        \        4       ! V P                  4      V n        R # )	Nc                <    V ^8  d   QhR\         R\        R\        /# )r1   rN   defaultr3   )r5   r   )r6   s   "r7   r8   #Page.__init__.<locals>.__annotate__   s!     	7 	7# 	7 	7s 	7r9   c                 \   < \        SP                  P                  V 4      4      pVf   V# T# rI   )r)   attrsr?   )rN   r   rO   r   s   && r7   get_attrPage.__init__.<locals>.get_attr   s+     2 23 78E#m766r9   Rotateih  MediaBoxCropBoxrI   )r   TrimBoxBleedBoxArtBox)r   	root_pager   r   r   r   r   r   mediaboxr   setattrlowercropboxbboxr   _get_textmapget_textmap)r^   r   r   r   r   r   	_rotationmb_rawr   box_namebox_normalizeds   &&f&&      r7   __init__Page.__init__   s      &,	7 	7 Xq)	!C 4dmmD1Iq	)	#F6DH8>>)!,"8H#5t}}Ey" nn.? E HNN*==DL MM	 %;t'8'89r9   c                   < V ^8  d   QhRR/# rb   rc   )r6   rV   s   "r7   r8   r      s     ' 't 'r9   c                Z    V P                  4        V P                  P                  4        R # rI   )flush_cacher   cache_clearre   s   &r7   close
Page.close   s     $$&r9   c                    < V ^8  d   QhRS[ /# rq   r   )r6   rV   s   "r7   r8   r      s     + +u +r9   c                X    V P                   ^,          V P                   ^ ,          ,
          # )r1   r   re   s   &r7   width
Page.width       yy|diil**r9   c                    < V ^8  d   QhRS[ /# rq   r   )r6   rV   s   "r7   r8   r      s     + + +r9   c                X    V P                   ^,          V P                   ^,          ,
          # )   r   re   s   &r7   heightPage.height   r   r9   c                F   < V ^8  d   QhRS[ S[S[S[3,          ,          /# rq   )r	   r   r5   r   )r6   rV   s   "r7   r8   r      s!      T#s(^ 4 r9   c                     \        V P                  V 4       Uu. uF  qP                  4       NK  	  up# u upi   \         d    . u # i ; i)z-Return the structure tree for a page, if any.)r"   r   to_dictr#   )r^   elems   & r7   structure_treePage.structure_tree   sD    	/<TXXt/LM/LtLLN/LMMM  	I	s   : 5: : A
	A
c                    < V ^8  d   QhRS[ /# rq   )r   )r6   rV   s   "r7   r8   r      s       r9   c                   \        V R 4      '       d   V P                  # \        V P                  P                  V P
                  V P                  P                  R7      p\        V P                  P                  V4      p VP                  V P                  4       TP                  4       T n        T P                  #   \         d   p\        T4      hRp?ii ; i)r   )pagenolaparamsN)hasattrr   rR   r   rsrcmgrr   r   r   process_pager   	Exceptionr,   
get_result)r^   deviceinterpreteres   &   r7   layoutPage.layout   s    4##<<3HH##XX&&

 ))9)96B	'$$T]]3  &002||  	'#A&&	's    B< <CCCc                    < V ^8  d   QhRS[ /# rq   r    )r6   rV   s   "r7   r8   r     s     ? ?
 ?r9   c                   a a R  V 3R lloR VV 3R llp\        S P                  P                  4      ;'       g    . p\        \	        W4      4      p\        S \        4      '       d   S P                  V4      # V# )c                    V ^8  d   QhR\         \        \        3,          R\        R\         \        \        3,          /# )r1   ptrr3   )r   rr   r   )r6   s   "r7   r8   !Page.annots.<locals>.__annotate__  s3     	 	U5%<0 	S 	U5%<=P 	r9   c                    < V^Z,          p\        V4       F6  pV w  rEW2^,          8X  d   SP                  MSP                  pWVV,
          3p K8  	  V # )r   )ranger   r   )r   r   turnsir   ycompr^   s   &&     r7   rotate_point!Page.annots.<locals>.rotate_point  sJ    GE5\%&!)^tzz(_ " Ir9   c                0    V ^8  d   QhR\         R\         /# )r1   annotr3   )r   )r6   s   "r7   r8   r     s     /	 /	 /	5 /	r9   c                 t  < V R ,          w  rr4S! W3SP                   4      pS! W43SP                   4      pSP                  P                  p\        \	        . VOVO54      V4      w  rrV P                  R/ 4      pRVP                  R4      RV P                  R4      RV P                  R4      /pVP                  4        F  w  rVf   K   VP                  R4      W&   K!  	  RSP                  RRRVRW{,
          RV
RWy,
          RSP                  V	,           RV	RVRW,
          RW,
          /pVP                  V4       RV 9   d   SV R&   V VR&   V#   \         d[     TP                  R	4      Y&    K    \         d5    SP                  P                  '       d   h \        R
T RT R24         K  i ; ii ; i)RectAuriURItitleTcontentsContentszutf-8zutf-16zCould not decode z of annotation. z will be missing.r   object_typer  r   r   r   r   doctoptopbottomr   r   Pdata)r   r   r   r   r   r?   rJ   decodeUnicodeDecodeErrorr   raise_unicode_errorsr   r   r   update)r  _a_b_c_dpt0pt1rhr   r  r   r  aextraskvparsedr   r^   s   &                r7   parsePage.annots.<locals>.parse  s   "6]NBBx7Cx7C&&B"-n\s\S\.JB"OBR		#r"AquuU|3EIIj1F
 =$%HHW$5	 '  t//wbbkbbh$--3s&&,F MM&! e|!c
"F6NM= . 	()(:FI1 #xx<<< % "3A3 7$$%3&7!9 	s0   EF7E44&F3F3.F72F33F7)r)   r   annotsrL   maprK   CroppedPage_crop_fn)r^   r#  rawr"  r   s   f   @r7   r%  Page.annots  se    	 	/	 /	b $--../552c%o&dK((==((Mr9   c                    < V ^8  d   QhRS[ /# rq   r   )r6   rV   s   "r7   r8   r   S  s     @ @J @r9   c                \    V P                    Uu. uF  qR ,          f   K  VNK  	  up# u upi )r  )r%  )r^   r  s   & r7   
hyperlinksPage.hyperlinksR  s$    ;;?;aE(;???s   ))c                6   < V ^8  d   QhRS[ S[S[3,          /# rq   r   r5   r    )r6   rV   s   "r7   r8   r   W  s      c:o. r9   c                    \        V R 4      '       d   V P                  # V P                  4       V n        V P                  # _objects)r   r3  parse_objectsre   s   &r7   objectsPage.objectsV  s3    4$$== /3/A/A/C}}r9   c                R   < V ^8  d   QhRS[ S[S[3,          RS[ S[S[3,          /# )r1   r   r3   )r   r   )r6   rV   s   "r7   r8   r   ]  s1     R ReE5L1 ReE5L6I Rr9   c                    V P                   ^ ,          V^ ,          ,           V P                   ^,          V P                  ,           V^,          ,
          3# r   )r   r   )r^   r   s   &&r7   point2coordPage.point2coord]  s:    a 2a5($--*:T[[*H2a5*PQQr9   c                &   < V ^8  d   QhRS[ RS[/# )r1   objr3   )r   r   )r6   rV   s   "r7   r8   r   a  s     H H& HU Hr9   c           
        \         P                  ! \        R VP                  P                  4      P                  4       pR R lp\        \        R\        W1P                  P                  4       4      4      4      pW$R&   V P                  VR&   R F6  p\        W4      '       g   K  \        \        W4      P                  4      WE&   K8  	  \!        V\"        \$        34      '       dN   VP'                  4       pV P(                  P*                  e!   \-        V P(                  P*                  V4      MTVR&   \!        V\"        4      '       d   VP.                  p\!        VP0                  \2        4      '       d   VP0                  MVP0                  3VR&   \!        VP4                  \2        4      '       d   VP4                  MVP4                  3VR&   \!        VR	,          \6        4      '       d   \9        VR	,          4      VR	&   M\!        V\:        34      '       ds   \=        \        V P>                  VR
,          4      4      VR
&   VP@                   UU	u. uF  vrV.\        V P>                  V	4      O5NK   	  up	pVR&   VPB                  VR&   V PD                  R,          w  rRV9   df   V PF                  VR,          ,
          V,           VR&   V PF                  VR,          ,
          V,           VR&   V PH                  VR,          ,           VR&   RV9   d.   V
^ 8w  d'   VR,          V
,           VR&   VR,          V
,           VR&   V# u up	pi ) c                    V ^8  d   QhR\         \        \        3,          R\        \         \        \        3,          ,          /# )r1   itemr3   )r   r5   r   r
   )r6   s   "r7   r8   )Page.process_object.<locals>.__annotate__d  s/     	 	uS#X 	8E#s(O3L 	r9   c                 @    V w  rV\         9   d   \        V4      pW3# R # rI   )	ALL_ATTRSr)   )rA  r   r!  ress   &   r7   process_attr)Page.process_object.<locals>.process_attrd  s#    DAI~!!nxr9   Nr  r   textstroking_colornon_stroking_colorr2   ptspathdash:Nr1   Nr   r   r  r  r  r   r   )ncsscs)%resublt_patrx   r   r   r\   filterr&  __dict__rJ   r   r   r*   getattrrZ   rK   r   r   get_textr   unicode_normnormalize_unicodegraphicstatescolorrM   ncolorr4   rD   r   rL   r:  original_pathdashing_styler   r   r   )r^   r=  kindrF  attrcsrH  gscmdrK  mb_x0mb_tops   &&          r7   process_objectPage.process_objecta  s   vvfb#--"8"89??A	 F4\<<3E3E3G!HIJ"]"..] B s-gc.>.C.CD ! cFO455<<>D 88((4 "$(("7"7> L c6"" !!B'		599				| !" (		599				| %&
 $z*E22#5d:6F#GZ gZ((s4#3#3T%[ABDK QTPaPabPa93S>3t'7'7#=>PabDL,,DL
 b)4<;;d3v=DK"kkDJ6&@DN!004;>DN4<EQJde+DJde+DJ% cs   $M c                L   < V ^8  d   QhRS[ S[,          RS[S[RR3,          /# )r1   layout_objectsr3   N)r	   r   r   r   )r6   rV   s   "r7   r8   r     s.     / /";//	5$$	%/r9   c              #    "   V F|  p\        V\        4      '       dQ   V P                  P                  e   V P	                  V4      x  V P                  VP                  4       R j  xL
  Ki  V P	                  V4      x  K~  	  R #  L5irI   )rK   r   r   r   re  iter_layout_objectsrk   )r^   rh  r=  s   && r7   rj  Page.iter_layout_objects  sm      "C#{++88$$0--c2233CII>>>))#.. " ?s   A%B	'B( B	c                6   < V ^8  d   QhRS[ S[S[3,          /# rq   r0  )r6   rV   s   "r7   r8   r     s     	 	tCO4 	r9   c                    / pV P                  V P                  P                  4       FC  pVR ,          pVR9   d   K  VP                  V4      f   . W&   W,          P	                  V4       KE  	  V# )r  )anno)rj  r   rk   r?   append)r^   r5  r=  r^  s   &   r7   r4  Page.parse_objects  sh    )+++DKK,=,=>C}%Dx{{4 ( "M  % ? r9   c                6   < V ^8  d   QhRS[ S[,          RS[/# r1   table_settingsr3   )r
   r$   r&   )r6   rV   s   "r7   r8   r     s#     ' '&'78'	'r9   c                D    \         P                  ! V4      p\        W4      # rI   )r'   resolver&   r^   rs  tsets   && r7   debug_tablefinderPage.debug_tablefinder  s     $$^44&&r9   c                F   < V ^8  d   QhRS[ S[,          RS[S[,          /# rr  )r
   r$   r	   r%   )r6   rV   s   "r7   r8   r     s'     . .&'78.	e.r9   c                X    \         P                  ! V4      p\        W4      P                  # rI   )r'   ru  r&   tablesrv  s   && r7   find_tablesPage.find_tables  s%     $$^44&---r9   c                F   < V ^8  d   QhRS[ S[,          RS[ S[,          /# rr  )r
   r$   r%   )r6   rV   s   "r7   r8   r     s'      &'78	%r9   c                    \         P                  ! V4      pV P                  V4      p\        V4      ^ 8X  d   R# R R lp\	        \        W4R7      4      ^ ,          pV# )r   Nc                \    V ^8  d   QhR\         R\        \        \        \        3,          /# )r1   r   r3   )r%   r   r   r   )r6   s   "r7   r8   %Page.find_table.<locals>.__annotate__  s&     	9 	9e 	9c5%&7 8 	9r9   c                 x    \        V P                  4      ) V P                  ^,          V P                  ^ ,          3# )   )lencellsr   r   s   &r7   sorterPage.find_table.<locals>.sorter  s)    \M166!9affQi88r9   )rN   )r'   ru  r}  r  rL   r   )r^   rs  rw  r|  r  largests   &&    r7   
find_tablePage.find_table  sS     $$^4!!$'v;!	9 vf1215r9   c                v   < V ^8  d   QhRS[ S[,          RS[S[S[S[ S[,          ,          ,          ,          /# rr  r
   r$   r	   r5   )r6   rV   s   "r7   r8   r     s:     Q Q&'78Q	d4&'	(Qr9   c           	         \         P                  ! V4      pV P                  V4      pV Uu. uF(  qDP                  ! R/ VP                  ;'       g    / B NK*  	  up# u upi Nrc   )r'   ru  r}  extracttext_settings)r^   rs  rw  r|  tables   &&   r7   extract_tablesPage.extract_tables  sT     $$^4!!$'IOP;!3!3!9!9r;PPPs   $A	Ac                v   < V ^8  d   QhRS[ S[,          RS[ S[S[S[ S[,          ,          ,          ,          /# rr  r  )r6   rV   s   "r7   r8   r     s6     ? ?&'78?	$tHSM*+	,?r9   c                    \         P                  ! V4      pV P                  V4      pVf   R # VP                  ! R/ VP                  ;'       g    / B # r  )r'   ru  r  r  r  )r^   rs  rw  r  s   &&  r7   extract_tablePage.extract_table  sJ     $$^4%===>D$6$6$<$<">>r9   c                &   < V ^8  d   QhRS[ RS[/# rF   )r   r-   )r6   rV   s   "r7   r8   r     s     	A 	AS 	AW 	Ar9   c                   \        V P                  R 7      pRV9  d   VP                  RV P                  /4       RV9  d   VP                  RV P                  /4       / VCVCp\
        P                  ! V P                  3/ VB # ))layout_bboxlayout_width_charslayout_widthlayout_height_charslayout_height)r\   r   r  r   r   r   chars_to_textmapchars)r^   rG   defaultsfull_kwargss   &,  r7   r   Page._get_textmap  sx    #'		$
  v-OO^TZZ89 .OO_dkk:;&<&<V&<%%djj@K@@r9   c                   < V ^8  d   QhRS[ S[S[S[,          3,          RS[RS[RS[RS[RS[RS[RS[S[S[S[3,          ,          /# )	r1   patternregexcase
main_groupreturn_charsreturn_groupsrG   r3   )r   r5   r   boolr   r   r	   r   )r6   rV   s   "r7   r8   r     sv     
 
sGCL()
 
 	

 
 
 
 
 
d38n	
r9   c           	     f    V P                   ! R/ \        V4      B pVP                  VVVVVVR 7      # ))r  r  r  r  r  rc   )r   rP   search)	r^   r  r  r  r  r  r  rG   textmaps	   &&&&&&&, r7   r  Page.search  sE     ""A%8%@A~~!%'  
 	
r9   c                &   < V ^8  d   QhRS[ RS[/# rF   r   r5   )r6   rV   s   "r7   r8   r     s     I IS IS Ir9   c                L    V P                   ! R/ \        V4      B P                  # r  )r   rP   	as_stringr^   rG   s   &,r7   extract_textPage.extract_text  s"    >"5f"=>HHHr9   c                &   < V ^8  d   QhRS[ RS[/# rF   r  )r6   rV   s   "r7   r8   r     s     ? ?C ?C ?r9   c                D    \         P                  ! V P                  3/ VB # rI   )r   extract_text_simpler  r  s   &,r7   r  Page.extract_text_simple  s    ((>v>>r9   c                &   < V ^8  d   QhRS[ RS[/# rF   )r   r    )r6   rV   s   "r7   r8   r     s     9 9c 9j 9r9   c                D    \         P                  ! V P                  3/ VB # rI   )r   extract_wordsr  r  s   &,r7   r  Page.extract_words  s    ""4::888r9   c                2   < V ^8  d   QhRS[ RS[ RS[RS[/# )r1   stripr  rG   r3   )r  r   r    )r6   rV   s   "r7   r8   r     s-     
 

04
GJ
	
r9   c                X    V P                   ! R/ \        V4      B P                  WR 7      # ))r  r  rc   )r   rP   extract_text_lines)r^   r  r  rG   s   &&&,r7   r  Page.extract_text_lines  s4     >"5f"=>QQ R 
 	
r9   c                0   < V ^8  d   QhRS[ RS[RS[RR/# r1   r   relativestrictr3   r'  r   r  )r6   rV   s   "r7   r8   r   !  s3     I II&*I<@I	Ir9   c                    \        WW#R 7      # ))r  r  )r'  r^   r   r  r  s   &&&&r7   crop	Page.crop!  s     4HHr9   c                0   < V ^8  d   QhRS[ RS[RS[RR/# r  r  )r6   rV   s   "r7   r8   r   &  -     
 

&*
<@
	
r9   c                :    \        WW#\        P                  R7      # zC
Same as .crop, except only includes objects fully within the bbox
)r  r  crop_fn)r'  r   within_bboxr  s   &&&&r7   r  Page.within_bbox&  s     %BSBS
 	
r9   c                0   < V ^8  d   QhRS[ RS[RS[RR/# r  r  )r6   rV   s   "r7   r8   r   0  r  r9   c                :    \        WW#\        P                  R7      # r  )r'  r   outside_bboxr  s   &&&&r7   r  Page.outside_bbox0  s     %BTBT
 	
r9   c                <   < V ^8  d   QhRS[ S[.S[3,          RR/# )r1   test_functionr3   FilteredPage)r   r   r  )r6   rV   s   "r7   r8   r   :  s&     1 1HeWd]$; 1 1r9   c                    \        W4      # rI   )r  )r^   r  s   &&r7   rS  Page.filter:  s    D00r9   c                $   < V ^8  d   QhRS[ RR/# )r1   rG   r3   r  )r   )r6   rV   s   "r7   r8   r   =  s     	 	S 	^ 	r9   c                    \        V R 4      pV P                  P                  4        UUu/ uF  w  r4W4bK	  	  uppVn        \        P
                  ! V P                  3/ VB VP                  R&   V# u uppi )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                     R # )Trc   r  s   &r7   <lambda>#Page.dedupe_chars.<locals>.<lambda>C  s    r9   char)r  r5  rJ   r3  r   dedupe_charsr  )r^   rG   pr^  objss   &,   r7   r  Page.dedupe_chars=  sf     ~.37<<3E3E3GH3GZTdj3GH
"//

EfE

6 Is   A1c                   < V ^8  d   QhRS[ S[S[S[3,          ,          RS[ S[S[S[3,          ,          RS[ S[S[S[3,          ,          RS[RS[RR/# )r1   
resolutionr   r   	antialiasforce_mediaboxr3   r.   )r
   r   r   rr   r  )r6   rV   s   "r7   r8   r   H  sq     
 
U3:./
 c5j)*
 sEz*+	

 
 
 

r9   c                
   ^RI HpHp \        R WV3 4       4      pV^8  d   \	        RV 24      hVe   ^HV,          V P
                  ,          pMVe   ^HV,          V P                  ,          pT! T T;'       g    TVVR7      # )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.
)DEFAULT_RESOLUTIONr.   c              3   (   "   T F  qR Jx  K
  	  R # 5irI   rc   r   s   & r7   r    Page.to_image.<locals>.<genexpr>X  s     K/J!/Js   zUOnly one of these arguments can be provided: resolution, width, height. You provided )r  r  r  )displayr  r.   sum
ValueErrorr   r   )	r^   r  r   r   r  r  r  r.   	num_specss	   &&&&&&   r7   to_imagePage.to_imageH  s     	;K
6/JKK	q=ghqgrs  edjj0Jft{{2J!77%7)	
 	
r9   c                \   < V ^8  d   QhRS[ S[S[,          ,          RS[S[S[3,          /# )r1   object_typesr3   )r
   r	   r5   r   r   )r6   rV   s   "r7   r8   r   i  s,      HT#Y$7 4S> r9   c                v   Vf-   \        V P                  P                  4       4      R.,           pMTpRV P                  RV P                  RV P
                  RV P                  RV P                  RV P                  RV P                  R	V P                  /pV F  p\        WR
,           4      W4R
,           &   K   	  V# )Nr  r   r   r   r   r   r   r   r   s)rL   r5  keysr   r   r   r   r   r   r   r   rU  )r^   r  _object_typesdts   &&   r7   r   Page.to_dicti  s     !2!2!45	AM(M4++d11t||DIITZZdkk	
 A 3w/A#gJ r9   c                    < V ^8  d   QhRS[ /# rq   )r5   )r6   rV   s   "r7   r8   r   |  s     , ,# ,r9   c                "    R V P                    R2# )z<Page:>)r   re   s   &r7   __repr__Page.__repr__|  s    (()++r9   c                B   < V ^8  d   Qh/ S[ S[,          ;R&   S[;R&   # )r1   cached_propertiesis_original)r	   r5   r  )r6   rV   s   "r7   r8   r      s     CyL  r9   )r   r3  r   r   r   r   r   r   r   r   r   r   r9  rI   )TTr   TT)TT)FT)NNNFF),r   r   r   r   r!   r  r  pagesr   r   propertyr   r   r   r   r%  r-  r5  r:  re  rj  r4  rx  r}  r  r  r  r   r  r  r  r  r  r  r  r  rS  r  r  r   r  r   r   r   rV   s   @r7   r   r      s    #,#>#>)#LKE*: *:X' ' + + + +      ? ?B @ @  R RH HT/ /	 	' '. . "Q Q? ?	A 	A
 
(I I? ?9 9
 
I I

 

 
1 1	 	
 
B &, ,E  r9   r   c                   B   a  ] tR tRt o RtV 3R lR ltV 3R ltRtV tR# )DerivedPagei  Fc                    < V ^8  d   QhRS[ /# )r1   parent_page)r   )r6   rV   s   "r7   r8   DerivedPage.__annotate__  s     : :D :r9   c                   Wn         VP                  V n        VP                  V n        VP                  V n        VP                  V n        VP
                  V n        VP                  V n        VP                  V n        VP                  V n        V P                  \        P                  4       \        4       ! V P                  4      V n        R # rI   )r  r   r   r   r   r   r   r   r   r   r!   r  r   r   r   )r^   r  s   &&r7   r   DerivedPage.__init__  s    &$..??#,,&22)88#,,#,,"**445$;t'8'89r9   c                &   < V ^8  d   Qh/ S[ ;R&   # )r1   r  )r  )r6   rV   s   "r7   r8   r    s      r9   )
r   r   r   r   r   r   r  r   r   r   N)	r   r   r   r   r  r   r   r   r   r
  s   @r7   r  r    s     K: :  r9   r  c                4    V ^8  d   QhR\         R\         RR/# )r1   r   parent_bboxr3   N)r   )r6   s   "r7   r8   r8     s!     
 
V 
& 
T 
r9   c                    \         P                  ! V 4      pV^ 8X  d   \        RV  R24      h\         P                  ! W4      pVf   \        RV  RV 24      h\         P                  ! V4      pWB8  d   \        RV  RV 24      hR# )r   zBounding box z has an area of zero.Nz. 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   &&   r7   test_proposed_bboxr    s    $$T*IA~=.CDEE$$T7GD6 "((3}6
 	

 ''0LD6 "((3}6
 	
  r9   c                   x   a a ] tR tRt o]P
                  RR3V3R lV 3R lllt]V3R lR l4       tRt	Vt
V ;t# )	r'  i  FTc          
      T   < V ^8  d   QhRS[ RS[RS[S[S[.S[3,          RS[RS[/# )r1   r  	crop_bboxr  r  r  )r   r   r   r    r  )r6   rV   s   "r7   r8   CroppedPage.__annotate__  sL     " "" " :v.
:;	"
 " "r9   c                X  <aa V'       d4   VP                   w  rg pSw  rrW,           W,           W,           W,           3oV'       d   \        SVP                   4       R  VV3R llp\        SV `  V4       Wn        S\
        P                  J d   VP                   V n         R# SV n         R# )c                0    V ^8  d   QhR\         R\         /# )r1   r  r3   r   )r6   s   "r7   r8   *CroppedPage.__init__.<locals>.__annotate__  s     	, 	,: 	,* 	,r9   c                    < S! V S4      # rI   rc   )r  r  r  s   &r7   r(  &CroppedPage.__init__.<locals>._crop_fn  s    4++r9   N)r   r  rt   r   r(  r   r  )r^   r  r  r  r  r  o_x0o_top_r   r  r   r  r(  rx   s   &&ff&&        r7   r   CroppedPage.__init__  s      + 0 0DA"+BRCKFNKIy+*:*:;	, 	, 	%  e(((#((DI!DIr9   c                6   < V ^8  d   QhRS[ S[S[3,          /# rq   r0  )r6   rV   s   "r7   r8   r    s      c:o. r9   c                    \        V R 4      '       d   V P                  # V P                  P                  P	                  4        UUu/ uF  w  rWP                  V4      bK  	  uppV n        V P                  # u uppi r2  )r   r3  r  r5  rJ   r(  r^   r   r!  s   &  r7   r5  CroppedPage.objects  si    4$$== ,0,<,<,D,D,J,J,L0
,LDAA}}Q,L0
 }}0
s   A7)r(  r3  r   )r   r   r   r   r   crop_to_bboxr   r	  r5  r   r   r   r   s   @@r7   r'  r'    s:     
 ?D>P>P" ":   r9   r'  c                   Z   a a ] tR tRt oV3R lV 3R llt]V3R lR l4       tRtVtV ;t	# )r  i  c                >   < V ^8  d   QhRS[ RS[S[.S[3,          /# )r1   r  	filter_fn)r   r   r   r  )r6   rV   s   "r7   r8   FilteredPage.__annotate__  s&     & &D &Xugtm5L &r9   c                T   < VP                   V n         W n        \        SV `  V4       R # rI   )r   r0  rt   r   )r^   r  r0  rx   s   &&&r7   r   FilteredPage.__init__  s"    $$	"%r9   c                6   < V ^8  d   QhRS[ S[S[3,          /# rq   r0  )r6   rV   s   "r7   r8   r1    s      c:o. r9   c                   \        V R 4      '       d   V P                  # V P                  P                  P	                  4        UUu/ uF%  w  rV\        \        V P                  V4      4      bK'  	  uppV n        V P                  # u uppi r2  )r   r3  r  r5  rJ   rL   rS  r0  r+  s   &  r7   r5  FilteredPage.objects  sw    4$$==  ((006680
8 tF4>>1-..80
 }}	0
s   +B)r3  r   r0  )
r   r   r   r   r   r	  r5  r   r   r   r   s   @@r7   r  r    s(     & &
   r9   r  )rw   r   	linewidthrK  sizesrcsizer   r   r   r   r   bitsmatrixuprightr2   rH  	imagemask
colorspaceevenoddfillrJ  strokerI  streamrZ   rl   rT   r9  )Qr   rP  	functoolsr   typingr   r   r   r   r   r	   r
   r   r   r   unicodedatar   rX  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#   r  r$   r%   r&   r'   r(   r)   r*   utils.exceptionsr+   r,   
utils.textr-   compilerR  setrD  r  r.   r   r/   r>   rD   rP   rR   r   r   r   r  r  r'  r  rc   r9   r7   <module>rS     s    	    7  0   = $ '  5 5   7 F F ? ? F 	F		B "
 )) 0 1*0): 0f (4
C,9 C,L:$ :"
(%+ %P; r9   