Uname: Linux web3.us.cloudlogin.co 5.10.226-xeon-hst #2 SMP Fri Sep 13 12:28:44 UTC 2024 x86_64
Software: Apache
PHP version: 8.1.31 [ PHP INFO ] PHP os: Linux
Server Ip: 162.210.96.117
Your Ip: 3.137.180.245
User: edustar (269686) | Group: tty (888)
Safe Mode: OFF
Disable Function:
NONE

name : PdfParser.cpython-312.pyc
�

�f~��	��ddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZm
Z
mZmZd�Zidd�dd�d	d
�dd�d
d�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d#d$�d%d&�id'd(�d)d*�d+d,�d-d.�d/d0�d1d2�d3d4�d5d6�d7d8�d9d:�d;d<�d=d>�d?d@�dAdB�dCdD�dEdF�dGdH��dIdJdKdLdMdNdOdP��ZdQ�ZGdR�dSe�ZdT�ZGdU�dVe�ZGdW�dXe�ZGdY�dZe�ZGd[�d\�ZGd]�d^�ZGd_�d`e
e�Zerej8eeefefZnej8ZGda�dbe�Z Gdc�dd�Z!Gde�df�Z"dg�Z#Gdh�di�Z$y)j�)�annotationsN)�
TYPE_CHECKING�Any�List�
NamedTuple�Unionc�F�tj|jd�zS)N�	utf_16_be)�codecs�BOM_UTF16_BE�encode)�ss �D/usr/local/python-3.12/lib/python3.12/site-packages/PIL/PdfParser.py�encode_textrs��������+�!6�6�6����u˘�uˇ�uˆ�u˙�u˝�u˛�u˚�u˜�u•�u†�u‡�u…�u—�u–�uƒ�u⁄�u‹�u›�u−�u‰�u„�u“�u”�u‘�u’�u‚�u™�ufi�ufl�uŁ�uŒ�uŠ�uŸuŽuıułuœušužu€)�������c���|dttj�tjk(r+|ttj�djd�Sdj	d�|D��S)Nr
�c3�ZK�|]#}tj|t|�����%y�w�N)�PDFDocEncoding�get�chr)�.0�bytes  r�	<genexpr>zdecode_text.<locals>.<genexpr>Es!����I�t�~�)�)�$��D�	�:�I�s�)+)�lenrr�decode�join)�bs r�decode_textrJAs\���	#�3�v�"�"�#�$��(;�(;�;���V�(�(�)�+�,�3�3�K�@�@��w�w�I�q�I�I�Irc��eZdZdZy)�PdfFormatErrorz\An error that probably indicates a syntactic or semantic error in the
    PDF file structureN)�__name__�
__module__�__qualname__�__doc__�rrrLrLHs���	rrLc��|st|��yr?)rL)�	condition�
error_messages  r�check_format_conditionrUOs����]�+�+�rc�"�eZdZUded<ded<y)�IndirectReferenceTuple�int�	object_id�
generationN)rMrNrO�__annotations__rQrrrWrWTs���N��OrrWc�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�IndirectReferencec�:�|j�d|j�d�S)N� z R�rYrZ��selfs r�__str__zIndirectReference.__str__Zs���.�.�!��4�?�?�"3�2�6�6rc�@�|j�jd�S�N�us-ascii)rcr
ras r�	__bytes__zIndirectReference.__bytes__]s���|�|�~�$�$�Z�0�0rc��|j|juxr4|j|jk(xr|j|jk(Sr?)�	__class__rYrZ�rb�others  r�__eq__zIndirectReference.__eq__`sC���O�O�t�~�~�-�
4����4�>�>�1�
4�� � �D�O�O�3�	
rc��||k(Sr?rQrjs  r�__ne__zIndirectReference.__ne__gs���E�M�"�"rc�D�t|j|jf�Sr?)�hashrYrZras r�__hash__zIndirectReference.__hash__js���T�^�^�T�_�_�5�6�6rN)rMrNrOrcrgrlrnrqrQrrr]r]Ys��7�1�
�#�7rr]c��eZdZd�Zy)�IndirectObjectDefc�:�|j�d|j�d�S)Nr_z objr`ras rrczIndirectObjectDef.__str__os���.�.�!��4�?�?�"3�4�8�8rN)rMrNrOrcrQrrrsrsns��9rrsc�<�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�	XrefTablec�@�i|_i|_ddi|_d|_y)NriF)�existing_entries�new_entries�deleted_entries�reading_finishedras r�__init__zXrefTable.__init__ts&�� "������ !�5�z��� %��rc��|jr||j|<n||j|<||jvr|j|=yyr?)r{ryrxrz�rb�key�values   r�__setitem__zXrefTable.__setitem__zsL��� � �$)�D���S�!�).�D�!�!�#�&��$�&�&�&��$�$�S�)�'rc�^�	|j|S#t$r|j|cYSwxYwr?)ry�KeyErrorrx�rbrs  r�__getitem__zXrefTable.__getitem__�s8��	.��#�#�C�(�(���	.��(�(��-�-�	.�s��,�,c�\�||jvr2|j|ddz}|j|=||j|<y||jvr%|j|ddz}||j|<y||jvr|j|}ydt|�zdz}t	|��)N�z
object ID z+ cannot be deleted because it doesn't exist)ryrzrx�str�
IndexError)rbrrZ�msgs    r�__delitem__zXrefTable.__delitem__�s����$�"�"�"��)�)�#�.�q�1�A�5�J�� � ��%�(2�D� � ��%�
�D�)�)�
)��.�.�s�3�A�6��:�J�(2�D� � ��%�
�D�(�(�
(��-�-�c�2�J��s�3�x�'�*W�W�
��S�/�!rc�>�||jvxs||jvSr?)rxryr�s  r�__contains__zXrefTable.__contains__�s#���d�+�+�+�F�s�d�6F�6F�/F�Frc���tt|jj��t|jj��zt|j
j��z�Sr?)rF�setrx�keysryrzras r�__len__zXrefTable.__len__�s^�����%�%�*�*�,�-��$�"�"�'�'�)�*�
+��$�&�&�+�+�-�.�
/�
�	
rc���t|jj��t|jj��z
t|jj��zSr?)r�rxr�rzryras rr�zXrefTable.keys�sS����%�%�*�*�,�-��D�4H�4H�4M�4M�4O�0P�P��� � �%�%�'�(�)�	)rc��tt|jj��t|jj��z�}tt|jj���}|j�}|j
d�|r�d}t|�D]\}}|�|dz|k(r|}�|d|}||d}n|}d}|j
d|dt|�fz�|D]�}	|	|jvr"|j
d|j|	z��3|jd�}
t|	|
k(d|	�d|
���	|d}|j
d||j|	fz���|r��|S#t$rd}Y�7wxYw)	Nsxref
r�s%d %d
rs%010d %05d n 
z*expected the next deleted object ID to be z, instead found s%010d %05d f 
)�sortedr�ryr�rz�tell�write�	enumeraterF�poprUr�)rb�fr��deleted_keys�	startxref�prev�indexr�contiguous_keysrY�this_deleted_object_id�next_in_linked_lists            rr�zXrefTable.write�s����c�$�*�*�/�/�1�2�S��9M�9M�9R�9R�9T�5U�U�V���c�$�"6�"6�";�";�"=�>�?���F�F�H�	�	���	����D�'��o�	
�
��s��<�4�!�8�s�?��D�&*�6�E�l�O����<�D��
	
�#'����
�G�G�J�/�!�"4�c�/�6J�!K�K�L�,�
�	��� 0� 0�0��G�G�.��1A�1A�)�1L�L�M�-9�-=�-=�a�-@�*�*�!�%;�;�D�Y�K�P)�)?�(@�B��
0�.:�1�o�+��G�G�*�.��0D�0D�Y�0O�P�Q��
��@���
&�0�./�+�0�s�E>�>F�FN)rMrNrOr|r�r�r�r�r�r�r�rQrrrvrvss+��&�*�.�"� G�
�)�
%rrvc	��eZdZd�Zd�Zd�Zd�Zd�Zed��Z	e
edd��d	D���chc]
}t|���c}}}z
Z
d
�Zycc}}}w)�PdfNamec��t|t�r|j|_yt|t�r||_y|j	d�|_yre)�
isinstancer��name�bytesr
)rbr�s  rr|zPdfName.__init__�s8���d�G�$��	�	�D�I�
��e�
$��D�I����J�/�D�Irc�8�|jjd�Sre)r�rGras r�name_as_strzPdfName.name_as_str�s���y�y���
�+�+rc�z�t|t�xr|j|jk(xs||jk(Sr?)r�r�r�rjs  rrlzPdfName.__eq__�s4���u�g�&�B�5�:�:����+B� �
�d�i�i�
�	 rc�,�t|j�Sr?)rpr�ras rrqzPdfName.__hash__�s���D�I�I��rc�4�dt|j��d�S)NzPdfName(�))�reprr�ras r�__repr__zPdfName.__repr__�s���$�t�y�y�/�*�!�,�,rc�8�|tj|��Sr?)�	PdfParser�interpret_name)�cls�datas  r�from_pdf_streamzPdfName.from_pdf_stream�s���9�+�+�D�1�2�2r�!�z#%/()<>[]{}c��td�}|jD]6}||jvr|j|��#|j	d|z��8t|�S)N�/s#%02X)�	bytearrayr��
allowed_chars�append�extendr�)rb�resultrIs   rrgzPdfName.__bytes__�sT���4������	,�A��D�&�&�&��
�
�a� ��
�
�h��l�+�		,�
�V�}�rN)rMrNrOr|r�rlrqr��classmethodr�r��range�ordr�rg)rC�cr�s000rr�r��sc��0�,� �
�-��3��3���b�#��'�=�*I�*I�a�3�q�6�*I�I�M���+Js�A
r�c��eZdZd�Zy)�PdfArrayc�>�ddjd�|D��zdzS)Ns[ � c3�2K�|]}t|����y�wr?)�pdf_repr)rC�xs  rrEz%PdfArray.__bytes__.<locals>.<genexpr>�s���� ;���!�� ;�s�s ])rHras rrgzPdfArray.__bytes__�s!���t�y�y� ;�d� ;�;�;�e�C�CrN)rMrNrOrgrQrrr�r��s��Drr�c��eZdZd�Zd�Zd�Zy)�PdfDictc�z�|dk(r"tjj|||�y|||jd�<y)Nr�rf)�collections�UserDict�__setattr__r
r~s   rr�zPdfDict.__setattr__s4���&�=�� � �,�,�T�3��>�+0�D����J�'�(rc�`�	||jd�}t|t�rt|�}|j
d�r�|jd�r|dd}d}t|�dkDr5|d}t|dd�d	z}t|�d
kDr|t|dd
�z
}ddt|�dz
}tj|dt|�dz|�}|d
vr:d	z}|dk(r|dz}tjtj|�|z�}|S#t$r}t|�|�d}~wwxYw)Nrf�DatezD:��Z����<��z%Y%m%d%H%M%S)�+�-r����)r
r��AttributeErrorr�r�rJ�endswith�
startswithrFrX�time�strptime�gmtime�calendar�timegm)rbrr��e�relationship�offset�formats       r�__getattr__zPdfDict.__getattr__s:��	-�����J�/�0�E��e�U�#���&�E��<�<�������%��a�b�	���L��5�z�B��$�R�y���U�2�b�\�*�R�/���u�:��?��c�%��2�,�/�/�F�#�$4�c�%�j�1�n�5�F��M�M�%�(9�#�f�+��/�":�F�C�E��z�)��"����3�&��b�L�F����H�O�O�E�$:�V�$C�D�����-�	-� ��%�1�,��	-�s�D�	D-�D(�(D-c�H�td�}|j�D]i\}}|��	t|�}|jd�|jt	t|���|jd�|j|��k|jd�t	|�S)N�<<�
r�s
>>)r��itemsr�r�r�r�)rb�outrr�s    rrgzPdfDict.__bytes__#s��������*�*�,�	�J�C���}���U�O�E��J�J�u���J�J�u�W�S�\�*�+��J�J�t���J�J�u��	�	�
�
�7���S�z�rN)rMrNrOr�r�rgrQrrr�r�s��1��6rr�c��eZdZd�Zd�Zy)�	PdfBinaryc��||_yr?)r�)rbr�s  rr|zPdfBinary.__init__2s	����	rc�L�ddjd�|jD��zS)Ns<%s>rc3�&K�|]	}d|z���y�w)s%02XNrQ�rCrIs  rrEz&PdfBinary.__bytes__.<locals>.<genexpr>6s����!A�!�'�A�+�!A�s�)rHr�ras rrgzPdfBinary.__bytes__5s ������!A�t�y�y�!A�A�A�ArN)rMrNrOr|rgrQrrr�r�1s
���Brr�c��eZdZd�Zd�Zy)�	PdfStreamc� �||_||_yr?)�
dictionary�buf)rbr�r�s   rr|zPdfStream.__init__:s��$�����rc��	|jj}|dk(rA	|jj}t
j|jt|���Sdt|jj��d�}t|��#t$r|jcYSwxYw#t$r|jj
}Y��wxYw)NsFlateDecode)�bufsizezstream filter z unknown/unsupported)r��Filterr�r��DL�Length�zlib�
decompressrXr��NotImplementedError)rb�filter�expected_lengthr�s    rrGzPdfStream.decode>s���	��_�_�+�+�F��^�#�
9�"&�/�/�"4�"4���?�?�4�8�8�S��5I�J�J�"�4����(>�(>�#?�"@�@T�U�C�%�c�*�*���	��8�8�O�	��
"�
9�"&�/�/�"8�"8��
9�s"�B�B'�B$�#B$�'C	�C	N)rMrNrOr|rGrQrrr�r�9s���
+rr�c���|dury|dury|�yt|ttttf�rt|�St|ttf�rt|�jd�St|tj�r+dtjd|�jd�zd	zSt|t�rtt|��St|t�rtt|��St|t�rtt!|��St|t
�r>|j#d
d�}|j#dd
�}|j#d	d�}d|zd	zSt|�S)NTstrueFsfalsesnullrfs(D:z
%Y%m%d%H%M%SZ�)�\s\\�(�\(s\))r�r�r�r�r�r�rX�floatr�r
r��struct_time�strftime�dict�listr�r�replace)r�s rr�r�Ns-���D�y��	
�e���	
���	�A���(�I�>�	?��Q�x��	�A��U�|�	$��1�v�}�}�Z�(�(�	�A�t�'�'�	(���
�
�o�q�9�@�@��L�L�t�S�S�	�A�t�	��W�Q�Z� � �	�A�t�	��X�a�[�!�!�	�A�s�	���A��'�'�	�A�u�	�
�I�I�e�W�%��
�I�I�d�F�#��
�I�I�d�F�#���a�x�$����Q�x�rc��eZdZdZdSd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�Zd�Zd�Z
d
�ZdTd�Zd�Zd�Zd�Zed��Zd�ZdTd�ZdZdZdZdZedzZedzZdZdZeezezZe jBedzezdzezdzezd zezd!zezd"ze jD�Z#e jBedzezd#zezdzezd zezd!zeze jD�Z$d$�Z%d%�Z&e jBe�Z'e jBed&zezd'z�Z(e jBed(z�Z)e jBed)zez�Z*e+d*��Z,e jBd+�Z-e+dUd,��Z.e jBed-zezd'z�Z/e jBed.zezd'z�Z0e jBed/zezd'z�Z1e jBed0zezd'z�Z2e jBed1zezd'z�Z3e jBed2z�Z4e jBed3z�Z5e jBed4zezd5z�Z6e jBed6z�Z7e jBed7zezd7zezd8zezd'z�Z8e jBed7zezd7zezd9zezd'z�Z9e jBed:zezd'z�Z:e jBd;ezd<zezd=z�Z;e jBed>z�Z<e jBed?zezd'z�Z=e+dVd@��Z>e jBdA�Z?idBdC�dDdE�dFdG�dHdI�dJdK�d;d;�d'd'�dLdL�e@dB�dC�e@dD�dE�e@dF�dG�e@dH�dI�e@dJ�dK�e@d;�d;�e@d'�d'�e@dL�dL�ZAe+dM��ZBe jBedNzez�ZCe jBed zezd zezez�ZDe jBdO�ZEdP�ZFdWdQ�ZGdTdR�ZHy)Xr�z|Based on
    https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf
    Supports PDF up to 1.4
    Nc��|r|r
d}t|��||_||_||_||_d|_d|_|�|�t||�x|_}d|_|�>|j|�x|_}d|_|st|d�r|j|_i|_|r|j�nsdx|_
|_t�|_d|_t�|_d|_i|_g|_g|_d|_d|_i|_t5�|_d|j6_|r|j;�yy)Nz4specify buf or f or filename, but not both buf and fFTr�r)�RuntimeError�filenamer�r��start_offset�should_close_buf�should_close_file�open�get_buf_from_file�hasattrr��cached_objects�
read_pdf_info�file_size_total�file_size_thisr��root�root_ref�info�info_ref�page_tree_root�pages�
orig_pages�	pages_ref�last_xref_section_offset�trailer_dictrv�
xref_tabler{�seek_end)rbrr�r�r�moder�s       rr|zPdfParser.__init__qs>���1�H�C��s�#�#� ��
�������(��� %���!&�����A�I��h��-�-�D�F�Q�%)�D�"��=�!�3�3�A�6�6�D�H�s�$(�D�!����6� 2� !����
� ������� �9:�:�D� �4�#6��	�D�I� �D�M��	�D�I� �D�M�"$�D���D�J� �D�O�!�D�N�,0�D�)� "�D��'�k�D�O�+/����(���M�M�O�
rc��|Sr?rQras r�	__enter__zPdfParser.__enter__�s���rc�$�|j�y)NF)�close)rb�exc_type�	exc_value�	tracebacks    r�__exit__zPdfParser.__exit__�s���
�
��rc�D�|j�|j�yr?)�	close_bufr'ras r�
start_writingzPdfParser.start_writing�s�������
�
�rc�t�	|jj�d|_y#t$r
Yd|_ywxYwr?)r�r,r�ras rr2zPdfParser.close_buf�s9��	��H�H�N�N�������	�����	�s�$�	7�7c��|jr|j�|j�/|jr"|jj	�d|_yyyr?)rr2r�rr,ras rr,zPdfParser.close�sC��� � ��N�N���6�6��$�"8�"8��F�F�L�L�N��D�F�#9�rc�X�|jjdtj�y)Nr)r��seek�os�SEEK_ENDras rr'zPdfParser.seek_end�s�������A�r�{�{�#rc�:�|jjd�y)Ns	%PDF-1.4
)r�r�ras r�write_headerzPdfParser.write_header�s�������]�#rc�^�|jjd|�d�j��y)Nz% �
)r�r�r
)rbrs  r�
write_commentzPdfParser.write_comment�s#�������r�!��B�Z�&�&�(�)rc���|j�|j|jj��|_|jd�|_|j
�|j|jtd�|j
��|j|j
td�t|j�|j��|jS)Nr�Catalog)�Type�Pages�Pages)rA�Count�Kids)�del_root�next_object_idr�r�rr#�
rewrite_pages�	write_objr�rFr!ras r�
write_catalogzPdfParser.write_catalog�s����
�
���+�+�D�F�F�K�K�M�:��
��,�,�Q�/����������t�}�}�7�:�+>�d�n�n��U�����N�N���"��d�j�j�/����		�	
��}�}�rc��g}t|j�D]�\}}|j|}|j|j=|j|t
d��||jvr�Xi}|j�D]\}}|||j�<�|j|d<|jdi|��}t|j�D]\}	}
|
|k(s�||j|	<���|D]X}|s�|j|}|j|jvr|j|j=|jdd�}|r�S�Zg|_y)NsParent�Parentr?)
r�r"rr&rYr�r�r!r�r�r#�
write_pagerA)
rb�pages_tree_nodes_to_delete�i�page_ref�	page_info�stringified_page_inforr��new_page_ref�j�cur_page_ref�pages_tree_node_ref�pages_tree_nodes
             rrHzPdfParser.rewrite_pages�se��%'�"�$�T�_�_�5�	1�K�A�x��+�+�H�5�I����� 2� 2�3�&�-�-�i��	�8J�.K�L��t�z�z�)��$&�!�'�o�o�/�
A�
��U�;@�%�c�o�o�&7�8�
A�/3�n�n�!�(�+�*�4�?�?�I�3H�I�L�#,�T�Z�Z�#8�
1���<��8�+�$0�D�J�J�q�M�
1�	1�&$>�	K��%�"&�"5�"5�6I�"J��&�0�0�D�O�O�C����(;�(E�(E�F�&5�&9�&9�)�T�&J�#�	&�	K���rc��|r|j�||_|jr!|jd|j�|_|j
j
|j�}t|j
�}|j|d�}|j�|j|d<|jr|j|d<||_	|jj
dtt|��zd|zz�y)N)�Root�Size�Prev�Infostrailer
s
startxref
%d
%%%%EOF)rFrrrIrr&r�r�rFr$r�r�)rb�new_root_ref�
start_xref�num_entriesr%s     r�write_xref_and_trailerz PdfParser.write_xref_and_trailer�s�����M�M�O�(�D�M��9�9� �N�N�4����;�D�M��_�_�*�*�4�6�6�2�
��$�/�/�*��!%����E���(�(�4�$(�$A�$A�L��!��9�9�$(�M�M�L��!�(2��%��������G�L�)�*�
+�)�J�6�
7�	
rc��t|t�r|j|}d|vrtd�|d<d|vr|j|d<|j
|g|��i|��S)NrA�PagerL)r�rXr!r�r#rI)rb�ref�objs�dict_objs    rrMzPdfParser.write_page�sa���c�3���*�*�S�/�C���!�&�w�/�H�V���8�#�!%���H�X���t�~�~�c�5�D�5�H�5�5rc�R�|j}|� |j|j��}n3|j�|jf|j|j
<|j
tt|���|jdd�}|�t|�|d<|r|j
t|��|D]}|j
t|���|�3|j
d�|j
|�|j
d�|j
d�|S)N�streamr�sstream
s
endstream
sendobj
)r�rGr�rZr&rYr�r�rsr�rFr�)rbrcrdrer�rg�objs       rrIzPdfParser.write_objs����F�F���;��%�%�a�f�f�h�/�C�./�f�f�h����-G�D�O�O�C�M�M�*�	����'��-�.�/����h��-����!$�V��H�X���
�G�G�H�X�&�'��	#�C�
�G�G�H�S�M�"�	#���
�G�G�K� �
�G�G�F�O�
�G�G�$�%�	������
rc��|j�y|j|jj=|j|jdj=y)NrC)rr&rYrras rrFzPdfParser.del_roots@���=�=� ���O�O�D�M�M�3�3�4��O�O�D�I�I�h�/�9�9�:rc��t|d�r|j�St|d�r|j�S	tj|j	�dtj
��S#t$rYywxYw)N�	getbuffer�getvaluer)�accessr)rrkrl�mmap�fileno�ACCESS_READ�
ValueError)r�s rrzPdfParser.get_buf_from_filesd���1�k�"��;�;�=� �
�Q�
�
#��:�:�<��
��y�y�����Q�t�7G�7G�H�H���
��
�s�3A.�.	A:�9A:c��t|j�|_|j|jz
|_|j�|jd|_|jjdd�|_	t|j|j��|_|j�t�|_
n)t|j|j��|_
td|jvd�t|jddk(d�td|jvd�tt|jdt �d	�|jd|_|j|j"�|_|j'|j$�|_|j(dd|_y)
NrYr\�Typez/Type missing in Rootr@z/Type in Root is not /CatalogrCz/Pages missing in Rootz+/Pages in Root is not an indirect reference)rFr�rrr�read_trailerr%rrArr��
read_indirectrrrUr�r]r#r �linearize_page_treer!r"ras rrzPdfParser.read_pdf_info(sc��"�4�8�8�}���"�2�2�T�5F�5F�F��������)�)�'�2��
��)�)�-�-�g�t�<��
��D�.�.�t�}�}�=�>��	��=�=� ��	�D�I��� 2� 2�4�=�=� A�B�D�I��w�$�)�)�3�5L�M���I�I�g��*�,�.M�	
�	�x�4�9�9�4�6N�O���t�y�y��*�,=�>�9�	
����8�,���"�0�0����@����-�-�d�.A�.A�B��
��*�*�Q�-��rc���	tt|jj��dzd�}|�|df|j|j
<|S#t$rtdd�}Y�6wxYw)Nr�r)r]�maxr&r�rqrY)rbr��	references   rrGzPdfParser.next_object_idDsm��	0�)�#�d�o�o�.B�.B�.D�*E��*I�1�M�I���4:�A�;�D�O�O�I�/�/�0����	�	0�)�!�Q�/�I�	0�s�0A�A)�(A)s[][()<>{}/%]s$[][()<>{}/%\000\011\012\014\015\040]s[\000\011\012\014\015\040]s#[\000\011\012\014\015\0400-9a-fA-F]�*�+s[\000\011\014\040]*s[\r\n]+strailers<<(.*>>)s	startxrefs([0-9]+)s%%EOF�$s	<<(.*?>>)c��t|j�dz
}||jkr|j}|jj	|j|�}t|d�|}|r<|}|jj	|j|j
�dz�}|r�<|s|}|jd�}t|jd��|_	|j|�|_t�|_
|j|j��d|jvr|j|jd�yy)N�@ztrailer end not found�r�r���xref_section_offsetr[)rFr�r�re_trailer_end�searchrU�start�grouprXr$�interpret_trailerr%rvr&�read_xref_table�read_prev_trailer)rb�search_start_offset�m�
last_match�trailer_datas     rrtzPdfParser.read_trailervs��!�$�(�(�m�e�3����!2�!2�2�"&�"3�"3�����&�&�t�x�x�1D�E���q�"9�:��
���J��#�#�*�*�4�8�8�Q�W�W�Y��^�D�A����A��w�w�q�z��(+�A�G�G�A�J���%� �2�2�<�@���#�+�������1N�1N��O��d�'�'�'��"�"�4�#4�#4�W�#=�>�(rc�Z�|j|��}|jj|j||dz�}t	|d�|jd�}t	t
|jd��|k(d�|j|�}d|vr|j|d�yy)Nr�r~zprevious trailer not foundr�r�zGxref section offset in previous trailer doesn't match what was expectedr[)	r��re_trailer_prevr�r�rUr�rXr�r�)rbr��trailer_offsetr�r�r%s      rr�zPdfParser.read_prev_trailer�s����-�-�BU�-�V��� � �'�'��H�H�^�n�u�&<�=�
��	�q�">�?��w�w�q�z��������
�O�2�2�U�	
��-�-�l�;���l�"��"�"�<��#8�9�#rs/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=rr�s>>c	��i}d}	|jj||�}|sV|jj||�}t|xr|j	�t|�k(dt
||d�z�nI|j|jd��}|j||j	��\}}|||<��td|vxrt|dt�d�td|vxrt|dt�d�|S)Nrz+name not found in trailer, remaining data: r�rZz&/Size not in trailer or not an integerrYz1/Root not in trailer or not an indirect reference)
�re_name�match�re_dict_endrU�endrFr�r�r��	get_valuer�rXr])r�r��trailerr�r�rr�s       rr�zPdfParser.interpret_trailer�s����������!�!�,��7�A���O�O�)�)�,��?��&��6�!�%�%�'�S��%6�6�A��<���0�1�2��
��$�$�Q�W�W�Q�Z�0�C��M�M�,�����@�M�E�6� �G�C�L��	��w��D�:�g�g�.>��#D�4�	
�	��w��R�:�g�g�.>�@Q�#R�?�	
��rs([^#]*)(#([0-9a-fA-F]{2}))?c�^�d}|jj|�D]p}|jd�rI||jd�tj	|jd�jd��zz
}�]||jd�z
}�r|r|jd�St
|�S)Nr�r�rfzutf-8)�re_hashes_in_name�finditerr�r��fromhexrGr�)r��raw�as_textr�r�s     rr�zPdfParser.interpret_name�s������&�&�/�/��4�	#�A��w�w�q�z������
�Y�%6�%6�q�w�w�q�z�7H�7H��7T�%U�U�U�������
�"��		#�
��;�;�w�'�'���;�rsnull(?=strue(?=sfalse(?=s([-+]?[0-9]+)(?=s)([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=s\[�]s<(s*)>rs
([-+]?[0-9]+)sR(?=sobj(?=s	endobj(?=rs	%[^\r\n]*s)*sstream\r?\nsendstream(?=c��|dk(ry|jj||�}|r|j�}|jj||�}|�rt	t|j
d��dkDd�t	t|j
d��dk\d�t	|duxs?|tt|j
d��t|j
d���k(d�|j||j�|dz
��\}}|�|dfS|jj||�}t	|d	�||j�fSt	|d
�|jj||�}|r�t	t|j
d��dkDd�t	t|j
d��dk\d�tt|j
d��t|j
d���|j�fS|jj||�}|�rf|j�}i}|jj||�}|sd|j|||dz
��\}}|�|dfS|j|||dz
��\}	}|	||<|�|dfS|jj||�}|s�d|j�}|jj||�}|r�	t|d
�}
||j�|j�|
z}
|j&j||j�|
z�}t	|d�|j�}t)t+|�|
�}||fSt+|�}||fS|j,j||�}|r�|j�}g}|j.j||�}|sP|j|||dz
��\}	}|j1|	�|�|dfS|j.j||�}|s�P||j�fS|j2j||�}|rd|j�fS|j4j||�}|rd|j�fS|j6j||�}|rd|j�fS|j8j||�}|r9t;|j=|j
d���|j�fS|j>j||�}|r*t|j
d��|j�fS|j@j||�}|r*tC|j
d��|j�fS|jDj||�}|r�tGd�|j
d�D��}tI|�dzdk(r|j1tKd��tFjM|jOd��|j�fS|jPj||�}|r |jS||j��SdtU|||dz�z}t%|��#ttt f$r&}d|j#d
d�z}t%|�|�d}~wwxYw)Nr)NNr�z<indirect object definition: object ID must be greater than 0r�z;indirect object definition: generation must be non-negativez2indirect object definition different than expected)�max_nestingz(indirect object definition end not foundz$indirect object definition not foundz;indirect object reference: object ID must be greater than 0z:indirect object reference: generation must be non-negativesLengthz)bad or missing Length in stream dict (%r)zstream end not foundTFc3�*K�|]}|dvs�|���
y�w)s0123456789abcdefABCDEFNrQr�s  rrEz&PdfParser.get_value.<locals>.<genexpr>ls����#���.G�)G��#�s�	��0rfzunrecognized object: � )+�
re_commentr�r��re_indirect_def_startrUrXr�r]r��re_indirect_def_end�re_indirect_reference�
re_dict_startr��re_stream_start�	TypeErrorr�rqrArL�
re_stream_endr�r��re_array_start�re_array_endr��re_null�re_true�re_falser�r�r��re_int�re_realr�
re_string_hexr�rFr�r�rG�
re_string_lit�get_literal_stringr�)r�r�r��expect_indirectr�r��objectr�rr��
stream_lenr�r��stream_data�
hex_strings               rr�zPdfParser.get_value�sX���!����N�N� � ��v�.����U�U�W�F��%�%�+�+�D�&�9���"��A�G�G�A�J��!�#�N�
�
#��A�G�G�A�J��1�$�M�
�
#��4�'�G�"�$�S������_�c�!�'�'�!�*�o�F�G�D�	
�!�]�]�4�����k�TU�o�]�V�N�F�F��~��t�|�#��'�'�-�-�d�F�;�A�"�1�&P�Q��1�5�5�7�?�"����!G�	
�
�%�%�+�+�D�&�9���"��A�G�G�A�J��!�#�M�
�
#��A�G�G�A�J��1�$�L�
�%�S������_�c�!�'�'�!�*�o�F�����O�O����#�#�D�&�1����U�U�W�F��F����%�%�d�F�3�A��!�m�m�D�&�k�TU�o�m�V���V��>�!�4�<�'� #�
�
�d�F��VW��
� X�
��v�#��s���>�!�4�<�'��O�O�)�)�$��7����U�U�W�F��#�#�)�)�$��7�A��5�!$�V�I�%6�!7�J�#�1�5�5�7�Q�U�U�W�z�-A�B���%�%�+�+�D�!�%�%�'�J�2F�G��&�q�*@�A������"�7�6�?�K�@���6�>�!�!�����6�>�!����$�$�T�6�2����U�U�W�F��F�� � �&�&�t�V�4�A�� #�
�
�d�F��VW��
� X�
��v��
�
�e�$��>�!�4�<�'��$�$�*�*�4��8����1�5�5�7�?�"��K�K���d�F�+��������=� ��K�K���d�F�+��������=� ��L�L���t�V�,����!�%�%�'�>�!��K�K���d�F�+����3�-�-�a�g�g�a�j�9�:�A�E�E�G�C�C��J�J���T�6�*����q�w�w�q�z�?�A�E�E�G�+�+��K�K���d�F�+���������$�a�e�e�g�-�-����#�#�D�&�1���"�#��7�7�1�:�#��J��:���"�a�'��!�!�#�d�)�,��$�$�Z�%6�%6�z�%B�C�Q�U�U�W�L�L����#�#�D�&�1����)�)�$�����8�8�%��T�&�6�B�;�-G�(H�H���S�!�!��w"�8�Z�8�5�E��
�
�!�4�I��C�)��-�1�4��	5�s�[�[?�![:�:[?sF(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))�nr��r�
�t�	�b��f�rc�,�d}t�}|jj||�D�]\}|j|||j	��|jd�r1|j|j|jd�d�n�|jd�r.|jt|jd�ddd��n�|jd�rn�|jd�r|jd�nq|jd�r|jd	�|dz
}nI|jd
�r8|dk(rt|�|j�fcS|jd�|dz}|j�}��_d}t|��)
Nrr�r��r��r��r�rzunfinished literal string)r��re_lit_str_tokenr�r�r�r��
escaped_charsr�rXr�r�rL)r�r�r��
nesting_depthr�r�r�s       rr�zPdfParser.get_literal_string�sD���
�����%�%�.�.�t�V�<�	�A��M�M�$�v����	�2�3��w�w�q�z��
�
�c�/�/�����
�1�
�>�?�������
�
�c�!�'�'�!�*�Q�R�.�!�4�5�������������
�
�e�$�������
�
�d�#���"�
������ �A�%� ��=�!�%�%�'�1�1��
�
�d�#���"�
��U�U�W�F�%	�&*���S�!�!rsxrefs+([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)c�&�d}|jj|j||jz�}t	|d�|j�}	|jj|j|�}|st	|d�	|Sd}|j�}t|jd��}t|jd��}t|||z�D]�}|jj|j|�}t	|d�|j�}|jd�d	k(}|r�\t|jd��}	t|jd��|	f}
||jvs��|
|j|<����@)
NFzxref section start not foundTzxref subsection start not foundr�r�zxref entry not foundr�r�)�re_xref_section_startr�r�rrUr��re_xref_subsection_startrXr�r��
re_xref_entryr&)rbr��subsection_foundr�r��first_object�num_objectsrO�is_freerZ�	new_entrys           rr�zPdfParser.read_xref_table�sd�� ���&�&�,�,��H�H�)�D�,=�,=�=�
��	�q�"@�A��������-�-�3�3�D�H�H�f�E�A��&�$�&G����
� $���U�U�W�F��q�w�w�q�z�?�L��a�g�g�a�j�/�K��<���)C�D�	
7���&�&�,�,�T�X�X�v�>��&�q�*@�A�������'�'�!�*��,���!$�Q�W�W�Q�Z��J�!$�Q�W�W�Q�Z��*� =�I�����/�-6�����*�	
7�rc��|j|d\}}t||dk(d|d�d|d�d|�d|���|j|j||jzt|�|��d}||j|<|S)Nrr�zexpected to find generation z for object ID z) in xref table, instead found generation z at offset )r�r�)r&rUr�r�rr]r)rbrcr�r�rZr�s      rruzPdfParser.read_indirect�s���!�_�_�S��V�4���
���#�a�&� �*�3�q�6�(�/�#�a�&��J/�/9�l�+�f�X�
O�	
�
����H�H��T�&�&�&�-�s�3�#�	�
�
�
��$)����C� ��rc��|�|j}t|ddk(d�g}|dD]N}|j|�}|ddk(r|j|��.|j	|j|����P|S)NrsrCz%/Type of page tree node is not /PagessKidsrb)�node)r rUrur�r�rv)rbr�r!�kid�
kid_objects     rrvzPdfParser.linearize_page_tree�s����<��&�&�D����M�X�%�'N�	
�����=�	H�C��+�+�C�0�J��'�"�g�-����S�!����T�5�5�:�5�F�G�	H��r)NNNr�rbr?)F)Nr�)r�)IrMrNrOrPr|r*r0r3r2r,r'r;r>rJrHr`rMrIrF�staticmethodrrrG�	delimiter�delimiter_or_ws�
whitespace�whitespace_or_hex�whitespace_optional�whitespace_mandatory�whitespace_optional_no_nl�newline_only�newline�re�compile�DOTALLr�r�rtr��re_whitespace_optionalr�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�r�r�r�r�r�rurvrQrrr�r�ksp���
$�L�����$�$�*���:
�(6��*;��	��	�(�8�!�I�>�O�/�J�?��$�t�+��%��,�� 7���L�'�,�6�9R�R�G��R�Z�Z��
�	�
�	��	��		�
�	��
	��	��	��		��
	��	�	�	�	��N�!�b�j�j��
�	�
�	��	��		�
�	��
	��	��	��		��
	�	�	�	�
�O�?�*
:�(�R�Z�Z�(;�<���b�j�j��
-�	.�
�	��	��G��B�J�J�2�V�;�<�M��"�*�*�0�6�9�<O�O�P�K�����4#��
�
�#B�C���
��
��b�j�j�,�{�:�_�L�u�T�U�G��b�j�j�,�{�:�_�L�u�T�U�G��r�z�z�-��<��N�QV�V�W�H�
�R�Z�Z��2�2�_�D�u�L��F��b�j�j��
7�	8�
�	��	��G� �R�Z�Z� 3�f� <�=�N��2�:�:�1�E�9�:�L��B�J�J��f�$�'8�8�7�B��M��B�J�J�2�V�;�<�M�&�B�J�J��
�	�
�	��	��		�
�	��
	��	�	��'�B�J�J��
�	�
�	��	��		�
�	��
	��	�	��%�"�*�*��m�+�o�=��E�������
�#�#�m�3�g�=��F��J�!�b�j�j�!4��!F�G�O��B�J�J��.�.��@�5�H��M��x"��x"�t"�r�z�z�R�����e���e��	
�e��	
�e�	�
	
�e��	
�d�
�	
�d��	�u��	�D�	�5��	�D�	�5��	�D�	�5��	�D�	�5��	�D�	�5��	�D�	�4��	�D�	�4�� 	�E�
�E�!�M�&�"��"�2'�B�J�J�':�X�'E��'O�P��)�r�z�z��
�	�
�	��	��		�
�	� ���B�J�J�N�O�M��<� 
rr�)%�
__future__rr�rr�rnr8r�r�r��typingrrrrrrr@rJrrLrUrWr]rsrvr�r�r�r�r��	_DictBaser�r�r�r�r�rQrr�<module>r�s���"��
���	�	���>�>�
7�*��(�*��(�*�	�(�*�	�(�	*�
	�(�*�	�(�
*�	�(�*�	�(�*�	�(�*�	�(�*�	�(�*�	�(�*�	�(�*�	�(�*�	�(�*� 	�(�!*�"	�(�#*�$	�(�%*�&	�(�'*�(	�(�)*�*	�(�+*�,	�(�-*�.	�(�/*�0	�(�1*�2	�(�3*�4	�(�5*�6	�(�7*�8	�(�9*�:	�(�;*�<	�(�=*�>	�(�?*�@	�(�A*�B	�(�C*�D	�(�E*�F�
�
�
�
�
�
�S*��ZJ�	�\�	�,�
�Z��
7�.�7�*9�)�9�
Y�Y�x$�$�ND�t�C�y�D�
��$�$�U�3��:�%6��%;�<�I��$�$�I�-�i�-�`B�B�+�+�*�:E
�E
r
© 2025 GrazzMean