
    @ j\              	       J   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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l+m,Z,m-Z-m.Z.m/Z/ d	dl m0Z0m1Z1m2Z2 d	dl3m4Z4  e j5        d          Z6 e7g d          Z8erd	dl9m:Z: d	dl;m<Z< ddddddZ=de>de?fdZ@deedf         dee
eeeAeBf         df                  e
e?         f         fd ZCdedee
eeeAeBf         df                  e
e?         f         fd!ZDd"ee?ef         dee?ef         fd#ZE G d$ d%e          ZFd6d&e"d'e#de"fd(ZGd&e"d)e#de"fd*ZH G d+ d,e'          ZI G d- d.eI          ZJd/e"d0e"ddfd1ZK G d2 d3eJ          ZL G d4 d5eJ          ZMdS )7    N)	lru_cache)
TYPE_CHECKINGAnyCallableDict	GeneratorListOptionalPatternTupleUnion)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mcidtag)	PageImage)PDFzSimSun,RegularzSimHei,RegularzSimKai,RegularzSimFang,RegularzSimLi,Regular)s   s   s   _GB2312s   _GB2312s   r9   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)r9   split_atprefixsuffix
suffix_news        cC:\Users\Terasoftware\OneDrive\Desktop\faahhh\fyndo\fyndo\venv\Lib\site-packages\pdfplumber/page.pyfix_fontname_bytesrV   W   s    x '>>$''!+!)8),hxyy.Ah $$VS[[2->??Jv;;qtz))rJ   color.c                     t          | d         t                    r&| d d         pd t          | d         j                  fS | d fS )NrL   )
isinstancer   r'   name)rW   s    rU   separate_patternr[   b   sJ     %)Y'' crc
"d[r%@%@@@d{rJ   c                     | dS t          | t                    r| }n(t          | t                    rt          |           }n| f}t          |          S )N)NN)rY   tuplelistr[   )rW   	tuplefieds     rU   normalize_colorr`   k   s^      |	E5	!	! 			E4	 	  %LL		H	I&&&rJ   kwargsc                 >    d |                                  D             S )Nc                 b    i | ],\  }}|t          |t                    rt          |          n|-S  )rY   r^   r]   ).0keyvalues      rU   
<dictcomp>z'tuplify_list_kwargs.<locals>.<dictcomp>z   sG       C 	j55@eElll5  rJ   )items)ra   s    rU   tuplify_list_kwargsrj   y   s+      ,,..   rJ   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_tagrD   propsrG   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'   rZ   rn   rY   dictrm   )selfrD   ro   s      rU   	begin_tagz,PDFPageAggregatorWithMarkedContent.begin_tag   sJ    "38,,eT"" 	!v 	!!&MDMMM DMMMrJ   c                 "    d| _         d| _        dS )z/Handle beginning of tag, clearing current MCID.N)rn   rm   rs   s    rU   end_tagz*PDFPageAggregatorWithMarkedContent.end_tag   s    rJ   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.rL   N)cur_item_objsrm   rC   rn   rD   )rs   cur_objs     rU   tag_cur_itemz/PDFPageAggregatorWithMarkedContent.tag_cur_item   s@     = 	'm)"-G=GL,GKKK	' 	'rJ   c                 b     t                      j        |i |}|                                  |S )z;Hook for rendering characters, adding the `mcid` attribute.)superrender_charr|   )rs   argsra   r+   	__class__s       rU   r   z.PDFPageAggregatorWithMarkedContent.render_char   s5    !egg!42622
rJ   c                 b     t                      j        |i | |                                  dS )z7Hook for rendering images, adding the `mcid` attribute.N)r~   render_imager|   rs   r   ra   r   s      rU   r   z/PDFPageAggregatorWithMarkedContent.render_image   s7    d-f---rJ   c                 b     t                      j        |i | |                                  dS )zAHook for rendering lines and curves, adding the `mcid` attribute.N)r~   
paint_pathr|   r   s      rU   r   z-PDFPageAggregatorWithMarkedContent.paint_path   s7    D+F+++rJ   NrG   N)__name__
__module____qualname____doc__rm   r
   int__annotations__rn   rP   r   r   rt   rw   r|   floatr   r   r   __classcell__r   s   @rU   rl   rl      s          #Hhsm"""!GXc]!!!! !Y !x	/B !d ! ! ! !   
' ' ' 'e           
         rJ   rl   box_rawrotationc                     t          | d         | d         f          \  }}t          | d         | d         f          \  }}|dv r||||fS ||||fS )Nr   rK   r      )Z   i  )sorted)r   r   r2   r3   r4   r5   s         rU   _normalize_boxr      sk    
 WQZ,--FBWQZ,--FB9  BBBBrJ   	mb_heightc                 (    | \  }}}}|||z
  |||z
  fS r   rd   )r   r   r2   r4   r3   r5   s         rU   _invert_boxr      s&    NBB	BIN33rJ   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   pdfrF   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 )Nrf   defaultrG   c                 ^    j                             |           }||nt          |          S r   )attrsrO   r(   )rf   r   refr   s      rU   get_attrzPage.__init__.<locals>.get_attr   s/    .$$S))C!?77{3/?/??rJ   Rotater   ih  MediaBoxr   r   CropBoxr   )r   	root_pager   r   r   rP   r   r   r   r   mediaboxr   cropboxbboxr   _get_textmapget_textmap)	rs   r   r   r   r   r   	_rotationmb_rawr   s	     `      rU   __init__zPage.__init__   s<     &,	@ 	@# 	@ 	@s 	@ 	@ 	@ 	@ 	@ 	@ HXq))	!C 4 4dmDD1Iq	)	#FI66& 	)&xx	22DMBBI DLL  =DL M	 '9;;t'899rJ   rG   c                 .    |                                   d S r   )flush_cacherv   s    rU   closez
Page.close   s    rJ   c                 8    | j         d         | j         d         z
  S )NrK   r   r   rv   s    rU   r1   z
Page.width       y|dil**rJ   c                 8    | j         d         | j         d         z
  S )Nr   r   r   rv   s    rU   r,   zPage.height   r   rJ   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 rd   )to_dict)re   elems     rU   
<listcomp>z'Page.structure_tree.<locals>.<listcomp>  s     MMMtDLLNNMMMrJ   )r!   r   r"   rv   s    rU   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   rl   r   rsrcmgrr   r   r   process_pager   
get_result)rs   deviceinterpreters      rU   layoutzPage.layout	  s    4## 	 <3H#X&
 
 

 ))96BB  ///%0022|rJ   c                      dt           dt           f fd}t           j        j                  pg }t	          t          ||                    S )NannotrG   c                    | d         }|                      di           }|                     d          |                      d          |                      d          d}|                                D ]I\  }}|B	 |                    d          ||<   !# t          $ r |                    d          ||<   Y Ew xY wJj        d	|d
         |d         |d         |d         j        j        z   |d         z
  j        |d         z
  j        |d         z
  |d         |d
         z
  |d         |d         z
  d}|                    |           d| v r| d<   | |d<   |S )NRectAURITContents)urititlecontentszutf-8zutf-16r   r   r   rK   r   )r   object_typer2   r4   r3   r5   doctoptopbottomr1   r,   Pdata)rO   ri   decodeUnicodeDecodeErrorr   r   r,   update)r   rectaextraskvparsedrs   s          rU   parsezPage.annots.<locals>.parse  s   =D		#r""AuuU||3!IIj11 F
  7 71 77$%HHW$5$5q		- 7 7 7$%HHX$6$6q			77  $/&1g1g1g1g-;d1gE{T!W,+Q/a47*q'DG+ F MM&!!! e| "!c
"F6NMs   ;B"B98B9)r   r(   r   annotsr^   map)rs   r   raws   `  rU   r   zPage.annots  s_    #	 #	5 #	 #	 #	 #	 #	 #	J $-.//52CsOO$$$rJ   c                 $    d | j         D             S )Nc                 "    g | ]}|d          
|S )r   rd   )re   r   s     rU   r   z#Page.hyperlinks.<locals>.<listcomp>C  s!    ???a!E(????rJ   )r   rv   s    rU   
hyperlinkszPage.hyperlinksA  s    ??4;????rJ   c                 p    t          | d          r| j        S |                                 | _        | j        S )N_objects)r   r   parse_objectsrv   s    rU   objectszPage.objectsE  s7    4$$ 	!= /3/A/A/C/C}rJ   ptc                 2    |d         | j         |d         z
  fS )Nr   r   )r,   )rs   r   s     rU   point2coordzPage.point2coordL  s    1t{RU*++rJ   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|                                |d	<   t+          |t,                    ru|j        }t)          |j                  \  |d
<   |d<   t)          |j                  \  |d<   |d<   t+          |d         t8                    rt;          |d                   |d<   nat+          |t<          f          rKt?          t           j         |d                             |d<    fd|j!        D             |d<   |j"        |d<   d|v r9 j#        |d         z
  |d<    j#        |d         z
  |d<    j$        |d         z   |d<   |S )N itemrG   c                 H    | \  }}|t           v rt          |          }||fS d S r   )	ALL_ATTRSr(   )r   r   r   ress       rU   process_attrz)Page.process_object.<locals>.process_attrR  s0    DAqI~ !!nn3xtrJ   r   r   )ncsscs))rA   stroking_pattern)r?   non_stroking_patternr:   rA   r   r?   r  r9   r.   c                 F    g | ]^}}|gt          j        |          R S rd   )r   r   )re   cmdr.   rs   s      rU   r   z'Page.process_object.<locals>.<listcomp>  s5    bbb93S>3t'7#=#=>>bbbrJ   pathdashr4   r5   r   r   r   )%resublt_patr   r   lowerr   rP   r   r
   rr   filterr   __dict__ri   r   r   r)   getattrrZ   r`   rY   r   r   get_textgraphicstatescolorncolorbytesrV   r   r^   r   original_pathdashing_styler,   r   )	rs   r   kindr   attrcs
color_attrpattern_attrgss	   `        rU   process_objectzPage.process_objectO  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! Y7FtJGW7X7X4Z $|"4cFO455 	*<<>>D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4< 	?+T
2DK![4:5DN!04;>DNrJ   layout_objectsc              #      K   |D ]r}t          |t                    rD| j        j        |                     |          V  |                     |j                  E d {V  [|                     |          V  sd S r   )rY   r   r   r   r  iter_layout_objectsrz   )rs   r  r   s      rU   r  zPage.iter_layout_objects  s       " 		/ 		/C#{++ /8$ 3--c2222233CI>>>>>>>>>>))#......		/ 		/rJ   c                     i }|                      | j        j                  D ]D}|d         }|dv r|                    |          g ||<   ||                             |           E|S )Nr   )anno)r  r   rz   rO   append)rs   r   r   r  s       rU   r   zPage.parse_objects  s    )+++DK,=>> 	& 	&C}%Dx {{4   # "DM  %%%%rJ   table_settingsc                 J    t          j        |          }t          | |          S r   )r&   resolver%   rs   r!  tsets      rU   debug_tablefinderzPage.debug_tablefinder  s$     $^444&&&rJ   c                 T    t          j        |          }t          | |          j        S r   )r&   r#  r%   tablesr$  s      rU   find_tableszPage.find_tables  s'     $^444&&--rJ   c                    t          j        |          }|                     |          }t          |          dk    rd S dt          dt
          t          t          t          f         fd}t          t          ||                    d         }|S )Nr   xrG   c                 ^    t          | j                   | j        d         | j        d         fS )Nr   r   )lencellsr   r+  s    rU   sorterzPage.find_table.<locals>.sorter  s%    \\M16!9afQi88rJ   )rf   )
r&   r#  r)  r-  r$   r   r   r   r^   r   )rs   r!  r%  r(  r0  largests         rU   
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rJ   c                 r    t          j        |          |                               }fd|D             S )Nc                 8    g | ]} |j         d i j        pi S )rd   )extracttext_settings)re   tabler%  s     rU   r   z'Page.extract_tables.<locals>.<listcomp>  s3    PPP;;!3!9r;;PPPrJ   )r&   r#  r)  )rs   r!  r(  r%  s      @rU   extract_tableszPage.extract_tables  sB     $^44!!$''PPPPPPPPrJ   c                     t          j        |          }|                     |          }|d S  |j        di |j        pi S Nrd   )r&   r#  r2  r5  r6  )rs   r!  r%  r7  s       rU   extract_tablezPage.extract_table  sR     $^44%% 	?4 5=>>D$6$<">>>rJ   ra   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)rr   r   r   r1   r,   r   chars_to_textmapchars)rs   ra   defaultsfull_kwargss       rU   r   zPage._get_textmap  s    #'	$
 $
 $
  v- 	:OO^TZ8999 . 	<OO_dk:;;;&<&<V&<%dj@@K@@@rJ   patternregexcase
main_groupreturn_charsreturn_groupsc                 l     | j         di t          |          }|                    ||||||          S )N)rG  rH  rI  rJ  rK  rd   )r   rj   search)	rs   rF  rG  rH  rI  rJ  rK  ra   textmaps	            rU   rM  zPage.search  sR     #$"AA%8%@%@AA~~!%'  
 
 	
rJ   c                 @     | j         di t          |          j        S r:  )r   rj   	as_stringrs   ra   s     rU   extract_textzPage.extract_text  s'    t>>"5f"="=>>HHrJ   c                 0    t          j        | j        fi |S r   )r   extract_text_simplerC  rQ  s     rU   rT  zPage.extract_text_simple  s    (>>v>>>rJ   c                 0    t          j        | j        fi |S r   )r   extract_wordsrC  rQ  s     rU   rV  zPage.extract_words  s    "4:88888rJ   stripc                 `     | j         di t          |                              ||          S )N)rW  rJ  rd   )r   rj   extract_text_lines)rs   rW  rJ  ra   s       rU   rY  zPage.extract_text_lines  sC      t>>"5f"="=>>QQl R 
 
 	
rJ   Fr   relativestrictCroppedPagec                 (    t          | |||          S )N)rZ  r[  )r\  rs   r   rZ  r[  s       rU   cropz	Page.crop  s     4HHHHrJ   c                 >    t          | |||t          j                  S zS
        Same as .crop, except only includes objects fully within the bbox
        )rZ  r[  crop_fn)r\  r   within_bboxr^  s       rU   rc  zPage.within_bbox  s)     $&%BS
 
 
 	
rJ   c                 >    t          | |||t          j                  S ra  )r\  r   outside_bboxr^  s       rU   re  zPage.outside_bbox  s)     $&%BT
 
 
 	
rJ   test_functionFilteredPagec                 "    t          | |          S r   )rg  )rs   rf  s     rU   r
  zPage.filter!  s    D-000rJ   c                     t          | d           }d | j                                        D             |_        t	          j        | j        fi ||j        d<   |S )u   
        Removes duplicate chars — those sharing the same text, fontname, size,
        and positioning (within `tolerance`) as other characters on the page.
        c                     dS )NTrd   r/  s    rU   <lambda>z#Page.dedupe_chars.<locals>.<lambda>)  s     rJ   c                     i | ]\  }}||	S rd   rd   )re   r  objss      rU   rh   z%Page.dedupe_chars.<locals>.<dictcomp>*  s    HHHZT4dDHHHrJ   char)rg  r   ri   r   r   dedupe_charsrC  )rs   ra   ps      rU   ro  zPage.dedupe_chars$  s^    
 ~~..HH4<3E3E3G3GHHH
"/
EEfEE
6rJ   
resolutionr1   r,   	antialiasforce_mediaboxrE   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_RESOLUTIONrE   c              3      K   | ]}|d uV  	d S r   rd   )re   r+  s     rU   	<genexpr>z Page.to_image.<locals>.<genexpr>>  s&      KK!KKKKKKrJ   zUOnly one of these arguments can be provided: resolution, width, height. You provided NH   )rq  rr  rs  )displayru  rE   sum
ValueErrorr1   r,   )	rs   rq  r1   r,   rr  rs  ru  rE   	num_specss	            rU   to_imagezPage.to_image.  s     	;:::::::KK
E6/JKKKKK	q= 	3shqss    	3edj0JJ 	3ft{2Jy!7%7)	
 
 
 	
rJ   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   r1   r,   s)r^   r   keysr   r   r   r   r   r   r1   r,   r  )rs   r~  _object_typesdts        rU   r   zPage.to_dictO  s     	) !2!2!4!455	AMM(M+"1|IZk	
 	
  	0 	0A q3w//Aa#gJJrJ   c                     d| j          dS )Nz<Page:>)r   rv   s    rU   __repr__zPage.__repr__b  s    +(++++rJ   r   r   r   )TTr   TT)TT)FT)NNNFF)Br   r   r   r    r   r	   rP   r   r   boolpagesr   r   r   r   r   propertyr1   r,   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r  r   r
   r#   r%   r&  r$   r)  r2  r8  r;  r*   r   r   r   rM  rR  rT  rV  rY  r   r_  rc  re  r   r
  ro  r   r}  r   r  rd   rJ   rU   r   r      s#        #,#>)#LtCyLLLKE !"': ':': ': 	':
 ': ': ': ':R    +u + + + X+ + + + + X+ T#s(^ 4    X     X '%
 '% '% '% X'%R @J @ @ @ X@ c:o.    X,eE5L1 ,eE5L6I , , , ,A& AU A A A AF/";//	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>    &,# , , , , , ,rJ   r   c                   *    e Zd ZU dZeed<   defdZdS )DerivedPageFr   parent_pagec                 $   || _         |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   )rs   r  s     rU   r   zDerivedPage.__init__i  s|    &$.?#,&2#,"*4555&9;;t'899rJ   N)r   r   r   r   r  r   r   r   rd   rJ   rU   r  r  f  sA         K	:D 	: 	: 	: 	: 	: 	:rJ   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        rU   test_proposed_bboxr  u  s    $T**IA~ F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
 
 	

 
rJ   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_bboxrb  rZ  r[  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 )Nrm  rG   c                      |           S r   rd   )rm  r  rb  s    rU   _crop_fnz&CroppedPage.__init__.<locals>._crop_fn  s    74+++rJ   )r   r  r   r~   r   r  r   re  )rs   r  r  rb  rZ  r[  o_x0o_top_r2   r   r3   r   r  r   s     ``          rU   r   zCroppedPage.__init__  s      	L + 0D%A"+BRdC%KdFUNKI 	<y+*:;;;	,: 	,* 	, 	, 	, 	, 	, 	, 	, 	%%%  e(( 	"#(DIII!DIIIrJ   rG   c                      t           d          r j        S  fd j        j                                        D              _         j        S )Nr   c                 B    i | ]\  }}|                     |          S rd   )r  re   r   r   rs   s      rU   rh   z'CroppedPage.objects.<locals>.<dictcomp>  s8     0
 0
 0
$(AqAt}}Q0
 0
 0
rJ   r   r   r  r   ri   rv   s   `rU   r   zCroppedPage.objects  sc    4$$ 	!= 0
 0
 0
 0
,0,<,D,J,J,L,L0
 0
 0
 }rJ   )r   r   r   r   crop_to_bboxr   r   r   r   r  r   r  r   rP   r   r   r   s   @rU   r\  r\    s        
 ?D>P" "" " :v.
:;	"
 " " " " " " ": c:o.    X    rJ   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 )rg  r  	filter_fnc                 p    |j         | _         || _        t                                          |           d S r   )r   r  r~   r   )rs   r  r  r   s      rU   r   zFilteredPage.__init__  s2    $	"%%%%%rJ   rG   c                      t           d          r j        S  fd j        j                                        D              _         j        S )Nr   c           	      \    i | ](\  }}|t          t          j        |                    )S rd   )r^   r
  r  r  s      rU   rh   z(FilteredPage.objects.<locals>.<dictcomp>  sC     0
 0
 0
1 tF4>1--..0
 0
 0
rJ   r  rv   s   `rU   r   zFilteredPage.objects  sc    4$$ 	!= 0
 0
 0
 0
(066880
 0
 0
 }rJ   )r   r   r   r   r   r   r  r   r  r   rP   r   r   r   r   s   @rU   rg  rg    s        &D &Xugtm5L & & & & & &
 c:o.    X    rJ   rg  r  )Nr  	functoolsr   typingr   r   r   r   r   r	   r
   r   r   r   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"   r7  r#   r$   r%   r&   r'   r(   r)   
utils.textr*   compiler  setr   ry  rE   r   rF   rN   r  rP   rV   r   r   r[   r`   rj   rl   r   r   r   r  r  r\  rg  rd   rJ   rU   <module>r     s   				                              1 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   	@  """"""
 *) 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
[, [, [, [, [,9 [, [, [,|: : : : :$ : : :
V 
& 
T 
 
 
 
(% % % % %+ % % %P    ;     rJ   