§
    ¥”jq5  ã                   óD  — d Z ddlZddlZddlmZ ddlmZ ddl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 ddl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" ddl#m$Z$m%Z% ddl&m'Z' ddl(m)Z)  G d„ d¦  «        Z* G d„ d¦  «        Z+ G d„ d¦  «        Z,dS )zDocument generation management.é    N)Úmd5)ÚPathé   )ÚCSSÚDEFAULT_OPTIONS)Úgather_anchorsÚmake_page_bookmark_tree)Úget_all_computed_styles)ÚCounterStyle)ÚTargetCollector)Ú	draw_page)Úbuild_formatting_structure)Úget_html_metadata)Úget_image_from_uri)ÚLayoutContextÚlayout_document)ÚPROGRESS_LOGGER)ÚMatrix)ÚVARIANTSÚgenerate_pdf)ÚDocumentMetadata)ÚFontConfigurationc                   ó    — e Zd ZdZd„ Zdd„ZdS )ÚPagezRepresents a single rendered page.

    Should be obtained from :attr:`Document.pages` but not
    instantiated directly.

    c                 ó*  ‡— ‰                      ¦   «         | _        ‰                     ¦   «         | _        ˆfd„dD ¦   «         | _        g | _        g | _        i | _        d g i| _        t          ‰| j        | j        | j        | j        ¦  «         ‰| _
        d S )Nc                 ó<   •— i | ]}|‰j         d |› �         j        “ŒS )Úbleed_)ÚstyleÚvalue)Ú.0ÚsideÚpage_boxs     €úb/var/www/finuniver-perm.ru/html/portfolio/venv/lib/python3.11/site-packages/weasyprint/document.pyú
<dictcomp>z!Page.__init__.<locals>.<dictcomp>*   s;   ø€ ð <ð <ð <àð �(”. ¨$  Ô1Ô7ð<ð <ð <ó    )ÚtopÚrightÚbottomÚleft)Úmargin_widthÚwidthÚmargin_heightÚheightÚbleedÚ	bookmarksÚlinksÚanchorsÚformsr   Ú	_page_box)Úselfr"   s    `r#   Ú__init__zPage.__init__!   s¦   ø€ à×*Ò*Ñ,Ô,ˆŒ
ð ×,Ò,Ñ.Ô.ˆŒð<ð <ð <ð <à:ð<ñ <ô <ˆŒ
ð ˆŒð ˆŒ
ð ˆŒð ˜B�ZˆŒ
å�x ¤¨t¬z¸4¼>È4Ì:ÑVÔVÐVØ!ˆŒˆˆr%   r   c                 ó¸   — |                      ¦   «         5  |                     ||¬¦  «         t          | j        |¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z!Paint the page into the PDF file.©ÚaÚdN)ÚstackedÚ	transformr   r3   )r4   ÚstreamÚscales      r#   Úpaintz
Page.paintS   s¡   € à�^Š^ÑÔð 	.ð 	.Ø×Ò˜u¨ÐÑ.Ô.Ð.Ý�d”n fÑ-Ô-Ð-ð	.ð 	.ð 	.ñ 	.ô 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.øøøð 	.ð 	.ð 	.ð 	.ð 	.ð 	.s   •-AÁAÁAN)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r5   r>   © r%   r#   r   r      sB   € € € € € ðð ð0"ð 0"ð 0"ðd.ð .ð .ð .ð .ð .r%   r   c                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	Ú	DiskCachez¸Dict-like storing images content on disk.

    Bytestring values are stored on disk. Other lightweight Python objects
    (i.e. RasterImage instances) are still stored in memory.

    c                 óš   — t          |¦  «        | _        | j                             dd¬¦  «         i | _        t	          ¦   «         | _        d S )NT)ÚparentsÚexist_ok)r   Ú_pathÚmkdirÚ_memory_cacheÚsetÚ_disk_paths)r4   Úfolders     r#   r5   zDiskCache.__init__b   sD   € Ý˜&‘\”\ˆŒ
ØŒ
×Ò °ÐÑ5Ô5Ð5ØˆÔÝ™5œ5ˆÔÐÐr%   c                 ó€   — t          |                     ¦   «         d¬¦  «                             ¦   «         }| j        |z  S )NF)Úusedforsecurity)r   ÚencodeÚ	hexdigestrI   )r4   ÚkeyÚdigests      r#   Ú_path_from_keyzDiskCache._path_from_keyh   s5   € Ý�S—Z’Z‘\”\°5Ð9Ñ9Ô9×CÒCÑEÔEˆØŒz˜FÑ"Ð"r%   c                 ó|   — || j         v r| j         |         S |                      |¦  «                             ¦   «         S ©N)rK   rU   Ú
read_bytes©r4   rS   s     r#   Ú__getitem__zDiskCache.__getitem__l   s>   € Ø�$Ô$Ð$Ð$ØÔ% cÔ*Ð*à×&Ò& sÑ+Ô+×6Ò6Ñ8Ô8Ð8r%   c                 óÐ   — t          |t          ¦  «        rF|                      |¦  «        }| j                             |¦  «         |                     |¦  «         d S || j        |<   d S rW   )Ú
isinstanceÚbytesrU   rM   ÚaddÚwrite_bytesrK   )r4   rS   r   Úpaths       r#   Ú__setitem__zDiskCache.__setitem__r   sk   € Ý�e�UÑ#Ô#ð 	,Ø×&Ò& sÑ+Ô+ˆDØÔ× Ò  Ñ&Ô&Ð&Ø×Ò˜UÑ#Ô#Ð#Ð#Ð#à&+ˆDÔ˜sÑ#Ð#Ð#r%   c                 ób   — || j         v p&|                      |¦  «                             ¦   «         S rW   )rK   rU   ÚexistsrY   s     r#   Ú__contains__zDiskCache.__contains__z   s4   € à�4Ô%Ð%ð .Ø×Ò Ñ$Ô$×+Ò+Ñ-Ô-ð	/r%   c                 óœ   — 	 | j         D ]}|                     d¬¦  «         Œ| j                             ¦   «          d S # t          $ r Y d S w xY w)NT)Ú
missing_ok)rM   ÚunlinkrI   ÚrmdirÚ	Exception)r4   r`   s     r#   Ú__del__zDiskCache.__del__   sl   € ð	ØÔ(ð -ð -�Ø—’ t�Ñ,Ô,Ð,Ð,ØŒJ×ÒÑÔÐÐÐøÝð 	ð 	ð 	àˆDˆDð	øøøs   ‚9= ½
AÁ
AN)
r?   r@   rA   rB   r5   rU   rZ   ra   rd   rj   rC   r%   r#   rE   rE   Z   sx   € € € € € ðð ð!ð !ð !ð#ð #ð #ð9ð 9ð 9ð,ð ,ð ,ð/ð /ð /ð
ð ð ð ð r%   rE   c                   ó\   — e Zd ZdZed„ ¦   «         Zed„ ¦   «         Zd„ Zdd„Zdd	„Z	dd„Z
d
S )ÚDocumenta“  A rendered document ready to be painted in a pydyf stream.

    Typically obtained from :meth:`HTML.render() <weasyprint.HTML.render>`, but
    can also be instantiated directly with a list of :class:`pages <Page>`, a
    set of :class:`metadata <DocumentMetadata>`, a :class:`url_fetcher
    <weasyprint.urls.URLFetcher>`, and a :class:`font_config
    <weasyprint.text.fonts.FontConfiguration>`.

    c                 ó  — t          ¦   «         }g }g }g }	|d         }
|
€i }
n+t          |
t          t          f¦  «        st          |
¦  «        }
|d         pg D ]@}t	          |d¦  «        st          ||j        |||¬¦  «        }|	                     |¦  «         ŒAt          ||	|d         |||||||d         ¦
  «
        }t          j
        t          |
|j        |¬¦  «        }t          j        d¦  «         t          |||||¦  «        }|S )	NÚcacheÚstylesheetsÚmatcher)ÚguessÚ
media_typeÚfont_configÚcounter_styleÚcolor_profilesÚpresentational_hintsÚ	pdf_forms)rn   Úurl_fetcherÚoptionsz&Step 4 - Creating formatting structure)r   r\   ÚdictrE   Úhasattrr   rr   Úappendr
   Ú	functoolsÚpartialÚoriginal_get_image_from_urirx   r   Úinfor   )ÚclsÚhtmlrs   rt   ru   ry   Útarget_collectorÚ
page_rulesÚlayersÚuser_stylesheetsrn   ÚcssÚ	style_forr   Úcontexts                  r#   Ú_build_layout_contextzDocument._build_layout_context”   sR  € õ +Ñ,Ô,ÐØˆ
ØˆØÐØ˜Ô ˆØˆ=ØˆEˆEÝ˜E¥D­)Ð#4Ñ5Ô5ð 	%Ý˜eÑ$Ô$ˆEØ˜=Ô)Ð/¨Rð 	)ð 	)ˆCÝ˜3 	Ñ*Ô*ð 3ÝØ¨$¬/Ø +¸=Ø#1ð3ñ 3ô 3�ð ×#Ò# CÑ(Ô(Ð(Ð(Ý+ØÐ" GÐ,BÔ$CÀ[Ø˜>¨:°vÐ?OØ�KÔ ñ"ô "ˆ	õ 'Ô.Ý'¨uØÔ(°'ð;ñ ;ô ;Ðõ 	ÔÐEÑFÔFÐFÝØÐ)¨;¸Øñô ˆð ˆr%   c           
      ó€  — |€t          ¦   «         }|€t          ¦   «         }|€i }|                      |||||¦  «        }t          |j        |j        |j        |j        |j        ||j	        ¦  «        }t          |||¦  «        } | d„ |D ¦   «         t          di t          |¦  «        ¤Ž|j        ||¦  «        }	||	_        |	S )Nc                 ó,   — g | ]}t          |¦  «        ‘ŒS rC   )r   )r    r"   s     r#   ú
<listcomp>z$Document._render.<locals>.<listcomp>É   s   € Ð7Ð7Ð7 �T�(‰^Œ^Ð7Ð7Ð7r%   rC   )r   r   rŠ   r   Úetree_elementrˆ   r   Úbase_urlrƒ   Ú	footnotesr   r   r   rx   Ú_html)
r�   r‚   rs   rt   ru   ry   r‰   Úroot_boxÚ
page_boxesÚ	renderings
             r#   Ú_renderzDocument._render´   sê   € àÐÝ+Ñ-Ô-ˆKàÐ Ý(™NœNˆMàÐ!ØˆNà×+Ò+Ø�+˜}¨n¸gñGô Gˆõ .ØÔ Ô 1°7Ô3MØŒM˜7Ô3°]ØÔñô ˆõ
 % T¨8°WÑ=Ô=ˆ
Ø�CØ7Ð7¨JÐ7Ñ7Ô7ÝÐ7Ð7Õ0°Ñ6Ô6Ð7Ð7ØÔ˜k¨>ñ;ô ;ˆ	ð ˆ	ŒØÐr%   c                 óZ   — || _         || _        || _        i | _        || _        || _        d S rW   )ÚpagesÚmetadatarx   Úfontsrs   ru   )r4   r—   r˜   rx   rs   ru   s         r#   r5   zDocument.__init__Ï   s;   € àˆŒ
ð !ˆŒà&ˆÔð ˆŒ
ð
 'ˆÔà,ˆÔÐÐr%   Úallc                 óÆ   — |dk    r| j         }n$t          |t          ¦  «        st          |¦  «        } t          | ¦  «        || j        | j        | j        | j        ¦  «        S )aP  Take a subset of the pages.

        :type pages: :term:`iterable`
        :param pages:
            An iterable of :class:`Page` objects from :attr:`pages`.
        :return:
            A new :class:`Document` object.

        Examples:

        Write two PDF files for odd-numbered and even-numbered pages::

            # Python lists count from 0 but pages are numbered from 1.
            # [::2] is a slice of even list indexes but odd-numbered pages.
            document.copy(document.pages[::2]).write_pdf('odd_pages.pdf')
            document.copy(document.pages[1::2]).write_pdf('even_pages.pdf')

        Combine multiple documents into one PDF file,
        using metadata from the first::

            all_pages = [p for doc in documents for p in doc.pages]
            documents[0].copy(all_pages).write_pdf('combined.pdf')

        rš   )r—   r\   ÚlistÚtyper˜   rx   rs   ru   )r4   r—   s     r#   ÚcopyzDocument.copyã   sd   € ð2 �EŠ>ˆ>Ø”JˆEˆEÝ˜E¥4Ñ(Ô(ð 	 Ý˜‘K”KˆEØ�t�D‰zŒzØ�4”= $Ô"2°DÔ4DØÔñ!ô !ð 	!r%   r   Fc           	      óÒ   — g }g }|g}d}t          | j        ¦  «        D ]H\  }}|rt          || |j        |z  ¬¦  «        }	nt          ||¬¦  «        }	t	          ||||||	¦  «        }ŒI|S )aE  Make a tree of all bookmarks in the document.

        :param float scale:
            Zoom scale.
        :param bool transform_pages:
            A boolean defining whether the default PDF page transformation
            matrix has to be applied to bookmark coordinates, setting the
            bottom-left corner as the origin.
        :return: A list of bookmark subtrees.
            A subtree is ``(label, target, children, state)``. ``label`` is
            a string, ``target`` is ``(page_number, x, y)``  and ``children``
            is a list of child subtrees.

        r   )r8   r9   Úfr7   )Ú	enumerater—   r   r-   r	   )
r4   r=   Útransform_pagesÚrootÚskipped_levelsÚlast_by_depthÚprevious_levelÚpage_numberÚpageÚmatrixs
             r#   Úmake_bookmark_treezDocument.make_bookmark_tree  s™   € ð ˆð
 ˆØ˜ˆØˆÝ!*¨4¬:Ñ!6Ô!6ð 	%ð 	%ÑˆK˜Øð 2Ý %¨E¨6°T´[À5Ñ5HÐIÑIÔI��å %¨5Ð1Ñ1Ô1�Ý4Ø�n m°^Ø˜Vñ%ô %ˆNˆNð ˆr%   Nc                 ó®  — t          j        ¦   «         }|                     |¦  «         |}|d         x}r>t          |         \  }}d|v r|d         s|d         |d<   d|v r|d         s|d         |d<   t	          | ||fi |¤Ž}	|r || |	¦  «         |d         }
|d          }|d         }|€?t          j        ¦   «         }|	                     |||
|¦  «         |                     ¦   «         S t          |d¦  «        r|	                     |||
|¦  «         dS t          |d	¦  «        5 }|	                     |||
|¦  «         ddd¦  «         dS # 1 swxY w Y   dS )
a¤  Paint the pages in a PDF file, with metadata.

        :type target:
            :class:`str`, :class:`pathlib.Path` or :term:`file object`
        :param target:
            A filename where the PDF file is generated, a file object, or
            :obj:`None`.
        :param float zoom:
            The zoom factor in PDF units per CSS units.  **Warning**:
            All CSS units are affected, including physical units like
            ``cm`` and named sizes like ``A4``.  For values other than
            1, the physical CSS units will thus be "wrong".
        :type finisher: :term:`callable`
        :param finisher:
            A finisher function or callable that accepts the document and a
            :class:`pydyf.PDF` object as parameters. Can be passed to perform
            post-processing on the PDF right before the trailer is written.
        :param options:
            The ``options`` parameter includes by default the
            :data:`weasyprint.DEFAULT_OPTIONS` values.
        :returns:
            The PDF as :obj:`bytes` if ``target`` is not provided or
            :obj:`None`, otherwise :obj:`None` (the PDF is written to
            ``target``).

        Úpdf_variantÚversionÚpdf_versionÚ
identifierÚpdf_identifierÚuncompressed_pdfNÚwriteÚwb)r   rž   Úupdater   r   ÚioÚBytesIOr²   Úgetvaluer{   Úopen)r4   ÚtargetÚzoomÚfinisherry   Únew_optionsÚvariantÚ_Ú
propertiesÚpdfr¯   Úcompressr­   ÚoutputÚfds                  r#   Ú	write_pdfzDocument.write_pdf%  sß  € õ6 &Ô*Ñ,Ô,ˆØ×Ò˜7Ñ#Ô#Ð#Øˆð ˜mÔ,Ð,ˆ7ð 	EÝ$ WÔ-‰MˆAˆzØ˜JÐ&Ð&¨w°}Ô/EÐ&Ø)3°IÔ)>�˜Ñ&Ø˜zÐ)Ð)°'Ð:JÔ2KÐ)Ø,6°|Ô,D�Ð(Ñ)å˜4 ¨Ð9Ð9°Ð9Ð9ˆàð 	 ØˆH�T˜3ÑÔÐàÐ-Ô.ˆ
ØÐ1Ô2Ð2ˆØ˜-Ô(ˆàˆ>Ý”Z‘\”\ˆFØ�IŠI�f˜g z°8Ñ<Ô<Ð<Ø—?’?Ñ$Ô$Ð$å�6˜7Ñ#Ô#ð 	=Ø�IŠI�f˜g z°8Ñ<Ô<Ð<Ð<Ð<å�f˜dÑ#Ô#ð = rØ—	’	˜"˜g z°8Ñ<Ô<Ð<ð=ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =s   Ä$E
Å
EÅE)rš   )r   F)Nr   N)r?   r@   rA   rB   ÚclassmethodrŠ   r•   r5   rž   rª   rÄ   rC   r%   r#   rl   rl   ‰   s¡   € € € € € ðð ð ðð ñ „[ðð> ðð ñ „[ðð4-ð -ð -ð(!ð !ð !ð !ðBð ð ð ðB9=ð 9=ð 9=ð 9=ð 9=ð 9=r%   rl   )-rB   r}   rµ   Úhashlibr   Úpathlibr   Ú r   r   r1   r   r	   r‡   r
   Úcss.countersr   Úcss.targetsr   Údrawr   Úformatting_structure.buildr   r‚   r   Úimagesr   r   Úlayoutr   r   Úloggerr   r©   r   rÀ   r   r   Úpdf.metadatar   Ú
text.fontsr   r   rE   rl   rC   r%   r#   ú<module>rÒ      sø  ðØ %Ð %à Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ø <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø (Ð (Ð (Ð (Ð (Ð (Ø &Ð &Ð &Ð &Ð &Ð &Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ BØ #Ð #Ð #Ð #Ð #Ð #Ø EÐ EÐ EÐ EÐ EÐ EØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø *Ð *Ð *Ð *Ð *Ð *Ø )Ð )Ð )Ð )Ð )Ð )ð>.ð >.ð >.ð >.ð >.ñ >.ô >.ð >.ðB,ð ,ð ,ð ,ð ,ñ ,ô ,ð ,ð^U=ð U=ð U=ð U=ð U=ñ U=ô U=ð U=ð U=ð U=r%   