
    eҳgtd              	       b   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.m/Z/ ddl0m1Z1m2Z2m3Z3m4Z4 ddl%m5Z5m6Z6m7Z7 ddl8m9Z9  e j:        d          Z; e<g d          Z=erddl>m?Z? ddl@mAZA ddddddZBdeCdeDfdZEd eed!f         dee
eeeFeGf         d!f                  e
eD         f         fd"ZHd edee
eeeFeGf         d!f                  e
eD         f         fd#ZId$eeDef         deeDef         fd%ZJ G d& d'e          ZKd8d(e'd)e(de'fd*ZLd(e'd+e(de'fd,ZM G d- d.e,          ZN G d/ d0eN          ZOd1e'd2e'ddfd3ZP G d4 d5eO          ZQ G d6 d7eO          ZRdS )9    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)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-|                      d          dz   }| d |         | |d          }}nd| }}t                              |t          |          dd                   }t          |          dd         |z   S )N   +r          )indexCP936_FONTNAMESgetstr)r;   split_atprefixsuffix
suffix_news        M/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/pdfplumber/page.pyfix_fontname_bytesrY   Z   s    x>>$''!+!)8),hxyy.Ah $$VS[[2->??Jv;;qtz))rM   color.c                     t          | d         t                    r&| d d         pd t          | d         j                  fS | d fS )NrO   )
isinstancer   r)   rE   )rZ   s    rX   separate_patternr]   e   sJ     %)Y'' crc
"d[r%@%@@@d{rM   c                     | dS t          | t                    r| }n(t          | t                    rt          |           }n| f}t          |          S )N)NN)r\   tuplelistr]   )rZ   	tuplefieds     rX   normalize_colorrb   n   s[     }|	E5	!	! 			E4	 	  %LL		H	I&&&rM   kwargsc                 >    d |                                  D             S )Nc                 b    i | ],\  }}|t          |t                    rt          |          n|-S  )r\   r`   r_   ).0keyvalues      rX   
<dictcomp>z'tuplify_list_kwargs.<locals>.<dictcomp>}   sG       C 	j55@eElll5  rM   )items)rc   s    rX   tuplify_list_kwargsrl   |   s+      ,,..   rM   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_tagrG   propsrJ   c                     t          |j                  | _        t          |t                    rd|v r|d         | _        dS d| _        dS )z5Handle beginning of tag, setting current MCID if any.MCIDN)r)   rE   rp   r\   dictro   )selfrG   rq   s      rX   	begin_tagz,PDFPageAggregatorWithMarkedContent.begin_tag   sG    "38,,eT"" 	!v!&MDMMM DMMMrM   c                 "    d| _         d| _        dS )z/Handle beginning of tag, clearing current MCID.N)rp   ro   ru   s    rX   end_tagz*PDFPageAggregatorWithMarkedContent.end_tag   s    rM   c                 v    | j         j        r,| j         j        d         }| j        |_        | j        |_        dS dS )z^Add current MCID to what we hope to be the most recent object created
        by pdfminer.six.rO   N)cur_item_objsro   rF   rp   rG   )ru   cur_objs     rX   tag_cur_itemz/PDFPageAggregatorWithMarkedContent.tag_cur_item   s@     = 	'm)"-G=GL,GKKK	' 	'rM   c                 b     t                      j        |i |}|                                  |S )z;Hook for rendering characters, adding the `mcid` attribute.)superrender_charr~   )ru   argsrc   r-   	__class__s       rX   r   z.PDFPageAggregatorWithMarkedContent.render_char   s5    !egg!42622
rM   c                 b     t                      j        |i | |                                  dS )z7Hook for rendering images, adding the `mcid` attribute.N)r   render_imager~   ru   r   rc   r   s      rX   r   z/PDFPageAggregatorWithMarkedContent.render_image   s7    d-f---rM   c                 b     t                      j        |i | |                                  dS )zAHook for rendering lines and curves, adding the `mcid` attribute.N)r   
paint_pathr~   r   s      rX   r   z-PDFPageAggregatorWithMarkedContent.paint_path   s7    D+F+++rM   NrJ   N)__name__
__module____qualname____doc__ro   r
   int__annotations__rp   rS   r   r   rv   ry   r~   floatr   r   r   __classcell__r   s   @rX   rn   rn      s          #Hhsm"""!GXc]!!!! !Y !x	/B !d ! ! ! !   
' ' ' 'e           
         rM   rn   box_rawrotationc                     t          | d         | d         f          \  }}t          | d         | d         f          \  }}|dv r||||fS ||||fS )Nr   rN   r      )Z   i  )sorted)r   r   r4   r5   r6   r7   s         rX   _normalize_boxr      si    
 WQZ,--FBWQZ,--FB9BBBBrM   	mb_heightc                 (    | \  }}}}|||z
  |||z
  fS r   rf   )r   r   r4   r6   r5   r7   s         rX   _invert_boxr      s&    NBB	BIN33rM   c                      e Zd ZU ej        dgz   Zee         ed<   dZe	ed<   dZ
	 dGddd	ed
edefdZdHd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$	 dIde%e&         de'fdZ(	 dIde%e&         dee)         fdZ*	 dIde%e&         de%e)         fd Z+	 dIde%e&         deeee%e                                    fd!Z,	 dIde%e&         de%eee%e                                    fd"Z-d#ede.fd$Z/	 	 	 	 	 dJd%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	 dKd/e	d)e	d#edefd0Z6	 dLd2e7d3e	d4e	dd5fd6Z8	 dLd2e7d3e	d4e	dd5fd7Z9	 dLd2e7d3e	d4e	dd5fd8Z:d9e;ege	f         dd:fd;Z<d#edd:fd<Z=	 	 	 	 	 dMd=e%e0ee>f                  d>e%e0ee>f                  d?e%e0ee>f                  d@e	dAe	ddBfdCZ?dIdDe%ee                  deeef         fdEZ@defdFZAdS )NPage_layoutcached_propertiesTis_originalNr   pdfrI   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j        v r2t          t           |d          | j                  |          | _        n| j
        | _        | j
        | _         t                      | j                  | _        d S )Nrh   defaultrJ   c                 ^    t          j                            |                     }||n|S r   )r*   attrsrR   )rh   r   ri   r   s      rX   get_attrzPage.__init__.<locals>.get_attr   s.     2 23 7 788E#m776rM   Rotater   ih  MediaBoxr   r   CropBoxr   )r   	root_pager   r   r   rS   r   r   r   r   mediaboxr   cropboxbboxr   _get_textmapget_textmap)	ru   r   r   r   r   r   	_rotationmb_rawr   s	     `      rX   __init__zPage.__init__   s0     &,	7 	7# 	7 	7s 	7 	7 	7 	7 	7 	7 HXq))	!C 4 4dmDD1Iq	)	#FI66&&&xx	22DMBBI DLL  =DL M	 '9;;t'899rM   rJ   c                 `    |                                   | j                                         d S r   )flush_cacher   cache_clearrx   s    rX   closez
Page.close   s/    $$&&&&&rM   c                 8    | j         d         | j         d         z
  S )NrN   r   r   rx   s    rX   r3   z
Page.width       y|dil**rM   c                 8    | j         d         | j         d         z
  S )Nr   r   r   rx   s    rX   r.   zPage.height  r   rM   c                 f    	 d t          | j        |           D             S # t          $ r g cY S w xY w)z-Return the structure tree for a page, if any.c                 6    g | ]}|                                 S rf   )to_dict)rg   elems     rX   
<listcomp>z'Page.structure_tree.<locals>.<listcomp>	  s     MMMtDLLNNMMMrM   )r#   r   r$   rx   s    rX   structure_treezPage.structure_tree  sK    	MM}TXt/L/LMMMM  	 	 	III	s   ! 00c                 .   t          | d          r| j        S t          | j        j        | j        | j        j                  }t          | j        j        |          }|                    | j	                   |
                                | _        | j        S )Nr   )pagenolaparams)hasattrr   rn   r   rsrcmgrr   r   r   process_pager   
get_result)ru   deviceinterpreters      rX   layoutzPage.layout  s    4## 	 <3H#X&
 
 

 ))96BB  ///%0022|rM   c                 v    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                  pg }t          t          ||                    }t           t                    r                     |          S |S )NptrrJ   c                 |    |dz  }t          |          D ]%}| \  }}||dz  k    rj        nj        }|||z
  f} &| S )Nr   rN   )ranger3   r.   )r   r   turnsixycompru   s          rX   rotate_pointz!Page.annots.<locals>.rotate_point  sW    GE5\\ % %1%&%!)^^tzz$(_IrM   annotc                 8   | d         \  }}}} ||fj                   } ||fj                   }j        j        }t          t	          g ||R           |          \  }}	}
}|                     di           }|                    d          |                     d          |                     d          d}|                                D ]~\  }}|w	 |                    d          ||<   !# t          $ rP 	 |                    d          ||<   n3# t          $ r& j	        j
        r t          d	| d
| d           Y nw xY wY zw xY wj        d|||z
  |
||	z
  j        |	z   |	||
|z
  ||	z
  d}|                    |           d| v r| d<   | |d<   |S )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_typer4   r6   r5   r7   doctoptopbottomr3   r.   Pdata)r   r   r.   r   r   rR   rk   decodeUnicodeDecodeErrorr   raise_unicode_errorsr   r   r   update)r   _a_b_c_dpt0pt1rhr4   r   r5   r   aextraskvparsedr   ru   s                    rX   parsezPage.annots.<locals>.parse%  s$   "6]NBB,Bx77C,Bx77C&B"-n\s\S\\.J.JB"O"OBR		#r""AuuU||3!IIj11 F
   1=$%HHW$5$5q		- 	 	 	()(:(:F1II1   #x< & % !9A !9 !9$%!9 !9 !9    	 !  $/&6k3h-3 b 3, F MM&!!! e||!c
"F6NMs6   C22
E=DE-EEEEE)r   r   r   r    r*   r   annotsr`   mapr\   CroppedPage_crop_fn)ru   r   rawr   r   s   `   @rX   r   zPage.annots  s    	U5%<0 	S 	U5%<=P 	 	 	 	 	 	/	 /	5 /	 /	 /	 /	 /	 /	 /	b $-.//52c%oo&&dK(( 	==(((MrM   c                 $    d | j         D             S )Nc                 "    g | ]}|d          
|S )r   rf   )rg   r   s     rX   r   z#Page.hyperlinks.<locals>.<listcomp>_  s!    ???a!E(*>*>*>*>rM   )r   rx   s    rX   
hyperlinkszPage.hyperlinks]  s    ??4;????rM   c                 p    t          | d          r| j        S |                                 | _        | j        S )N_objects)r   r  parse_objectsrx   s    rX   objectszPage.objectsa  s7    4$$ 	!= /3/A/A/C/C}rM   r   c                 j    | j         d         |d         z   | j         d         | j        z   |d         z
  fS )Nr   r   )r   r.   )ru   r   s     rX   point2coordzPage.point2coordh  s4    a 2a5($-*:T[*H2a5*PQQrM   objc           
          t          j        t          d|j        j                                                  }dt          t          t          f         dt          t          t          t          f                  fd}t          t          d t          ||j                                                                      }||d<    j        |d<   dD ]7}t!          ||          r%t#          t%          ||          j                  ||<   8dD ]'\  }}||v rt)          ||                   \  ||<   ||<   (t+          |t,          t.          f          r?|                                } j        j        t7           j        j        |          n||d	<   t+          |t,                    ru|j        }	t)          |	j                  \  |d
<   |d<   t)          |	j                  \  |d<   |d<   t+          |d         t>                    rtA          |d                   |d<   nat+          |tB          f          rKtE          t           j#        |d                             |d<    fd|j$        D             |d<   |j%        |d<    j&        d d         \  }
}d|v r? j'        |d         z
  |z   |d<    j'        |d         z
  |z   |d<    j(        |d         z   |d<   d|v r"|
dk    r|d         |
z   |d<   |d         |
z   |d<   |S )N itemrJ   c                 H    | \  }}|t           v rt          |          }||fS d S r   )	ALL_ATTRSr*   )r  r   r   ress       rX   process_attrz)Page.process_object.<locals>.process_attro  s-    DAqI~~!!nn3xtrM   r   r   )ncsscs))rC   stroking_pattern)rA   non_stroking_patternr<   rC   r  rA   r  r;   r0   c                 F    g | ]^}}|gt          j        |          R S rf   )r   r	  )rg   cmdr0   ru   s      rX   r   z'Page.process_object.<locals>.<listcomp>  s5    bbb93S>3t'7#=#=>>bbbrM   pathdashrN   r6   r7   r   r   r   r4   r   r5   ))resublt_patr   r   lowerr   rS   r   r
   rt   filterr   __dict__rk   r   r   r+   getattrrE   rb   r\   r   r   get_textr   unicode_normnormalize_unicodegraphicstatescolorncolorbytesrY   r   r`   r	  original_pathdashing_styler   r.   r   )ru   r
  kindr  attrcs
color_attrpattern_attrr<   gsmb_x0mb_tops   `           rX   process_objectzPage.process_objectl  s.   vfb#-"899??AA	uS#X 	8E#s(O3L 	 	 	 	 F4\3<3E3E3G3G!H!HIIJJ"]".]  	E 	EB sB E-gc2.>.>.CDDR)
 	Y 	Y$J T!!7FtJGW7X7X4Z $|"4cFO455 	<<>>D 8(4 "$("7>>> L c6"" 	- !B?N	@ @<D!"D);$< HW	H HDD%&-C(D
 $z*E22 H#5d:6F#G#GZ gZ(( 	-s4#3T%[AABBDK cbbbPSPabbbDL,DL
 bqb)v4<<;d3v=DK"kDJ6&@DN!04;>DN4<<EQJJde+DJde+DJrM   layout_objectsc              #      K   |D ]r}t          |t                    rD| j        j        |                     |          V  |                     |j                  E d {V  [|                     |          V  sd S r   )r\   r   r   r   r2  iter_layout_objectsr|   )ru   r3  r
  s      rX   r5  zPage.iter_layout_objects  s       " 		/ 		/C#{++ /8$0--c2222233CI>>>>>>>>>>))#......		/ 		/rM   c                     i }|                      | j        j                  D ]D}|d         }|dv r|                    |          g ||<   ||                             |           E|S )Nr   )anno)r5  r   r|   rR   append)ru   r  r
  r*  s       rX   r  zPage.parse_objects  s|    )+++DK,=>> 	& 	&C}%Dx{{4  ( "DM  %%%%rM   table_settingsc                 J    t          j        |          }t          | |          S r   )r(   resolver'   ru   r9  tsets      rX   debug_tablefinderzPage.debug_tablefinder  s$     $^444&&&rM   c                 T    t          j        |          }t          | |          j        S r   )r(   r;  r'   tablesr<  s      rX   find_tableszPage.find_tables  s'     $^444&&--rM   c                    t          j        |          }|                     |          }t          |          dk    rd S dt          dt
          t          t          t          f         fd}t          t          ||                    d         }|S )Nr   r   rJ   c                 ^    t          | j                   | j        d         | j        d         fS )Nr   r   )lencellsr   r   s    rX   sorterzPage.find_table.<locals>.sorter  s%    \\M16!9afQi88rM   )rh   )
r(   r;  rA  rD  r&   r   r   r   r`   r   )ru   r9  r=  r@  rG  largests         rX   
find_tablezPage.find_table  s     $^44!!$''v;;!4	9e 	9c5%&7 8 	9 	9 	9 	9 vf&1112215rM   c                 r    t          j        |          |                               }fd|D             S )Nc                 8    g | ]} |j         d i j        pi S )rf   )extracttext_settings)rg   tabler=  s     rX   r   z'Page.extract_tables.<locals>.<listcomp>  s3    PPP;;!3!9r;;PPPrM   )r(   r;  rA  )ru   r9  r@  r=  s      @rX   extract_tableszPage.extract_tables  sB     $^44!!$''PPPPPPPPrM   c                     t          j        |          }|                     |          }|d S  |j        di |j        pi S Nrf   )r(   r;  rI  rL  rM  )ru   r9  r=  rN  s       rX   extract_tablezPage.extract_table  sO     $^44%%=4 5=>>D$6$<">>>rM   rc   c                     t          | j                  }d|vr|                    d| j        i           d|vr|                    d| j        i           i ||}t          j        | j        fi |S )N)layout_bboxlayout_width_charslayout_widthlayout_height_charslayout_height)rt   r   r   r3   r.   r   chars_to_textmapchars)ru   rc   defaultsfull_kwargss       rX   r   zPage._get_textmap  s    #'	$
 $
 $
  v--OO^TZ8999 ..OO_dk:;;;&<&<V&<%dj@@K@@@rM   patternregexcase
main_groupreturn_charsreturn_groupsc                 l     | j         di t          |          }|                    ||||||          S )N)r^  r_  r`  ra  rb  rf   )r   rl   search)	ru   r]  r^  r_  r`  ra  rb  rc   textmaps	            rX   rd  zPage.search  sR     #$"AA%8%@%@AA~~!%'  
 
 	
rM   c                 @     | j         di t          |          j        S rQ  )r   rl   	as_stringru   rc   s     rX   extract_textzPage.extract_text#  s'    t>>"5f"="=>>HHrM   c                 0    t          j        | j        fi |S r   )r   extract_text_simplerZ  rh  s     rX   rk  zPage.extract_text_simple&  s    (>>v>>>rM   c                 0    t          j        | j        fi |S r   )r   extract_wordsrZ  rh  s     rX   rm  zPage.extract_words)  s    "4:88888rM   stripc                 `     | j         di t          |                              ||          S )N)rn  ra  rf   )r   rl   extract_text_lines)ru   rn  ra  rc   s       rX   rp  zPage.extract_text_lines,  sC      t>>"5f"="=>>QQl R 
 
 	
rM   Fr   relativestrictr   c                 (    t          | |||          S )N)rq  rr  )r   ru   r   rq  rr  s       rX   cropz	Page.crop3  s     4HHHHrM   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       rX   ry  zPage.within_bbox8  s)     $&%BS
 
 
 	
rM   c                 >    t          | |||t          j                  S rw  )r   r   outside_bboxrt  s       rX   r{  zPage.outside_bboxB  s)     $&%BT
 
 
 	
rM   test_functionFilteredPagec                 "    t          | |          S r   )r}  )ru   r|  s     rX   r  zPage.filterL  s    D-000rM   c                     t          | d           }d | j                                        D             |_        t	          j        | j        fi ||j        d<   |S )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                     dS )NTrf   rF  s    rX   <lambda>z#Page.dedupe_chars.<locals>.<lambda>U  s     rM   c                     i | ]\  }}||	S rf   rf   )rg   r*  objss      rX   rj   z%Page.dedupe_chars.<locals>.<dictcomp>V  s    HHHZT4dDHHHrM   char)r}  r  rk   r  r   dedupe_charsrZ  )ru   rc   ps      rX   r  zPage.dedupe_charsO  s^     ~~..HH4<3E3E3G3GHHH
"/
EEfEE
6rM   
resolutionr3   r.   	antialiasforce_mediaboxrH   c                     ddl m}m} t          d |||fD                       }|dk    rt	          d|           |d|z  | j        z  }n|d|z  | j        z  } || |p|||          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_RESOLUTIONrH   c              3      K   | ]}|d uV  	d S r   rf   )rg   r   s     rX   	<genexpr>z Page.to_image.<locals>.<genexpr>j  s&      KK!KKKKKKrM   zUOnly one of these arguments can be provided: resolution, width, height. You provided NH   )r  r  r  )displayr  rH   sum
ValueErrorr3   r.   )	ru   r  r3   r.   r  r  r  rH   	num_specss	            rX   to_imagezPage.to_imageZ  s     	;:::::::KK
E6/JKKKKK	q==shqss   edj0JJft{2Jy!7%7)	
 
 
 	
rM   object_typesc           	         |+t          | 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   r3   r.   s)r`   r  keysr   r   r   r   r   r   r3   r.   r   )ru   r  _object_typesdts        rX   r   zPage.to_dict{  s     !2!2!4!455	AMM(M+"1|IZk	
 	
  	0 	0A q3w//Aa#gJJrM   c                     d| j          dS )Nz<Page:>)r   rx   s    rX   __repr__zPage.__repr__  s    +(++++rM   r   r   r   )TTr   TT)TT)FT)NNNFF)Br   r   r   r"   r   r	   rS   r   r   boolpagesr   r   r   r   r   propertyr3   r.   r   r   r   r   r   r!   r   r  r  r   r	  r   r    r2  r   r   r5  r  r
   r%   r'   r>  r&   rA  rI  rO  rR  r,   r   r   r   rd  ri  rk  rm  rp  r   ru  ry  r{  r   r  r  r   r  r   r  rf   rM   rX   r   r      s)        #,#>)#LtCyLLLKE !"': ':': ': 	':
 ': ': ': ':R' ' ' ' +u + + + X+ + + + + X+ T#s(^ 4    X     X ?
 ? ? ? X?B @J @ @ @ X@ c:o.    XReE5L1 ReE5L6I R R R RO& OU O O O Ob/";//	5$$	%/ / / /	tCO4 	 	 	 	 <@' '&'78'	' ' ' ' <@. .&'78.	e. . . . <@ &'78	%   $ <@Q Q&'78Q	d4&'	(Q Q Q Q <@? ?&'78?	$tHSM*+	,? ? ? ?	AS 	AW 	A 	A 	A 	A !"
 
sGCL()
 
 	

 
 
 
 
 
d38n	
 
 
 
(IS IS I I I I?C ?C ? ? ? ?9c 9j 9 9 9 9 8<
 

04
GJ
	
 
 
 
 DHI II&*I<@I	I I I I DH
 

&*
<@
	
 
 
 
 DH
 

&*
<@
	
 
 
 
1HeWd]$; 1 1 1 1 1	S 	^ 	 	 	 	 37-1.2$
 
U3:./
 c5j)*
 sEz*+	

 
 
 

 
 
 
B HT#Y$7 4S>    &,# , , , , , ,rM   r   c                   *    e Zd ZU dZeed<   defdZdS )DerivedPageFr   parent_pagec                 T   || _         |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        |j        | _        | 	                    t          j                    t                      | j                  | _        d S r   )r  r   r   r   r   r   r   r   r   r   r"   r   r   r   r   )ru   r  s     rX   r   zDerivedPage.__init__  s    &$.?#,&2)8#,#,"*4555&9;;t'899rM   N)r   r   r   r   r  r   r   r   rf   rM   rX   r  r    sA         K:D : : : : : :rM   r  r   parent_bboxc                    t          j        |           }|dk    rt          d|  d          t          j        | |          }|t          d|  d|           t          j        |          }||k     rt          d|  d|           d S )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        rX   test_proposed_bboxr    s    $T**IA~~DDDDEEE$T;77G6D 6 6(36 6
 
 	

 '00Li6D 6 6(36 6
 
 	
  rM   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                 H   |r%|j         \  }}}}\  }	}
}}|	|z   |
|z   ||z   ||z   f|rt          |j                    dt          dt          ffd}t                                          |           || _        t          j        u r|j         | _         d S | _         d S )Nr  rJ   c                      |           S r   rf   )r  r  rx  s    rX   r   z&CroppedPage.__init__.<locals>._crop_fn  s    74+++rM   )r   r  r!   r   r   r   r   r{  )ru   r  r  rx  rq  rr  o_x0o_top_r4   r   r5   r   r   r   s     ``          rX   r   zCroppedPage.__init__  s      	L + 0D%A"+BRdC%KdFUNKI 	<y+*:;;;	,: 	,* 	, 	, 	, 	, 	, 	, 	, 	%%%  e(((#(DIII!DIIIrM   rJ   c                      t           d          r j        S  fd j        j                                        D              _         j        S )Nr  c                 B    i | ]\  }}|                     |          S rf   )r   rg   r   r   ru   s      rX   rj   z'CroppedPage.objects.<locals>.<dictcomp>  s8     0
 0
 0
$(AqAt}}Q0
 0
 0
rM   r   r  r  r  rk   rx   s   `rX   r  zCroppedPage.objects  sc    4$$ 	!= 0
 0
 0
 0
,0,<,D,J,J,L,L0
 0
 0
 }rM   )r   r   r   r   crop_to_bboxr   r   r   r!   r  r   r  r   rS   r  r   r   s   @rX   r   r     s        
 ?D>P" "" " :v.
:;	"
 " " " " " " ": c:o.    X    rM   r   c                   f     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                 p    |j         | _         || _        t                                          |           d S r   )r   r  r   r   )ru   r  r  r   s      rX   r   zFilteredPage.__init__  s2    $	"%%%%%rM   rJ   c                      t           d          r j        S  fd j        j                                        D              _         j        S )Nr  c           	      \    i | ](\  }}|t          t          j        |                    )S rf   )r`   r  r  r  s      rX   rj   z(FilteredPage.objects.<locals>.<dictcomp>  sC     0
 0
 0
1 tF4>1--..0
 0
 0
rM   r  rx   s   `rX   r  zFilteredPage.objects  sc    4$$ 	!= 0
 0
 0
 0
(066880
 0
 0
 }rM   )r   r   r   r   r   r    r  r   r  r   rS   r!   r  r   r   s   @rX   r}  r}    s        &D &Xugtm5L & & & & & &
 c:o.    X    rM   r}  r  )Sr  	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$   rN  r%   r&   r'   r(   r)   r*   r+   
utils.textr,   compiler  setr  r  rH   r   rI   rQ   r'  rS   rY   r   r   r]   rb   rl   rn   r   r   r   r  r  r   r}  rf   rM   rX   <module>r     s   				                              7 6 6 6 6 6       0 0 0 0 0 0                  = < < < < < < < $ $ $ $ $ $ ' ' ' ' ' '       5 5 5 5 5 5 5 5 5 5 5 5             7 7 7 7 7 7 7 7 F F F F F F F F F F F F ? ? ? ? ? ? ? ? ? ?      	F		C   	B  """"""
 *) 0 1( * *3 * * * *c?
8E%s
+S012HSMAB   ''
8E%s
+S012HSMAB' ' ' 'S#X 4S>    0 0 0 0 0): 0 0 0f
  
 F 
 e 
 F 
  
  
  
  4 4E 4f 4 4 4 4
D, D, D, D, D,9 D, D, D,N: : : : :$ : : :"
V 
& 
T 
 
 
 
(% % % % %+ % % %P    ;     rM   