
    j9                        d Z ddlZddlZddlZddlZddlmZ ddlm	Z	m
Z
 ddlmZmZmZ ddlZddlmZmZmZ ddlmZmZmZmZ ddlmZ dd	lmZ dd
lmZmZm Z m!Z! ddl"m#Z#m$Z$m%Z% ddl&m'Z'  ej(                      ej)        e*          Z+ ej,        d          Z-de.e/z  de.fdZ0d+dede1de.dz  ddfdZ2	 d,dedede3ddfdZ4	 	 d-dedede.dz  de3ddf
dZ5	 	 	 	 d.dede.dede	e6         de.d e3de.dz  d!e.dz  ddfd"Z7 e#d#          Z8 e#d$          Z9de.de.d!e.ddfd%Z:	 	 	 	 	 d/dede.de
e6         de	e6         de.d e3de.dz  d!e.dz  de3ddfd&Z;defd'Z<d+d(e=e.         dz  ddfd)Z>e*d*k    r e>             dS dS )0z#Extract pdf structure in XML format    N)ArgumentParser)	ContainerIterable)AnyTextIOcast)PDFDocumentPDFNoOutlinesPDFXRefFallback)
PDFIOErrorPDFObjectNotFoundPDFTypeErrorPDFValueError)PDFPage)	PDFParser)	PDFObjRef	PDFStreamresolve1stream_value)LIT	PSKeyword	PSLiteral)isnumberz&[\000-\037&<>()"\042\047\134\177-\377]sreturnc                     t          | t                    rt          | d          n| }t                              d |          S )Nzlatin-1c                 N    dt          |                     d                     dS )Nz&#r   ;)ordgroup)ms    Z/home/agent/.hermes/hermes-agent/venv/lib/python3.11/site-packages/../../../bin/dumppdf.py<lambda>zescape.<locals>.<lambda>"   s"    !8c!''!**oo!8!8!8     )
isinstancebytesstrESC_PATsub)r   uss     r"   escaper+       s=    (E22	9Q				B;;88"===r$   outobjcodecc                 2   ||                      d           d S t          |t                    r|                      dt          |           d           |                                D ]X\  }}|                      d| d           |                      d           t          | |           |                      d           Y|                      d           d S t          |t                    rg|                      d	t          |           d           |D ]'}t          | |           |                      d
           (|                      d           d S t          |t          t          f          r8|                      dt          |           dt          |           d           d S t          |t                    r|dk    r(|                      |                                           n|dk    r(|                      |                                           n|                      d           t          | |j                   |                      d           |dk    rJ|                                }|                      dt          |           dt          |           d           |                      d           d S t          |t                    r |                      d|j         d           d S t          |t                     r |                      d|j         d           d S t          |t$                    r |                      d|j         d           d S t'          |          r|                      d| d           d S t)          |          )Nz<null />z<dict size="">
z<key>z</key>
z<value>z	</value>
z</dict>z<list size="
z</list>z<string size="z">z	</string>rawbinaryz<stream>
<props>
z

</props>
textz<data size="z</data>
z	</stream>z	<ref id="z" />z	<keyword>z
</keyword>z	<literal>z
</literal>z<number>z	</number>)writer%   dictlenitemsdumpxmllistr'   r&   r+   r   get_rawdataget_dataattrsr   objidr   namer   r   r   )r,   r-   r.   kvdatas         r"   r9   r9   %   s{   
{		*#t 		/S///000IIKK 	$ 	$DAqII)a)))***IIi   COOOIIl####		)#t 		/S///000 	 	ACOOOIIdOOOO		)#U|$$ 		E3s88EEvc{{EEEFFF#y!! E>>IIcoo''((((hIIcllnn%%%%II+,,,C###IIn%%%||~~		MTMMfTllMMMNNNIIk"""#y!! 		-ci---...#y!! 		2ch222333#y!! 		2ch222333}} 		+S+++,,,
s

r$   Fdocshow_fallback_xrefc                 d   |j         D ]e}t          |t                    r|rL|                     d           t	          | |                                           |                     d           ft          d |j         D                       }|r |s d}t                              |           d S d S d S )Nz
<trailer>
z
</trailer>

c              3   @   K   | ]}t          |t                    V  d S N)r%   r   ).0xrefs     r"   	<genexpr>zdumptrailers.<locals>.<genexpr>p   s,      KK:dO44KKKKKKr$   zThis PDF does not have an xref. Use --show-fallback-xref if you want to display the content of a fallback xref that contains all objects.)	xrefsr%   r   r5   r9   get_trailerallloggerwarning)r,   rC   rD   rI   no_xrefsmsgs         r"   dumptrailersrR   f   s    
 	 * *$00 	*4F 	*IIm$$$C))++,,,II()))KKKKKKKH * $ 	
 	s   r$   c                    t                      }|                     d           |j        D ]}|                                D ]}||v r|                    |           	 |                    |          }|5|                     d| d           t          | ||           |                     d           v# t          $ r}t          d|           Y d }~d }~ww xY wt          | ||           |                     d           d S )Nz<pdf>z<object id="r0   r.   z
</object>

znot found: z</pdf>)
setr5   rK   
get_objidsaddgetobjr9   r   printrR   )	r,   rC   r.   rD   visitedrI   r>   r-   es	            r"   dumpallobjsr\   z   sG    eeGIIg	 + +__&& 	+ 	+EKK+jj'';		4444555S....		+,,,,$ + + +)A))********+	+ c-...IIhs   B76A B77
CCC outfpfnameobjidspagenospassworddumpall
extractdirc           	      f   t          |d          5 }t          |          }	t          |	|          d t          t	          j                  d          D             }
dt          dt          ffd}	                                 }| 	                    d           |D ]?\  }}}}}d }|r ||          }|
|d         j
                 }n||rz|}t          |t                    rc|                    d	          }|rLt          |          d
k    r9|                    d          r$ ||d                   }|
|d         j
                 }t          |          }| 	                    d|d| d           |:| 	                    d           t!          | |           | 	                    d           || 	                    d|d           | 	                    d           A| 	                    d           n# t"          $ r Y nw xY w|	                                 d d d            d S # 1 swxY w Y   d S )Nrbc                 $    i | ]\  }}|j         |S  )pageid)rH   pagenopages      r"   
<dictcomp>zdumpoutline.<locals>.<dictcomp>   s0     
 
 
 K
 
 
r$      destr   c                    t          | t          t          f          r#t                              |                     } n<t          | t
                    r't                              | j                            } t          | t                    r| d         } t          | t                    r| 	                                } | S )ND)
r%   r'   r&   r   get_destr   r?   r6   r   resolve)rn   rC   s    r"   resolve_destz!dumpoutline.<locals>.resolve_dest   s    $e-- 9T 2 233D),, 9TY 7 788$%% !Cy$	** &||~~Kr$   z<outlines>
r   Sz/'GoTo'rp   z<outline level="z	" title="r0   z<dest>z</dest>
z<pageno>z
</pageno>
z</outline>
z</outlines>
)openr   r	   	enumerater   create_pagesobjectr   get_outlinesr5   r>   r%   r6   getreprr+   r9   r
   flush)r^   r_   r`   ra   rb   rc   r.   rd   fpparserpagesrs   outlinesleveltitlern   a_serj   actionsubtyper   rC   s                         @r"   dumpoutliner      s    
eT		 .b2&(++
 
"+G,@,E,Eq"I"I
 
 

		v 		# 		 		 		 		 		 			''))HKK'''.6 , ,*udAs 	:'<--D"47=1FF :F!&$// :"(**S//" :tG}}	'A'AfjjQToo'A#/<s#<#<D%*47=%9F5MMHuHHHHHIII#KK)))E4(((KK,,,%KK @6 @ @ @AAAN++++KK(((( 	 	 	D	]. . . . . . . . . . . . . . . . . .s7   A H&3FG54H&5
H?H&HH&&H*-H*FilespecEmbeddedFilec                 "  
 dt           dt          t          t          f         dd f
fd}t	          | d          5 }t          |          }t          ||          
t                      }
j        D ]}|	                                D ]m}

                    |          }	||vrRt          |	t                    r=|	                    d          t          u r!|                    |            |||	           n	 d d d            d S # 1 swxY w Y   d S )Nr>   r-   r   c                 
   t           j                            |                    d          p9t	          t
          |                    d                                                              }|d                             d          p|d                             d          }                    |j                  }t          |t                    sd|d}t          |          |                    d          t          urt          d|d          t           j                            	| dd	|           }t           j                            |          rt          d
|          t!          d|           t          j        t           j                            |          d           t'          |d          5 }|                    |                                           d d d            d S # 1 swxY w Y   d S )NUFFEFz%unable to process PDF: reference for z is not a PDFStreamTypez is not an EmbeddedFile06d-zfile exists: zextracting: T)exist_okwb)ospathbasenamerz   r   r&   decoderX   r>   r%   r   r   LITERAL_EMBEDDEDFILEjoinexistsr   rY   makedirsdirnameru   r5   r<   )
r>   r-   filenamefilereffileobj	error_msgr   r,   rC   rd   s
           r"   extract1z!extractembedded.<locals>.extract1   s   7##CGGDMM$WT%5N5N5U5U5W5WXXd)--%%;Ts););**W]++'9-- 	+WWWW   	***;;v&:::) ) ) )   w||J5(A(A(Ax(A(ABB7>>$ 	75T55666%T%%&&&
BGOOD))D9999$ 	*IIg&&(()))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   (G88G<?G<rf   r   )intr6   r'   r   ru   r   r	   rU   rK   rV   rX   r%   rz   LITERAL_FILESPECrW   )r_   rb   rd   r   r}   r~   extracted_objidsrI   r>   r-   rC   s     `       @r"   extractembeddedr      s{   * *$sCx. *T * * * * * * *, 
eT		 )b2&(++55I 		) 		)D** ) )jj''!111"3-- 2+;;;$((///HUC((()		)	) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   B:DDDc	                 \   t          |d          5 }	t          |	          }
t          |
|          }|r,|D ])}|                    |          }t	          | ||           *|rnt          t          j        |                    D ]L\  }}||v rC|r,|j        D ]#}t          |          }t	          | ||           $7t	          | |j
                   M|rt          | |||           |s|s|st          | ||           d d d            n# 1 swxY w Y   |dvr|                     d           d S d S )Nrf   rT   )r2   r3   r1   )ru   r   r	   rX   r9   rv   r   rw   contentsr   r=   r\   rR   r5   )r^   r_   r`   ra   rb   rc   r.   rd   rD   r}   r~   rC   r>   r-   rj   rk   s                   r"   dumppdfr      s    
eT		 9b2&(++ 	1 1 1jj''s%00000 	3 )'*>s*C*C D D 3 3W$$ 3#'= = =C".s"3"3C#E3e<<<<<=  tz222 	?sE+=>>> 	9 	97 	9%7888'9 9 9 9 9 9 9 9 9 9 9 9 9 9 9( %%%D &%s   C)DD
D
c                  >   t          t          d          } |                     dt          d dd           |                     ddd	d
t          j                    |                     ddddd           |                                 }|                    ddddd           |                    ddt          d           |                     dd          }|                    dt          d dd           |                    ddt          d            |                    d!d"t          d#           |                    d$d%ddd&           |                    d'dd()           |                    d*d+t          d,d-.           |                     d/d0          }|                    d1d2t          d3d4.           |                                }|                    d5d6ddd7           |                    d8d9ddd:           |                    d;d<ddd=           | S )>NT)descriptionadd_helpfiles+zOne or more paths to PDF files.)typedefaultnargshelpz	--versionz-vversionzpdfminer.six v)r   r   z--debugz-dF
store_truezUse debug logging level.)r   r   r   z--extract-tocz-TzExtract structure of outlinez--extract-embeddedz-EzExtract embedded files)r   r   ParserzUsed during PDF parsing)r   z--page-numbersz0A space-seperated list of page numbers to parse.z	--pagenosz-pzA comma-separated list of page numbers to parse. Included for legacy applications, use --page-numbers for more idiomatic argument entry.z	--objectsz-iz1Comma separated list of object numbers to extractz--allz-az3If the structure of all objects should be extractedz--show-fallback-xrefzAdditionally show the fallback xref. Use this if the PDF has zero or only invalid xref's. This setting is ignored if --extract-toc or --extract-embedded is used.)r   r   z
--passwordz-Pr]   z,The password to use for decrypting PDF file.)r   r   r   OutputzUsed during output generation.z	--outfilez-or   zJPath to file where output is written. Or "-" (default) to write to stdout.z--raw-streamz-rz%Write stream objects without encodingz--binary-streamz-bz)Write stream objects with binary encodingz--text-streamz-tz"Write stream objects as plain text)	r   __doc__add_argumentr'   pdfminer__version__add_mutually_exclusive_groupadd_argument_groupr   )r~   procedure_parserparse_paramsoutput_paramscodec_parsers        r"   create_parserr     s1   $???F
.     7!577	     '     ::<<!!+ "    !!%	 "    ,,- -  L ?     	     @	     B     7     ;     --4 .  M      !==??L4     8     1     Mr$   argvc                 t   t                      }|                    |           }|j        r0t          j                                        t          j                   |j        r$d |j                            d          D             ng }|j	        rd |j	        D             }n:|j
        r%d |j
                            d          D             }nt                      }|j        }|j        rd}n|j        rd}n|j        rd}nd }|j        d	k    rt"          j        nt'          |j        d
          5 }|j        D ]g}|j        rt-          ||||||j        |d            &|j        rt3          |||j                   Et5          ||||||j        |d |j        	  	         h	 d d d            d S # 1 swxY w Y   d S )N)argsc                 ,    g | ]}t          |          S rh   r   rH   xs     r"   
<listcomp>zmain.<locals>.<listcomp>  s    666c!ff666r$   ,c                     h | ]}|d z
  S rm   rh   r   s     r"   	<setcomp>zmain.<locals>.<setcomp>  s    444Q1q5444r$   c                 2    h | ]}t          |          d z
  S r   r   r   s     r"   r   zmain.<locals>.<setcomp>  s"    ???!3q66A:???r$   r2   r3   r4   r   w)rb   rc   r.   rd   )rb   rd   )rb   rc   r.   rd   rD   )r   
parse_argsdebuglogging	getLoggersetLevelDEBUGobjectssplitpage_numbersra   rU   rb   
raw_streambinary_streamtext_streamoutfilesysstdoutru   r   extract_tocr   rM   extract_embeddedr   r   rD   )	r   r~   r   r`   ra   rb   r.   r^   r_   s	            r"   mainr     se   __F$''Dz 4$$W]333:>,N66dl00556666BF 44$"3444	 ??t|'9'9#'>'>???%%}H !		 		  |s**T\30G0G 5Z 	 	E % H#	 	 	 	 	 & H9N     % H#'+'>
 
 
 
 
#	                 s   /A0F--F14F1__main__rG   )F)NF)r]   FNN)r]   FNNF)?r   r   os.pathr   rer   argparser   collections.abcr   r   typingr   r   r   r   pdfminer.pdfdocumentr	   r
   r   pdfminer.pdfexceptionsr   r   r   r   pdfminer.pdfpager   pdfminer.pdfparserr   pdfminer.pdftypesr   r   r   r   pdfminer.psparserr   r   r   pdfminer.utilsr   basicConfigr   __name__rN   compiler(   r'   r&   r+   rx   r9   boolrR   r\   r   r   r   r   r   r   r   r:   r   rh   r$   r"   <module>r      sj   ) )   				 



 # # # # # # / / / / / / / / $ $ $ $ $ $ $ $ $ $  L L L L L L L L L L            % $ $ $ $ $ ( ( ( ( ( ( J J J J J J J J J J J J 7 7 7 7 7 7 7 7 7 7 # # # # # #     		8	$	$
"*>
?
?>cEk >c > > > >
> > >f >S4Z >4 > > > >H  % 		  
	   . $	 		 : 	
 
   > !8 888 8 s^	8
 8 8 :8 d
8 
8 8 8 8v 3z?? s>** $)3 $)# $)3 $)4 $) $) $) $)X !$      SM  s^	 
     :  d
    
       Fx~ x x x xv8 8tCy4 84 8 8 8 8v zDFFFFF r$   