� J�g�����dZddlZddlmZmZddlmZddlmZddl m Z ddl m Z dd lmZmZdd lmZdd lmZdd lmZdd lmZddlmZmZddlmZmZmZm Z m!Z!m"Z"m#Z#ddlm$Z%ddlm&Z'ddlm(Z)ddl*m+Z+m,Z, ddl-m.Z.n #e/$rdZ.YnwxYwddl0m1Z1e1rddl2m3Z3ej4e5��Z6dddd�Z7Gd�d��Z8Gd�de8��Z9Gd�d e!��Z:Gd!�d"e!��Z;Gd#�d$e!��Z<Gd%�d&��Z=Gd'�d(e!��Z>Gd)�d*e!��Z?Gd+�d,e��Z@Gd-�d.e��ZAGd/�d0e��ZBGd1�d2e��ZCGd3�d4��ZDGd5�d6e!��ZEGd7�d8e!��ZFGd9�d:e!��ZGGd;�d<e8��ZHGd=�d>��ZI dFd@efdA�ZJdB�ZKdC�ZLdGdE�ZMdS)Hai This module contains the serialization logic that produces a PDF document from a FPDF instance. Most of the code in this module is used when FPDF.output() is called. The contents of this module are internal to fpdf2, and not part of the public API. They may change at any time without prior warning or any deprecation period, in non-backward-compatible ways. �N)� OrderedDict� defaultdict)�contextmanager)�BytesIO)�subset�)� PDFAnnotation)�PageLabelStyle� SignatureFlag)� FPDFException)�TotalPagesSubstitutionFragment)�RasterImageInfo)�build_outline_objs)� Signature� sign_content)�Name�PDFArray�PDFContentStream�PDFDate� PDFObject� PDFString�build_obj_dict)�create_dictionary_string)�create_list_string)�iobj_ref)� int2roman�int_to_letters)�signer)� TYPE_CHECKING)�FPDF)z/Fit)z/FitH�null)�/XYZr!r!�1)�fullpage� fullwidth�realc��eZdZdd�ZdS)�ContentWithoutIDNc��dS�N���self�_security_handlers �[/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/fpdf/output.py� serializezContentWithoutID.serialize;s�� ��r*)�__name__� __module__� __qualname__r0r+r1r/r(r(:s(������ � � � � � r1r(c��eZdZd�Zdd�ZdS)� PDFHeaderc��||_dSr*�� pdf_version)r-r9s r/�__init__zPDFHeader.__init__@s��&����r1Nc��d|j��S)Nz%PDF-r8r,s r/r0zPDFHeader.serializeDs��)�t�'�)�)�)r1r*�r2r3r4r:r0r+r1r/r6r6?s7������'�'�'�*�*�*�*�*�*r1r6c� ��eZdZd�fd� Z�xZS)�PDFFontNc�R��t�����td��|_t|��|_t|��|_|rt|��nd|_||_||_d|_ d|_ d|_ d|_ d|_ dS)N�Font)�superr:r�type�subtype� base_font�encoding�d_w�w�descendant_fonts� to_unicode�c_i_d_system_info�font_descriptor�c_i_d_to_g_i_d_map)r-rCrDrErFrG� __class__s �r/r:zPDFFont.__init__Is���� ����������L�L�� ��G�}�}�� ��i�����*2�<��X������ ������� $������!%���#���"&����r1�NNN�r2r3r4r:� __classcell__�rMs@r/r>r>Hs=������� '� '� '� '� '� '� '� '� '� 'r1r>c���eZdZ�fd�Z�xZS)� CIDSystemInfoc���t�����tdd���|_tdd���|_d|_dS)N�AdobeT��encrypt�UCSr)rAr:r�registry�ordering� supplement)r-rMs �r/r:zCIDSystemInfo.__init__YsL��� ��������!�'�4�8�8�8�� �!�%��6�6�6�� �����r1rOrQs@r/rSrSXs8���������������r1rSc�$��eZdZdef�fd� Z�xZS)�PDFInfo� creation_datec���t�����|rt|d���nd|_|rt|d���nd|_|rt|d���nd|_|rt|d���nd|_|rt|d���nd|_|rt|d���nd|_||_ dS)NTrV) rAr:r�title�subject�author�keywords�creator�producerr^) r-r`rarbrcrdrer^rMs �r/r:zPDFInfo.__init__as���� ��������7<�F�Y�u�d�3�3�3�3�$�� �;B�L�y��$�7�7�7�7��� �9?�I�i���5�5�5�5�T�� �=E�O� �(�D�9�9�9�9�4�� �;B�L�y��$�7�7�7�7��� �=E�O� �(�D�9�9�9�9�4�� �*����r1)r2r3r4rr:rPrQs@r/r]r]`sG�������+��+�+�+�+�+�+�+�+�+�+r1r]c��eZdZd�Zdd�ZdS)�AcroFormc�"�||_||_dSr*��fields� sig_flags)r-rjrks r/r:zAcroForm.__init__vs���� �"����r1Nc�|��t�fd�t���D��||���}t|d���S)Nc�2��i|]}|t�|����Sr+��getattr��.0�keyr-s �r/� <dictcomp>z&AcroForm.serialize.<locals>.<dictcomp>|s%��� :� :� :��S�'�$��$�$� :� :� :r1)r.�_obj_id� �� field_join)r�dir�pdf_dict)r-r.rt�obj_dicts` r/r0zAcroForm.serializezsO���!� :� :� :� :��D� � � :� :� :�/�� � � �� ��S�1�1�1�1r1�NNr<r+r1r/rgrgus7������#�#�#�2�2�2�2�2�2r1rgc�"��eZdZ d�fd� Z�xZS)� PDFCatalogNc�:��t�����td��|_|rt |��nd|_||_||_||_d|_ d|_ d|_ d|_ d|_ d|_d|_d|_dS)N�Catalog)rAr:rrBr�lang� page_layout� page_mode�viewer_preferences�pages� acro_form� open_action� mark_info�metadata�names�outlines�struct_tree_root)r-r�r�r�r�rMs �r/r:zPDFCatalog.__init__�s���� ����������O�O�� �'+�5�I�d�O�O�O��� �&���"���"4����� ������������ ��� ��� � $����r1)NNNNrOrQs@r/r}r}�s@�������NR�%�%�%�%�%�%�%�%�%�%r1r}c���eZdZ�fd�Z�xZS)� PDFResourcesc���t�����||_||_||_||_dSr*)rAr:�proc_set�font�x_object� ext_g_state)r-r�r�r�r�rMs �r/r:zPDFResources.__init__�s<��� �������� �� ��� � �� �&����r1rOrQs@r/r�r��s8�������'�'�'�'�'�'�'�'�'r1r�c���eZdZ�fd�Z�xZS)� PDFFontStreamc�v��t���|d���t|��|_dS�NT��contents�compress)rAr:�len�length1�r-r�rMs �r/r:zPDFFontStream.__init__�s1��� �����(�T��:�:�:��8�}�}�� � � r1rOrQs@r/r�r��s8�������%�%�%�%�%�%�%�%�%r1r�c���eZdZ�fd�Z�xZS)�PDFXmpMetadatac����t���|�d�����td��|_td��|_dS)Nzutf-8�r��Metadata�XML)rAr:�encoderrBrCr�s �r/r:zPDFXmpMetadata.__init__�sJ��� �����(�/�/�'�":�":��;�;�;���$�$�� ��E�{�{�� � � r1rOrQs@r/r�r��s8�������#�#�#�#�#�#�#�#�#r1r�c�*��eZdZdZ d�fd� Z�xZS)� PDFXObject) �_id� _contents�filter�lengthrBrC�width�height� color_space�bits_per_component�decode� decode_parms�s_maskNc �&��t���|���td��|_t|��|_||_||_||_||_t|��|_ ||_ | |_ d|_ dS)Nr��XObject) rAr:rrBrCr�r�r�r�r�r�r�r�) r-r�rCr�r�r�r�� img_filterr�r�rMs �r/r:zPDFXObject.__init__�s���� �����(��+�+�+���O�O�� ��G�}�}�� ��� ��� �&���"4����:�&�&�� ��� �(����� � � r1rN�r2r3r4� __slots__r:rPrQs@r/r�r��sO��������I�0������������r1r�c�"��eZdZdZ�fd�Z�xZS)� PDFICCPObject)r�r�r�r��n� alternatec���t���|d���||_t|��|_dSr�)rAr:r�rr�)r-r�r�r�rMs �r/r:zPDFICCPObject.__init__�s:��� �����(�T��:�:�:�����i������r1r�rQs@r/r�r��s?��������I�)�)�)�)�)�)�)�)�)r1r�c��eZdZgd�Zdededefd�Zede fd���Z ede fd���Z d �Z defd �Zdefd �Zdefd �Zdefd �ZdS)� PDFPageLabel��_style�_prefix�st� label_style� label_prefix� label_startc�0�||_||_||_dSr*r�)r-r�r�r�s r/r:zPDFPageLabel.__init__�s��'2�� �(�� �"����r1�returnc�F�|jrt|jj��ndSr*)r�r�value�r-s r/�szPDFPageLabel.s�s!��*.�+�?�t�D�K�%�&�&�&�4�?r1c�<�|jrt|j��ndSr*)r�rr�s r/�pzPDFPageLabel.p�s��*.�,�@�y���&�&�&�D�@r1c�Z�|jr|jnd}|j�r |jtjkr|t |j��z }n�|jtjkr|t|j��z }n�|jtjkr*|t|j��� ��z }nq|jtj kr|t|jdz ��z }nA|jtj kr,|t|jdz ��� ��z }|dkrdn|S)N�r) r�r�r �NUMBER�strr�� UPPER_ROMANr� LOWER_ROMAN�lower� UPPER_LETTERr� LOWER_LETTER)r-�rets r/�__repr__zPDFPageLabel.__repr__�s ��"�l�2�d�l�l��� �;� ;��{�n�3�3�3��s�4�7�|�|�#������ :�:�:��y���)�)�)������ :�:�:��y���)�)�/�/�1�1�1������ ;�;�;��~�d�g��k�2�2�2������ ;�;�;��~�d�g��k�2�2�8�8�:�:�:���b�y�y�t�t�c�)r1c�T��t�fd�t���D����S)Nc�2��i|]}|t�|����Sr+rnrps �r/rsz*PDFPageLabel.serialize.<locals>.<dictcomp>s%���L�L�L�3�s�G�D�#�$6�$6�L�L�Lr1)rrxr�s`r/r0zPDFPageLabel.serialize s,����L�L�L�L�#�d�)�)�L�L�L�M�M�Mr1c��|jSr*)r�r�s r/� get_stylezPDFPageLabel.get_style� ���{�r1c��|jSr*)r�r�s r/� get_prefixzPDFPageLabel.get_prefixs ���|�r1c��|jSr*)r�r�s r/� get_startzPDFPageLabel.get_starts ���w�r1N)r2r3r4r�r r��intr:�propertyrr�rr�r��dictr0r�r�r�r+r1r/r�r��s#������+�+�+�I�#�)�#�9<�#�KN�#�#�#�#��@�4�@�@�@��X�@��A�9�A�A�A��X�A� *� *� *�N�4�N�N�N�N��>������C������3������r1r�c�h��eZdZdZ�fd�Zd�Zd�Zd�Zdedefd�Z d efd �Z d e fd �Z d �Z d �Z�xZS)�PDFPage)r�rBr��dur�trans�annots�group� media_box�struct_parents� resources�parent�_index� _width_pt� _height_pt� _page_label�_text_substitution_fragmentsc�V��t�����td��|_||_|r|nd|_||_t��|_d|_ d|_ d|_ d|_ d|_ ||_d\|_|_d|_g|_dS)N�Pager{)rAr:rrBr�r�r�rr�r�r�r�r�r�r�r�r�r�r�)r-�duration� transitionr��indexrMs �r/r:zPDFPage.__init__.s���� ����������L�L�� � �� �'�1�8�8�T����� ��j�j�� ��� ����"�������� ��� �*4�'�����)-���RT��)�)�)r1c��|jSr*)r�r�s r/r�z PDFPage.indexEr�r1c��|j|jfS)zGReturn a pair (width, height) in the unit specified to FPDF constructor�r�r�r�s r/� dimensionszPDFPage.dimensionsHs���~�t��.�.r1c�$�||c|_|_dS)zHAccepts a pair (width, height) in the unit specified to FPDF constructorNr�)r-�width_pt� height_pts r/�set_dimensionszPDFPage.set_dimensionsLs��*2�I�'������r1�previous_page_label� page_labelc���|ry|rw|���|���krM|���|���kr#|js|���dz|_|r|���sd|_|rL|sJt |���|���|���dz��}||_dS�Nr)r�r�r�r�r�r�)r-r�rs r/�set_page_labelzPDFPage.set_page_labelPs�� � @�� @��$�$�&�&�*=�*G�*G�*I�*I�I�I��%�%�'�'�+>�+I�+I�+K�+K�K�K��M�L�0�9�9�;�;�a�?�J�M� � "��'�'�)�)� "� !� � � � �z� �%�#�-�-�/�/�#�.�.�0�0�#�-�-�/�/�!�3���J� &����r1r�c��|jSr*)r�r�s r/�get_page_labelzPDFPage.get_page_labelis ����r1c�z�|js!t|�����nt|j��Sr*)r�r�r�r�s r/� get_labelzPDFPage.get_labells0��(,�(8�S�s�4�:�:�<�<� � � �c�$�BR�>S�>S�Sr1c��|jSr*)r�r�s r/�get_text_substitutionszPDFPage.get_text_substitutionsos ���0�0r1c�:�|j�|��dSr*)r��append)r-�fragments r/�add_text_substitutionzPDFPage.add_text_substitutionrs�� �)�0�0��:�:�:�:�:r1)r2r3r4r�r:r�r�r�r�rrr�rr r rPrQs@r/r�r�s���������I�&U�U�U�U�U�.���/�/�/�>�>�>�&�#/�&�=I�&�&�&�&�2 � � � � � �T�3�T�T�T�T�1�1�1�;�;�;�;�;�;�;r1r�c���eZdZ�fd�Z�xZS)� PDFPagesRootc���t�����td��|_||_||_d|_dS)N�Pages)rAr:rrB�countr��kids)r-rr�rMs �r/r:zPDFPagesRoot.__init__ws?��� ����������M�M�� ��� �"����� � � r1rOrQs@r/rrvs8���������������r1rc�&��eZdZ�fd�Zdd�Z�xZS)� PDFExtGStatec�V��t�����||_dSr*)rAr:� _dict_as_str)r-� dict_as_strrMs �r/r:zPDFExtGState.__init__�s'��� ��������'����r1Nc�&�|j�d|j�d�S)Nz 0 obj z endobj)�idr)r-rzr.s r/r0zPDFExtGState.serialize�s���'�>�>�4�#4�>�>�>�>r1r{)r2r3r4r:r0rPrQs@r/rrsL�������(�(�(�(�(� ?�?�?�?�?�?�?�?r1rc��eZdZd�Zdd�ZdS)�PDFXrefAndTrailerc�\�||_|jdz|_d|_d|_d|_dSr)�output_builder�obj_idr� catalog_obj�info_obj�encryption_obj)r-rs r/r:zPDFXrefAndTrailer.__init__�s6��,���#�*�Q�.�� ������ �"����r1Nc��|j}tt|j����}g}|�d��|�d|j����|�d��t d|j��D]&}|�|j|d�d����'|�d��|�d��|�d |j����|�d t|j j ������|�d t|j j ������|j }|j r<|�d t|j j ������|jj}n4|���}|d kr|�|j��}|r|�d|�d���|�d��|�d��|�|��|�d��d�|��S)N�xrefz0 z0000000000 65535 f r�010z 00000 n �trailer�<<z/Size z/Root z/Info z /Encrypt �����z/ID [�]�>>� startxrefz%%EOF� )rr�r��bufferr r�range�offsets�pdf_refr rr!�fpdfr"r.�file_id�_default_file_id�join)r-r.�builderr+�outrr1r2s r/r0zPDFXrefAndTrailer.serialize�s1���%����G�N�+�+�,�,� ��� � � �6���� � � �$�� �$�$�%�%�%� � � �(�)�)�)��A�t�z�*�*� B� B�F� �J�J�'�/�&�1�@�@�@�@� A� A� A� A� � � �9���� � � �4���� � � �(�D�J�(�(�)�)�)� � � �:�G�D�$4�$7�8�8�:�:�;�;�;� � � �7�G�D�M�$4�5�5�7�7�8�8�8��|�� � � @� �J�J�D�7�4�+>�+A�#B�#B�D�D� E� E� E��,�4�G�G��l�l�n�n�G��"�}�}��/�/���?�?�� � +� �J�J�)�w�)�)�)� *� *� *� � � �4���� � � �;���� � � �9���� � � �7�����y�y��~�~�r1r*r<r+r1r/rr�s7������#�#�#������r1rc���eZdZdZdd�Zd�Zd�Zd d�Zd �Ze d d��fd �Z d e fd �Z d�Z d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zed���Zd�ZdS)!�OutputProducerzVGenerates the final bytearray representing the PDF document, based on a FPDF instance.r1r c��||_g|_i|_d|_i|_i|_t t��|_t��|_ dS)Nr) r1�pdf_objs�iccp_i_to_pdf_irr/�trace_labels_per_obj_idrr��sections_size_per_trace_label� bytearrayr-)r-r1s r/r:zOutputProducer.__init__�sM���� ��� �!����� ��� �')��$�-8��-=�-=��*��k�k�� � � r1c �� �|j}|jrV|���}|dkr"|�t d����}|j�|��|j�t|j ����|� ��}|� ��}|� ��}|� ��}|jD]}|�|d���|�|��|���}|���\} } |���} |���} |���} t-|��}|j�|��t/|�|����|_|�|||d|| || ���g}|D]�}||_|jD]�}g}|jr|�|j��|jr4t?|jd��r|�|jj��|D]G}|j tC|��kr-tEd|j �d|�#���d�����H|�$|����|jsd |_��| D]}|�|j���|D])}tK||j d z j&��|_'�*|j(j)j*D]$}||� ��d z |_+�%||_,| |_-| |_.|j/rJd |j/�����|j0rJd tC|j0�������|jD]�}tc|td��rd }n@tC|j/��|j0|j&<|j3�4|j&��}|r\|�5|��5|�6|�7|j� ����d d d ��n #1swxYwY��|�6|�7|j� ������|�8��|j9r=tutv|j/|j9|j<|j=|j>|j?��|_/|j/S)z� This method alters the target FPDF instance by assigning IDs to all PDF objects, plus a few other properties on PDFPage instances r(r�embedded_files)�pages_root_obj�first_page_obj�sig_annotation_obj�xmp_metadata_obj�struct_tree_root_obj�outline_dict_obj�destz'Invalid reference to non-existing page z present on page z: Nrz@Nothing should have been appended to the .buffer at this stage: z.No offset should have been set at this stage: )r.)@r1r.r2r3r>�generate_passwordsr:r r6r9�_add_pages_root� _add_catalog� _add_pages�_add_annotations_as_objectsr@� _add_pdf_obj�_insert_resources�_add_structure_tree�_add_document_outline�_add_xmp_metadata� _add_info�_add_encryptionrr�_reorder_page_objectsr�_finalize_catalogr�r�rG�a�hasattr� page_numberr�� ValueErrorr��extendr0r�page_ref�struct_builder�doc_struct_elem�k�pgr r!r"r-r/� isinstancer(r<�get� _trace_size�_outr0�_log_final_sections_sizes� _sign_keyrr� _sign_cert�_sign_extra_certs�_sign_hashalgo� _sign_time)r-r1r2rAr � page_objsrC� embedded_filerErF� outline_itemsrDr!r"r$�dests�page_obj�annot� page_destsrG� outline_item� struct_elem�pdf_obj� trace_labels r/� bufferizezOutputProducer.bufferize�s{�� �y�� � !� ?��l�l�n�n�G��"�}�}��/�/� �$���@�@�� � "� 5� 5�g� >� >� >� � ���Y�t�'7�8�8�9�9�9��-�-�/�/���'�'�)�)� ��O�O�%�%� �!�=�=�?�?��!�0� ?� ?�M� � � �m�-=� >� >� >� >� ���y�)�)�)�#�7�7�9�9��*.�*D�*D�*F�*F�'��-��1�1�3�3���>�>�#�#���-�-�/�/�� ��&�&�� � ���T�"�"�"�'�t�'A�'A�)�'L�'L�M�M��� ��� �)�$�Q�<�1�-�!5�-� � � � ���!� '� '�H�,�H�O�!�� )� )��� ��:�2��%�%�e�j�1�1�1��7�4�w�u�w��7�7�4��%�%�e�g�l�3�3�3�&���D��'�#�i�.�.�8�8�(�}�d�FV�}�}�iq�iw�iw�iy�iy�}�}�}����9�� � �Z�(�(�(�(��?� '�"&����)� ,� ,�L� �L�L��*� +� +� +� +�� H� H�D�#�I�d�.>��.B�$C�$F�G�G�D�M�M��.�>�@� F� F�K�&�{�'>�'>�'@�'@�1�'D�E�K�N�N�&��� �� �,���� � \� \� [�d�k� [� [� \� \� �� � P� P� O�C�� �<M�<M� O� O� P� P� ��}� W� W�G��'�#3�4�4� K�"� � �+.�t�{�+;�+;�� �W�Z�(�"�:�>�>�w�z�J�J� �� W��%�%�k�2�2����I�I��)�)�D�<R�)�S�S����������������������� � � �'�+�+�d�>T�+�U�U�V�V�V�V� �&�&�(�(�(� �>� �&��� ������&��#�����D�K��{�s�/Q�Q �!Q c���t|t��s9t|t��st|��}|�d��}|xj|dzz c_dS)zAppend data to the buffer�latin1� N)r`�bytesr�r�r-)r-�datas r/rczOutputProducer._out.sZ���$��&�&� )��d�C�(�(� !��4�y�y���;�;�x�(�(�D� � � �t�e�|�#� � � � r1Nc��|xjdz c_|j|_|j�|��|r||j|j<|jSr)rrr:r r<)r-rsrts r/rMzOutputProducer._add_pdf_obj6sQ�� � � �q�� � ��[�� � � ���W�%�%�%� � D�8C�D� (��� 5��{�r1c��|j}t|jt|j�����}|�|��|S)N)rr�)r1r� pages_count�_dimensions_to_mediabox�default_page_dimensionsrM)r-r1rAs r/rIzOutputProducer._add_pages_root>sM���y��%��"�-�d�.J�K�K� � � �� ���.�)�)�)��r1rc� �|j}g}t|j�����|D]�}|jdkrt dddd�d���|_|���|jkr&t|�����|_ |� |d��|� |��t|j|j� ��}|� |d��||_��|S) Nz1.3z/Groupz /Transparency� /DeviceRGB)z/Typez/Sz/CSrurvr�r�)r1�listr��valuesr9ryr�r�rr~r�rMr rr�r�)r-�_slicer1rjrn�cs_objs r/rKzOutputProducer._add_pagesGs���y��� ��T�Z�.�.�0�0�1�1�&�9� '� '�H���%�'�'�!)�&�o�l�S�S�"�"�"�"����"�"�$�$��(D�D�D�%<�X�=P�=P�=R�=R�%S�%S��"� � � �h�� 0� 0� 0� � � �X� &� &� &�&�!�*�T�]����F� � � �f�g� .� .� .� &�H� � ��r1rjc���|jjs|S|���}t|jj��D];}|���}|�|jjj|���<|S)z|Reorder page objects to move any Table of Contents pages generated at the end of the document to follow the ToC placeholder.)r1�_toc_inserted_pages�copyr.�pop�insert�toc_placeholder� start_page)r-rj� reordered�_� last_pages r/rTz$OutputProducer._reorder_page_objects^sv���y�,� �� ��N�N�$�$� ��t�y�4�5�5� N� N�A�!� � ���I� � � �T�Y�6�A�9� M� M� M� M��r1c��d}|jj���D]^}|jD]T}t |t ��r=|�|��t |jt��r|� Jd���|}�U�_|S)Nz0A /Sig annotation is present on more than 1 page) r1r�r�r�r`r rM�vr)r-rCrn� annot_objs r/rLz*OutputProducer._add_annotations_as_objectshs���!��� ��.�.�0�0� 7� 7�H�%�_� 7� 7� ��i��7�7�7��%�%�i�0�0�0�!�)�+�y�9�9�7�.�6�6�M�7�6�6�-6�*�� 7�"�!r1c �0 ���i}t|jj���d����D�]��jdkrE�jdvrdnd}t d�j|���}|�|d��||�j<�S�jd k�r�d �j��}�j � ��}t�j ��d kr~d � d ��j dd�D����}t�j ��dkr|dt�j ��dz �d�z }t�d||��t!jdd���}|xjgd�z c_t!j|��}|�|���|� �j���fd��j ���D��} t/��} �j�| ��| �d ��| ���} t d|d���} |�| d��| |�j<t d|�jjt;������} |�| d��t=| g��| _g}d���j ���D]_\}}t|j ��d kr�|�!d|d�dd� �fd �|j D�����d!����`tEd"t|���d#d� |���d$���}|�|d��|| _#tI��}|�|d��|| _%�j}tM|��|_'|�|d��|| _(d%gd&zd&zd'z}| ���D]8\}}tS|d(z ��||d'z<tS|d)z��||d'zd*z<�9d� |��}tE|�*d+��d�,��}|�|d��|| _+tY| �-��}|�|d��||_-�j j.�/���j j0�/����1�����|S).Nc��|jSr*)�i)r�s r/�<lambda>z+OutputProducer._add_fonts.<locals>.<lambda>ws��d�f�r1�rr�core)�Symbol� ZapfDingbats�WinAnsiEncoding�Type1)rCrDrE�fonts�TTFzMPDFAA+rz, c3�K�|]L}dt|���dt|���d������d�V��MdS)�'z' (zunicode-escape�)N)�chrr�r�)rq�xs r/� <genexpr>z,OutputProducer._add_fonts.<locals>.<genexpr>�so����$�$��S�C��F�F�R�R�s�1�v�v�}�}�5E�'F�'F�'M�'M�'O�'O�R�R�R�$�$�$�$�$�$r1� z , ... (and z others)z+Font %s is missing the following glyphs: %sT)�notdef_outline�recommended_glyphs)�FFTM�GDEF�GPOS�GSUB�MATH�hdmx�meta)�glyphsc�V��i|]%\}}|�j�|j����&Sr+)�ttfont� getGlyphID� glyph_name)rq�glyph�char_idr�s �r/rsz-OutputProducer._add_fonts.<locals>.<dictcomp>�sB���!�!�!�&��w��T�[�3�3�E�4D�E�E�!�!�!r1�Type0z Identity-H� CIDFontType2)rCrDrFrGc�L�|dkrd|dz dz z}d|dzz}|d�|d��S|d�S)Ni��i�ir�i�i��04Xr+)�unicode� code_high�code_lows r/� format_codez.OutputProducer._add_fonts.<locals>.format_code�sR����'�'�$*�g��.?�B�-F�$F� �#)�W�u�_�#=��"+�?�?��?�?�?�?�%�+�+�+r1�<r�z> <r�c3�.�K�|]}�|��V��dSr*r+)rq�coder�s �r/r�z,OutputProducer._add_fonts.<locals>.<genexpr>�s-�����7d�7d�d� � �D�8I�8I�7d�7d�7d�7d�7d�7dr1z> z�/CIDInit /ProcSet findresource begin 12 dict begin begincmap /CIDSystemInfo <</Registry (Adobe) /Ordering (UCS) /Supplement 0 >> def /CMapName /Adobe-Identity-UCS def /CMapType 2 def 1 begincodespacerange <0000> <FFFF> endcodespacerange z beginbfchar zGendbfchar endcmap CMapName currentdict /CMap defineresource pop end end������rrwr�r�)2�sortedr1r�r�rB�namer>rMr�r�get_all_glyph_namesr��missing_glyphsr4�LOGGER�warning�ftsubset�Options� drop_tables� Subsetter�populater��itemsr�save�seek�read�desc� missing_width�_tt_font_widthsrrHr�r rrIrSrJr� font_namerKr�r�rLr�� font_file2�pick� cache_clear� get_glyph�close)r-�font_objs_per_indexrE� core_font_obj�fontname� glyph_names�msg�options� subsetter� code_to_glyph�output� ttfontstream�composite_font_obj� cid_font_obj�bfCharr�� code_mapped�to_unicode_obj�cid_system_info_obj�font_descriptor_obj�cid_to_gid_map�cc�cid_to_gid_map_obj�font_file_cs_objr�r�s @@r/� _add_fontszOutputProducer._add_fontsus����� ���4�9�?�1�1�3�3�9L�9L�M�M�M�d �d �D��y�F�"�"��y�(B�B�B�&�%��� !(�#�t�y�8�!�!�!� ��!�!�-��9�9�9�.;�#�D�F�+�+���e�#�#�0�T�Y�0�0��#�k�=�=�?�?� ��t�*�+�+�a�/�/��)�)�$�$�!%�!4�S�b�S�!9�$�$�$���C��4�.�/�/�"�4�4��T�S��1D�-E�-E��-J�T�T�T�T���N�N�E�x�QT����#�*�$�SW�X�X�X���#�#� (� (� (� �#�#�%�.�w�7�7� ��"�"�+�"�6�6�6�� � ���-�-�-�!�!�!�!�*.�+�*;�*;�*=�*=�!�!�!� � !����� � � ��(�(�(�� � �A����%�{�{�}�}� �&-�#�x�,�&�&�&�"��!�!�"4�g�>�>�>�.@�#�D�F�+� '�*�&�� �/�%�d�+�+�  � � � � �!�!�,��8�8�8�6>� �~�6N�6N�"�3� ��,�,�,�+/�+�*;�*;�*=�*=���&�E�;��5�=�)�)�Q�.�.� ��M�M�i�K�i�i�i����7d�7d�7d�7d�V[�Vc�7d�7d�7d�0d�0d�i�i�i�����"2���6�{�{����w�w�v������"�"��,�!�!�.�'�:�:�:�0>�"�-�&3�o�o�#��!�!�"5�w�?�?�?�1D� �.�&*�i�#�04�X���#�-��!�!�"5�w�?�?�?�/B� �,�#)��C��#�!5��!9��!.�!4�!4�!6�!6�C�C�I�B��-0��!��_�_�N�2��6�*�14�U�T�\�1B�1B�N�2��6�A�:�.�.�!#����!8�!8��&6�+�2�2�8�<�<�t�&�&�&�"��!�!�"4�g�>�>�>�2D� �/�#0�,�#G�#G�#G� ��!�!�"2�G�<�<�<�1A�#�.�� � �,�,�.�.�.�� �%�1�1�3�3�3�� � � � � ��"�"r1c���i}t|jjj���d����D],}|ddkr|�|��||d<�-|S)Nc��|dS)Nr�r+)�imgs r/r�z,OutputProducer._add_images.<locals>.<lambda>"s ��3�s�8�r1r��usagesrr�)r�r1� image_cache�imagesr�� _add_image)r-�img_objs_per_indexr�s r/� _add_imageszOutputProducer._add_imagessx����� �I� !� (� /� /� 1� 1�7K�7K� � � � D� D�C��8�}�q� � �/3���s�/C�/C�"�3�s�8�,��!�!r1c�0�|d}||jvr |j|Sd}|jjj���D]\}}||kr|}n�|�J�t ||d|d���}|�|d��}||j|<|S)z~ Returns the PDF object of the ICC profile indexed iccp_i in the FPDF object. Adds it if not present. �iccp_iN�dpn�cs)r�r�r��iccp)r;r1r�� icc_profilesr�r�rM)r-�img_infor�� iccp_content�iccp_cr��iccp_obj� iccp_pdf_is r/� _ensure_iccpzOutputProducer._ensure_iccp(s��� �(�#�� �T�)� )� )��'��/� /�� ���.�;�A�A�C�C� � �I�F�A���{�{�%� �����'�'�'� �!�X�e�_���� � � ���&�&�x��8�8� �'1���V�$��r1c ��t|d��}d}|�d��}|dkr-tddt|d��dzdz �g��}nW|�C|�|��}td t |��t d ��d g��}n|d kr |d durd}d|d�d|d�d�}t d|d|d|d||d|d||�� � }|�|d��|jj rId|vrEd|d��}|� |d|ddd|d||dd ���|_ d|vrct|d|jj �!��} |�| d��|j�t!| j����|S)"Nrr��Indexedz/Indexedr��pal�rz /ICCBased�0�R� DeviceCMYK�invertedTz[1 0 1 0 1 0 1 0]r'�dpz /BitsPerComponent �bpcr*�ImagerzrG�h�f) rCr�r�r�r�r�r�r�r�r��smaskz!/Predictor 15 /Colors 1 /Columns � DeviceGrayr�)rGrrrrrrzr�)rrarr�rr�r�rMr1�allow_images_transparencyr�r�rr�r�r r0r) r-�infor�r�r�rr��img_objr� pal_cs_objs r/r�zOutputProducer._add_image>s���4��:�&�&� ������(�#�#�� �)� #� #�"��\�c�$�u�+�.>�.>�!�.C�a�.G�+I�J���K�K�� ��*�*�4�0�0�J�"�K��Z���#�c�(�(�C�#P�Q�Q�K�K� �L� (� (��J��4�'�'�,��J�D��J�J�J�4��;�J�J�J� ����&�\��s�)���9�#�#�E�{��C�y��%�  �  �  �� ���'�8�,�,�,� �9� .� �7�d�?�?�@�T�#�Y�@�@�B�!�_�_��c���c��&���c��� ��M��� � �G�N� �� $� $�)��e��t�y�/A����J� � � �j�(� 3� 3� 3� � � &� &�w�z�}�'=�'=� >� >� >��r1c��t��}|jj���D]/\}}t |��}|�|d��|||<�0|S)N�gfxstate)rr1� _drawing_graphics_state_registryr�rrM)r-�gfxstate_objs_per_name� state_dictr�� gfxstate_objs r/�_add_gfxstateszOutputProducer._add_gfxstatestsh��!,���� $� � J� P� P� R� R� 8� 8� �J��'� �3�3�L� � � �l�J� 7� 7� 7�+7� "�4� (� (�%�%r1c���� � ����������� ����}�jjr%���� |��}|D] }||_� dSt|d���D]~\� }�fd��jj� D��}� fd��jj � D��}� �fd�|� ��D��}��|||��|_�dS)Nr)�startc�"��i|] }|�|�� Sr+r+)rq�font_idr�s �r/rsz4OutputProducer._insert_resources.<locals>.<dictcomp>�s1���,�,�,���0��9�,�,�,r1c�"��i|] }|�|�� Sr+r+)rq�img_idr�s �r/rsz4OutputProducer._insert_resources.<locals>.<dictcomp>�s1���+�+�+���.�v�6�+�+�+r1c�D��i|]\}}|�jj�v�||��Sr+)r1�$graphics_style_names_per_page_number)rq�gfx_name� gfx_staterXr-s ��r/rsz4OutputProducer._insert_resources.<locals>.<dictcomp>�sN���/�/�/�-��9���y�E�k�R�S�S��i�S�S�Sr1) r�r�r"r1�single_resources_object�_add_resources_dictr�� enumerate�fonts_used_per_page_number�images_used_per_page_numberr�) r-rjr�resources_dict_objrn�page_font_objs_per_index�page_img_objs_per_index�page_gfxstate_objs_per_namer�r�rXs ` @@@r/rNz OutputProducer._insert_resources|s������"�o�o�/�/��!�-�-�/�/��!%�!4�!4�!6�!6�� �9� ,� �!%�!9�!9�#�%7�9O�"�"� �&� 8� 8��%7��"�"� 8� 8�*3�9�A�)F�)F�)F� � �%� �X�,�,�,�,�#'�9�#G� �#T�,�,�,�(�+�+�+�+�"&�)�"G� �"T�+�+�+�'�/�/�/�/�/�1G�1M�1M�1O�1O�/�/�/�+� &*�%=�%=�,�+�/�&�&��"�"� � r1c��d}d\}}}|r8td�t|�����D����}|r8td�t|�����D����}|r+td�|���D����}t||||���}|�|��|S)Nz$[/PDF /Text /ImageB /ImageC /ImageI]rNc�D�i|]\}}d|��t|j����S)z/F�r0r)rqr��font_objs r/rsz6OutputProducer._add_resources_dict.<locals>.<dictcomp>�s>�����'��x�!��L�L�'�(�+�"6�"6���r1c�D�i|]\}}d|��t|j����S)z/Ir8)rqr�rs r/rsz6OutputProducer._add_resources_dict.<locals>.<dictcomp>�s>�����&��w�!��L�L�'�'�*�"5�"5���r1c�D�i|]\}}d|��t|j����S)�/r8)rqr�r!s r/rsz6OutputProducer._add_resources_dict.<locals>.<dictcomp>�s>�����*��l���J�J�� �� 8� 8���r1)r�r�r�r�)ryr�r�r�rM) r-r�r�rr�r�r�r�� resources_objs r/r.z"OutputProducer._add_resources_dict�s#��:��&6�#��h� � � ����+1�2E�2K�2K�2M�2M�+N�+N������D� � ����*0�1C�1I�1I�1K�1K�*L�*L������H� "� �"���.D�.J�.J�.L�.L������K�%��D�8�� � � � � ���-�(�(�(��r1c��|jj���rdSd}|jjD]}|�|}|�|d���|S)zDBuilds a Structure Hierarchy, including image alternate descriptionsN�structure_tree)r1r\�emptyrM)r-rErss r/rOz"OutputProducer._add_structure_tree�sf�� �9� #� )� )� +� +� ��4�#���y�/� 9� 9�G�#�+�'.�$� � � �g�'7� 8� 8� 8� 8�#�#r1c���|jjsdSdg}}t|jj��D]2}|�|}n|�|��|�|d���3||fS)N)Nr+�document_outline)r1�_outlinerr rM)r-rFrlrss r/rPz$OutputProducer._add_document_outline�s����y�!� ��8�*.��-��)�$�)�*<�=�=� ;� ;�G��'�#*� � ��$�$�W�-�-�-� � � �g�'9� :� :� :� :���.�.r1c��|jjsdSd|jj�d�}t|��}|�|��|S)Nu9<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> z <?xpacket end="w"?> )r1� xmp_metadatar�rM)r-�xpacketrss r/rQz OutputProducer._add_xmp_metadata�sO���y�%� ��4�~�t�y�Oe�~�~�~�� ��)�)�� ���'�"�"�"��r1c ��|j}d}|jrC t|jdd���}n*#t$r}t d|j����|�d}~wwxYwt |jt|dd��t|dd��t|dd��t|dd��t|dd��|� ��}|�|��|S) NT)�with_tzrWzCould not format date: rarbrcrdre)r`rarbrcrdrer^) r1r^r� Exceptionr r]r`rorM)r-r1r^�errorr!s r/rRzOutputProducer._add_info�s����y��� � � � � � '��(:�D�RV� W� W� W� � ��� � � �#�B�d�.@�B�B��������� ������*��D�)�T�2�2��4��4�0�0��T�:�t�4�4��D�)�T�2�2��T�:�t�4�4�'� � � �� ���(�#�#�#��s�*� A�A � Ac��|jjr7|jj}|���}|�|��|SdSr*)r1r.�get_encryption_objrM)r-�encryption_handlerrss r/rSzOutputProducer._add_encryption�sI�� �9� &� �!%��!<� �(�;�;�=�=�G� � � �g� &� &� &��N��tr1c��|j}tt|dd��|j|j|j���}|�|��|S)Nr�)r�r�r�r�)r1r}ror�r�r�rM)r-r1r s r/rJzOutputProducer._add_catalogsY���y�� ���v�t�,�,��(��n�#�6�  � � � � ���+�&�&�&��r1c ��|j}||_||_||_||_|r=t jt jz} tt|g��| ���|_ |j tvr(t|j��gt|j �} n.t|j��dddt|j dz ��g} t!| ��|_|rt%ddi��|_|jrCd�|jD��} t%dt%d t!| ��i��i��|_t-|j�����} t1|jj��D];} | ���}| �|jjj|���<d �t=| ��D��}|r5|jd ���s|�d d ��|r7t%dt|��� ��i��|_!dSdS)Nrir"r!�dz/Marked�truec���g|]e}|j� t|���������d|����������fS)ru)�globally_enclosedr�basenamer0� file_spec)rqrks r/� <listcomp>z4OutputProducer._finalize_catalog.<locals>.<listcomp>3sw�����!� �2���]�3�3�5�5�6�6�@�@�B�B�l�l�]�E\�E\�E^�E^�Eh�Eh�Ej�Ej�l�l���r1z/EmbeddedFilesz/Namesc���g|]]\}}|d����|�dt|d������������^S)rru)rryr0)rq�seq�pages r/rVz4OutputProducer._finalize_catalog.<locals>.<listcomp>?st�� � � ���d��A�w�%�%�'�'� �� E� E�X�d�1�g�4�4�6�6�@�@�B�B�C�C� E� E� � � r1rrz0 <<>>z/Nums)"r1r�r�r�r�r �SIGNATURES_EXIST� APPEND_ONLYrgrr�� zoom_mode� ZOOM_CONFIGSr0rr��pdf_listr�ryr�r@r�r�r�r.r�r�r�r�r�r/rr0� page_labels)r-r rArBrCrDrErFr1�flags� zoom_config�file_spec_names� ordered_pagesr�r�r_s r/rUz OutputProducer._finalize_catalogsq���y��*� ��';� �$�/� ��/� �� � �!�2�]�5N�N�E�$,��!3� 4�5�5��%�%�%�K� !� �>�\� )� )���)�*�*���d�n�-��K�K� ��)�*�*�����D�N�S�(�)�)� �K�#+�;�"7�"7� �� � B�$,�i��-@�$A�$A�K� !� � � ���%)�%8����O� !)�!�8�X�x��7P�7P�,Q�#R�#R�S�!�!�K� ��T�Z�-�-�/�/�0�0� ��t�y�4�5�5� R� R�A�%�)�)�+�+�I� � � ���!:�!E�y� Q� Q� Q� Q� � �(��7�7� � � � � � ,�t�z�!�}�;�;�=�=� ,� � � �q�(� +� +� +� � �&.��(�;�/�/�9�9�;�;�<�'�'�K� #� #� #� � r1c#�K�t|j��}dV�|j|xxt|j��|z z cc<dSr*)r�r-r=)r-�label� prev_sizes r/rbzOutputProducer._trace_sizeLsR������ �$�$� � ���� �*�5�1�1�1�S���5E�5E� �5Q�Q�1�1�1�1�1r1c���t�d��|j���D].\}}t�d|t |�����/dS)Nz4Final size summary of the biggest document sections:z- %s: %s)r��debugr=r�� _sizeof_fmt)r-re� section_sizes r/rdz(OutputProducer._log_final_sections_sizesRsg��� � �K�L�L�L�#'�#E�#K�#K�#M�#M� G� G� �E�<� �L�L��U�K� �,E�,E� F� F� F� F� G� Gr1)r1r r*)r2r3r4�__doc__r:rurcrMrI�slicerKr�rTrLr�r�rr�r"rNr.rOrPrQrRrSrJrUrrbrdr+r1r/r8r8�s�������\�\� "� "� "� "�m�m�m�^$�$�$��������!&��a��������.�t����� "� "� "�h#�h#�h#�T"�"�"����,4�4�4�l&�&�&����B'�'�'�R $� $� $� /� /� /�������,��� � � �<�<�<�|�R�R��^�R� G�G�G�G�Gr1r8Frc ��|r|�||||��\}}}}|r |}||z |z } n| }||z} d||zd�d||zd�d||zd�d| |zd�d|d�d� S)Nzq �.2fz 0 0 ruz cm /Ir�z Do Q)�scale_inside_box) rr��yrGr�keep_aspect_ratio�scale�pdf_height_to_flip�stream_h�stream_ys r/�stream_content_for_raster_imagervXs����7��*�*�1�a��A�6�6� ��1�a������%��)�A�-����2���q�5�� �Q��Y�7� � ��E�!1�7� � � ��I�5� � �$�u�,�5� � ��3�i� � � �r1c ��d}i}i}d}d}d}tt|j���d������}|D]�}||} | |dzkr�|j|krv|j||dkr/|�|g���|j��n(||���|}||jg||<d}d||<nB|r| }|jg||<n ||�|j��d}n| }|jg||<d}| }|j}��d} d} d} |} t|�����D]a\}}t|��}|| kr+| s)|| vs|d kr|| vr| |=|| ||z|| <||=n|} ||z} || vr|d k} | |=| dz} �_d} �bg}t|�����D]�\}}tt|����dkr8|�d |�d |t|��zdz �d |d�����]|�d |�d d � d �|D�����d �����dd� |���d�S)Nr�����r(Fc��|dSrr+)�items r/r�z!_tt_font_widths.<locals>.<lambda>zs ��t�A�w�r1r�rTr ruz [ c3�NK�|] }tt|����V��!dSr*)r�r�)rqrs r/r�z"_tt_font_widths.<locals>.<genexpr>�s.����'@�'@���C��F�F� � �'@�'@�'@�'@�'@�'@r1z ] �[r�r)) r�r�rr�� glyph_width� setdefaultr r�r��setr4)r��rangeid�range_�range_interval�prevcid� prevwidth�intervalr�r�� cid_mapped�prevk�nextk�prevint�rir^�ws�cwsrGs r/r�r�qs���G� �F��N��G��I��H��&���*�*�,�,�2F�2F�G�G�G� H� H�F��&�&���E�]� � �'�A�+� &� &�� �I�-�-��$��w���(:�:�:��%�%�g�r�2�2�9�9�%�:K�L�L�L�L��7�O�'�'�)�)�)�%�G�'0�%�2C�&D�F�7�O���*.��w�'�'��>�(�G�',�'8�&9�F�7�O�O��7�O�*�*�5�+<�=�=�=� ��� �G�$�0�1�F�7�O��H����%� � � �E� �E��G� �B��� � ���'�'�����2��"�g�g�� ��:�:�g�:�1�B�;�;�#��'�'��B�w�w��q�E�"�5�M�F�1�I�5�F�5�M��q� � ��E��C��� ��7�7��A�g�G��1�� �Q�J�E�E��G�G� �A��� � ���'�'�H�H���2� �s�2�w�w�<�<�1� � � �H�H�6��6�6�Q��R���[�1�_�6�6�r�!�u�6�6� 7� 7� 7� 7� �H�H�F��F�F�s�x�x�'@�'@�R�'@�'@�'@�@�@�F�F�F� G� G� G� G� �r�w�w�q�z�z� � � �r1c�"�|\}}d|d�d|d�d�S)Nz[0 0 rnrur)r+)r�r�r�s r/r~r~�s+��$��H�i� 2�8� 2� 2� 2�)� 2� 2� 2� 2�2r1�Bc�b�dD]%}t|��dkr |d�|�|��cS|dz}�&|d�d|��S)N)r��Ki�Mi�Gi�Ti�Pi�Ei�Ziiz3.1fz.1f�Yi)�abs)�num�suffix�units r/riri�sa��>���� �s�8�8�d�?�?��.�.��.�f�.�.� .� .� .� �t� ���� !� !� !�� !� !�!r1)FrN)r�)Nrk�logging� collectionsrr� contextlibr�ior� fontToolsrr�� annotationsr �enumsr r �errorsr � line_breakr �image_datastructuresr�outliner�signrr�syntaxrrrrrrrrryrr^rr0�utilrr�endesiver� ImportError�typingrr1r � getLoggerr2r�r]r(r6r>rSr]rgr}r�r�r�r�r�r�r�rrrr8rvr�r~rir+r1r/�<module>r�s���������0�0�0�0�0�0�0�0�%�%�%�%�%�%�������(�(�(�(�(�(�&�&�&�&�&�&�0�0�0�0�0�0�0�0�!�!�!�!�!�!�6�6�6�6�6�6�1�1�1�1�1�1�'�'�'�'�'�'�)�)�)�)�)�)�)�)�������������������9�8�8�8�8�8�2�2�2�2�2�2�'�'�'�'�'�'�+�+�+�+�+�+�+�+�������������� �F�F�F�����!� � � � � ��������� �� �8� $� $���"� )��� � � � � � � � � � *�*�*�*�*� �*�*�*� '� '� '� '� '�i� '� '� '� �����I����+�+�+�+�+�i�+�+�+�* 2� 2� 2� 2� 2� 2� 2� 2�%�%�%�%�%��%�%�%�('�'�'�'�'�9�'�'�'�%�%�%�%�%�$�%�%�%� #�#�#�#�#�%�#�#�#�'�'�'�'�'�!�'�'�'�T)�)�)�)�)�$�)�)�)�*+�+�+�+�+�+�+�+�\Y;�Y;�Y;�Y;�Y;�i�Y;�Y;�Y;�x�����9����?�?�?�?�?�9�?�?�?�%�%�%�%�%�(�%�%�%�Pd G�d G�d G�d G�d G�d G�d G�d G�Z� ���� �����2A�A�A�H3�3�3� "�"�"�"�"�"s�<B�B � B 
Memory