
    Ng7                     b   d Z ddlZddlZddlZddlmZ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mZ dd	lmZ dd
lmZmZ dZdZdZdZdZ dZ! ej"        dej#                  Z$ ed          Z%de%de%fdZ&de'dej        fdZ(de'de'dedge
e	e'                  f         fdZ)e&fde'de'deegef         dedge
e	e                  f         fdZ*de'de'dedge
eeef                  f         fdZ+e&fde'de'dee'gef         dedge
e         f         fdZ, G d de          Z-dS ) z~
Anything related to Extensible Metadata Platform (XMP) metadata.

https://en.wikipedia.org/wiki/Extensible_Metadata_Platform
    N)AnyCallableDictIteratorListOptionalTypeVarUnion)DocumentparseString)Element)
ExpatError   )
StreamTypedeprecate_no_replacement)PdfReadError)ContentStream	PdfObjectz+http://www.w3.org/1999/02/22-rdf-syntax-ns#z http://purl.org/dc/elements/1.1/zhttp://ns.adobe.com/xap/1.0/zhttp://ns.adobe.com/pdf/1.3/zhttp://ns.adobe.com/xap/1.0/mm/zhttp://ns.adobe.com/pdfx/1.3/a{  
        (?P<year>[0-9]{4})
        (-
            (?P<month>[0-9]{2})
            (-
                (?P<day>[0-9]+)
                (T
                    (?P<hour>[0-9]{2}):
                    (?P<minute>[0-9]{2})
                    (:(?P<second>[0-9]{2}(.[0-9]+)?))?
                    (?P<tzd>Z|[-+][0-9]{2}:[0-9]{2})
                )?
            )?
        )?
        Kvaluereturnc                     | S N )r   s    E/var/www/html/ai-engine/env/lib/python3.11/site-packages/pypdf/xmp.py	_identityr   M   s    L    c           	         t                               |           }|t          d|            t          |                    d                    }t          |                    d          pd          }t          |                    d          pd          }t          |                    d          pd          }t          |                    d          pd          }t          j        |                    d	          pd          }|                    t
          j                  }||z
  d
z  }	t          |          }
t          |	          }|                    d          pd}t          j	        ||||||
|          }|dk    rKd |
                    d          D             \  }}|dz  }|dk     r|dz  }|t          j        ||          z   }|S )NzInvalid date format: yearmonth1dayhour0minutesecondi@B tzdZc              3   4   K   | ]}t          |          V  d S r   )int).0xs     r   	<genexpr>z"_converter_date.<locals>.<genexpr>d   s(      !A!AQ#a&&!A!A!A!A!A!Ar   :r   )hoursminutes)iso8601match
ValueErrorr*   groupdecimalDecimalto_integralROUND_FLOORdatetimesplit	timedelta)r   matchesr   r    r"   r#   r%   r&   seconds_decmilliseconds_decsecondsmillisecondsr'   dt	tzd_hourstzd_minutess                   r   _converter_daterE   Q   s   mmE""G888999w}}V$$%%Dg&&-#..E
gmmE"")c
*
*Cw}}V$$+,,Dx((/C00F_W]]844;<<F$$W%899K,	9+G'((L
--


%#C		4T67L	Q	QB
czz!A!A#))C..!A!A!A	;R	q==2K($9kJJJJIr   	namespacenameXmpInformationc                 V     dddt           t          t                            f fd}|S )NselfrH   r   c                    | j                             
i                               	          }|r|S g }|                     d
	          D ]y}|                    t          d          }t          |          rM|D ]J}|                    t          d          D ],}|                     |          }|                    |           -Kz| j                             
i           }||	<   |S )N Bagli	cachegetget_elementgetElementsByTagNameNSRDF_NAMESPACElen	_get_textappend
setdefault)rJ   cachedretvalelementbagsbagitemr   ns_cacherG   rF   s            r   rQ   z_getter_bag.<locals>.geto   s    	2..22488 	M''It<< 	- 	-G11-GGD4yy - - -C # : :=$ O O - - $t 4 4e,,,,- :((B77r   )r   r   strrF   rG   rQ   s   `` r   _getter_bagrb   l   sF    " xS	':         Jr   	converterc                 Z     dddt           t          t                            f fd}|S )NrJ   rH   r   c                 P   | j                             i                               
          }|r|S g }|                     d
          D ]}|                    t          d          }t          |          rY|D ]U}|                    t          d          D ]7}|                     |          } 	|          }|                    |           8V 	|                     |                    }|                    |           | j                             i           }||
<   |S )NrL   SeqrN   rO   )rJ   rY   rZ   r[   seqsseqr^   r   r_   rc   rG   rF   s            r   rQ   z_getter_seq.<locals>.get   s@   	2..22488 	M''It<< 
	% 
	%G11-GGD4yy % - -C # : :=$ O O - - $t 4 4 )	% 0 0e,,,,-- "	$.."9"9::e$$$$:((B77r   )r   r   r   rF   rG   rc   rQ   s   ``` r   _getter_seqrj      sL    " xS	':        ( Jr   c                 d     dddt           t          t          t          f                  f fd}|S )NrJ   rH   r   c                 
   | j                             
i                               	          }|r|S i }|                     d
	          D ]}|                    t          d          }t          |          rQ|D ]M}|                    t          d          D ]/}|                     |          }|||                    d          <   0N}|                     |          |d<   | j                             
i           }||	<   |S )NrL   AltrN   zxml:langz	x-default)	rP   rQ   rR   rS   rT   rU   rV   getAttributerX   )rJ   rY   rZ   r[   altsaltr^   r   r_   rG   rF   s            r   rQ   z_getter_langalt.<locals>.get   s&   	2..22488 	M''It<< 	> 	>G11-GGD4yy > F FC # : :=$ O O F F $t 4 4@Et00<<==FF
 '+nnW&=&={##:((B77r   )r   r   r   ra   s   `` r   _getter_langaltrq      sJ    " xS#X'?       $ Jr   c                 D     dddt           t                   f fd}|S )NrJ   rH   r   c                 X   | j                             i                                         }|r|S d }|                     d          D ]/}|j        |j        k    r|j        }n|                     |          } | |          }| j                             i           }||<   |S NrL   )rP   rQ   rR   nodeTypeATTRIBUTE_NODE	nodeValuerV   rX   )rJ   rY   r   r[   r_   rc   rG   rF   s        r   rQ   z_getter_single.<locals>.get   s    	2..22488 	M''It<< 	 	G7#999)w//Ie$$E:((B77r   )r   r   ri   s   ``` r   _getter_singlerx      sG    " x}        " Jr   c            	          e Zd ZdZdeddfdZ	 d(dededee	f         ddfdZ
ded	ed
edee         fdZded	edee         fdZdedefdZ e eed                    Z	  e eed                    Z	  e eed                    Z	  e eede                    Z	  e eed                    Z	  e eed                    Z	  e eed                    Z	  e eed                    Z	  e eed                    Z 	  e eed                    Z!	  e eed                    Z"	  e eed                    Z#	  e eed                    Z$	  e eed                    Z%	  e eed                    Z&	  e ee'd                    Z(	  e ee'd                    Z)	  e ee'd                     Z*	  e ee+d!e                    Z,	  e ee+d"e                    Z-	  e ee+d#e                    Z.	  e ee+d$                    Z/	  e ee0d%                    Z1	  e ee0d&                    Z2	 ede3eef         fd'            Z4dS ))rH   z
    An object that represents Extensible Metadata Platform (XMP) metadata.
    Usually accessed by :py:attr:`xmp_metadata()<pypdf.PdfReader.xmp_metadata>`.

    Raises:
      PdfReadError: if XML is invalid

    streamr   Nc                 
   || _         	 | j                                         }t          |          }n$# t          $ r}t	          d|           d }~ww xY w|                    t          d          d         | _        i | _        d S )Nz#XML in XmpInformation was invalid: RDFr   )	rz   get_datar   r   r   rS   rT   rdf_rootrP   )rJ   rz   datadoc_rootes        r   __init__zXmpInformation.__init__   s    	J;''))D!,T!2!2HH 	J 	J 	JHQHHIII	J$,$C$C5%
 %

% &(


s   (2 
AAAencryption_keyc                 ^    |t          dd           | j                            |           d S )Nz/the encryption_key parameter of write_to_streamz5.0.0)r   rz   write_to_stream)rJ   rz   r   s      r   r   zXmpInformation.write_to_stream   s?     %$A7   	##F+++++r   	about_urirF   rG   c              #      K   | j                             t          d          D ]Y}|                    t          d          |k    r8|                    ||          }||V  |                    ||          E d {V  Zd S NDescriptionabout)r~   rS   rT   getAttributeNSgetAttributeNodeNS)rJ   r   rF   rG   descattrs         r   rR   zXmpInformation.get_element   s      M88VV 	H 	HD""='::iGG..y$??#JJJ66y$GGGGGGGGG	H 	Hr   c              #   J  K   | j                             t          d          D ]}|                    t          d          |k    r^t	          |j        j                  D ]+}|j                            |          }|j        |k    r|V  ,|j	        D ]}|j        |k    r|V  d S r   )
r~   rS   rT   r   range
attributeslengthr^   namespaceURI
childNodes)rJ   r   rF   r   ir   childs          r   get_nodes_in_namespacez%XmpInformation.get_nodes_in_namespace   s      M88VV 	$ 	$D""='::iGGt566 # #A?//22D(I55"


!_ $ $E)Y66#	$ 	$r   r[   c                 R    d}|j         D ]}|j        |j        k    r
||j        z  }|S rt   )r   ru   	TEXT_NODEr   )rJ   r[   textr   s       r   rV   zXmpInformation._get_text   s:    ' 	# 	#E~00
"r   contributorcoveragecreatordatedescriptionformat
identifierlanguage	publisherrelationrightssourcesubjecttitletypeKeywords
PDFVersionProducer
CreateDate
ModifyDateMetadataDateCreatorTool
DocumentID
InstanceIDc           
         t          | d          si | _        |                     dt                    D ]}|j        }	 |                    d          }|dk    rnF|d|         t          t          ||dz   |dz            d	
                    z   ||dz   d         z   }b|j        |j	        k    r|j
        }n|                     |          }|| j        |<   | j        S )z
        Retrieve custom metadata properties defined in the undocumented pdfx
        metadata schema.

        Returns:
            A dictionary of key/value items for custom metadata properties.

        _custom_propertiesrL   Tu   ↂr/   Nr         )base)hasattrr   r   PDFX_NAMESPACE	localNamefindchrr*   ru   rv   rw   rV   )rJ   nodekeyidxr   s        r   custom_propertiesz XmpInformation.custom_propertiesm  s    t122 	5&(D#33BGG 5 5n	((8,,CbyyDSD	c#cAga&7"8rBBBCCDcAgii.) 	 =D$777 NEE NN400E/4',,&&r   r   )5__name__
__module____qualname____doc__r   r   r   r
   r`   bytesr   r   r   rR   r   
XmlElementrV   propertyrb   DC_NAMESPACEdc_contributorrx   dc_coveragerj   
dc_creatorrE   dc_daterq   dc_description	dc_formatdc_identifierdc_languagedc_publisherdc_relation	dc_rights	dc_source
dc_subjectdc_titledc_typePDF_NAMESPACEpdf_keywordspdf_pdfversionpdf_producerXMP_NAMESPACExmp_create_datexmp_modify_datexmp_metadata_datexmp_creator_toolXMPMM_NAMESPACExmpmm_document_idxmpmm_instance_idr   r   r   r   r   rH   rH      sW        
(} 
( 
( 
( 
( 
( MQ, , ,27c58H2I,	, , , ,HS HS H HQT H H H H	$ 	$ 	$QT 	$ 	$ 	$ 	$      Xkk,FFGGN (>>,
CCDDK>++lI>>??J h{{<IIJJG XoolMJJKKN h??@@I(H^^L,GGHHM,(;;|Z@@AAKK8KKkBBCCL0(;;|Z@@AAK x@@AAI" h??@@IM++lI>>??J- xg>>??HCh{{<8899GJ8NN=*EEFFLDXnn]LIIJJN78NN=*EEFFL=h}lODD O h}lODD O !}noFF   x}m L LMMG !N!NOOQ !N!NOO '4S> ' ' ' X' ' 'r   ).r   r:   r6   retypingr   r   r   r   r   r   r	   r
   xml.dom.minidomr   r   r   r   xml.parsers.expatr   _utilsr   r   errorsr   genericr   r   rT   r   r   r   r   r   compileVERBOSEr2   r   r   r`   rE   rb   rj   rq   rx   rH   r   r   r   <module>r      s,      					 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 2 1 1 1 1 1 1 1 1 1 1 1 1 1 ( ( ( ( ( ( 8 8 8 8 8 8 8 8             - - - - - - - -=1..3( 1
"* J! ( GCLLQ 1    3 8#4    6 (49"556   . BK *2C5#:*> (49"556   4 (4S>"::;   2 BK *2C5#:*> (3-/0   .' ' ' ' 'Y ' ' ' ' 'r   