§
    ŽŸjt  ã                   óÄ   — d Z ddlZddl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mZmZmZ ddlmZ  e
j        d¦  «        duZej        dk    Z G d	„ d
e¦  «        ZdS )z$Export to PDF via a headless browseré    N)Úutil)ÚBoolÚIntÚListÚUnicodeÚdefaulté   )ÚHTMLExporterÚ
playwrightÚntc                   ó   ‡ — e Zd ZdZdZ edd¬¦  «                             d¬¦  «        Z edd¬¦  «                             d¬¦  «        Z e	d	d
¬¦  «                             d¬¦  «        Z
 ed¦  «        d„ ¦   «         Z ed¦  «        d„ ¦   «         Z ed¦  «        d„ ¦   «         Z edd¬¦  «                             d¬¦  «        Z e e¦   «         d¬¦  «                             d¬¦  «        Zd„ Zdˆ fd„	Zˆ xZS )ÚWebPDFExporterz¹Writer designed to write to PDF files.

    This inherits from :class:`HTMLExporter`. It creates the HTML using the
    template machinery, and then run playwright to create a pdf.
    zPDF via HTMLFzTWhether to allow downloading Chromium if no suitable version is found on the system.)ÚhelpT)ÚconfigzÂ
        Split generated notebook into multiple pages.

        If False, a PDF with one long page will be generated.

        Set to True to match behavior of LaTeX based PDF generator
        éd   zÚ
        Time to wait for the page to render before converting to PDF, in milliseconds.
        Increase this value if your notebook has a lot of complex JavaScript
        output that needs more time to load.
        Úfile_extensionc                 ó   — dS )Nz.pdf© ©Úselfs    úg/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/nbconvert/exporters/webpdf.pyÚ_file_extension_defaultz&WebPDFExporter._file_extension_default8   s   € àˆvó    Útemplate_extensionc                 ó   — dS )Nz.html.j2r   r   s    r   Ú_template_extension_defaultz*WebPDFExporter._template_extension_default<   s	   € ð ˆzr   Útemplate_namec                 ó   — dS )NÚwebpdfr   r   s    r   Ú_template_name_defaultz%WebPDFExporter._template_name_defaultA   s   € àˆxr   a  
        Disable chromium security sandbox when converting to PDF.

        WARNING: This could cause arbitrary code execution in specific circumstances,
        where JS in your notebook can execute serverside code! Please use with
        caution.

        ``https://github.com/puppeteer/puppeteer/blob/main@%7B2020-12-14T17:22:24Z%7D/docs/troubleshooting.md#setting-up-chrome-linux-sandbox``
        has more information.

        This is required for webpdf to work inside most container environments.
        zð
        Additional arguments to pass to the browser rendering to PDF.

        These arguments will be passed directly to the browser launch method
        and can be used to customize browser behavior beyond the default settings.
        c                 óæ  ‡ — ˆ fd„}t           j                             ¦   «         }t          j        dd¬¦  «        }|5  |                     |                     d¦  «        ¦  «         ddd¦  «         n# 1 swxY w Y   	 |                     t          j	         ||¦  «        ¦  «         
                    ¦   «         }t          j        |j        ¦  «         n# t          j        |j        ¦  «         w xY w|S )zRun playwright.c              “   ó   •K  — 	 ddl m} n$# t          $ r}d}t          |¦  «        |‚d}~ww xY w‰j        r%t
          j        ddddg}t          j        |¦  «          |¦   «          	                    ¦   «         ƒ d{V —†}|j
        }‰j        }‰j        r|                     d	¦  «         	 |                     d
d
d
|¬¦  «        ƒ d{V —†}n># t          $ r1}d}|                     ¦   «         ƒ d{V —† t          |¦  «        |‚d}~ww xY w|                     ¦   «         ƒ d{V —†}	|	                     d¬¦  «        ƒ d{V —† |	                     d¦  «        ƒ d{V —† |	                     d| j        › �d¬¦  «        ƒ d{V —† |	                     ‰j        ¦  «        ƒ d{V —† ddi}
‰j        s_|	                     d¦  «        ƒ d{V —†}|d         }|d         }|
                     t5          |d¦  «        t5          |d¦  «        dœ¦  «          |	j        di |
¤Žƒ d{V —†}|                     ¦   «         ƒ d{V —† |                     ¦   «         ƒ d{V —† |S )zRun main playwright script.r   )Úasync_playwrightzhPlaywright is not installed to support Web PDF conversion. Please install `nbconvert[webpdf]` to enable.Nz-mr   ÚinstallÚchromiumz--no-sandboxF)Úhandle_sigintÚhandle_sigtermÚhandle_sighupÚargsz§No suitable chromium executable found on the system. Please use '--allow-chromium-download' to allow downloading one,or install it using `playwright install chromium`.Úprint)Úmediar   zfile://Únetworkidle)Ú
wait_untilÚprint_backgroundTa  () => {
                    const rect = document.body.getBoundingClientRect();
                    return {
                    width: Math.ceil(rect.width) + 1,
                    height: Math.ceil(rect.height) + 1,
                    }
                }ÚwidthÚheighti@8  )r/   r0   r   )Úplaywright.async_apir#   ÚModuleNotFoundErrorÚRuntimeErrorÚallow_chromium_downloadÚsysÚ
executableÚ
subprocessÚ
check_callÚstartr%   Úbrowser_argsÚdisable_sandboxÚappendÚlaunchÚ	ExceptionÚstopÚnew_pageÚemulate_mediaÚwait_for_timeoutÚgotoÚnameÚpage_render_timeoutÚpaginateÚevaluateÚupdateÚminÚpdfÚclose)Ú	temp_filer#   ÚeÚmsgÚcmdr   r%   r)   ÚbrowserÚpageÚ
pdf_paramsÚ
dimensionsr/   r0   Úpdf_datar   s                  €r   Úmainz+WebPDFExporter.run_playwright.<locals>.mainb   s}  øè è € ð	/ðð ð ð ð ð ð øõ 'ð /ð /ð /ðDð õ # 3Ñ'Ô'¨QÐ.øøøøð/øøøð Ô+ð +Ý”~ t¨\¸9ÀjÐQ�ÝÔ% cÑ*Ô*Ð*à/Ð/Ñ1Ô1×7Ò7Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9ˆJØ!Ô*ˆHàÔ$ˆDØÔ#ð ,Ø—’˜NÑ+Ô+Ð+ð/Ø (§¢Ø"'¸ÈUÐY]ð !0ñ !ô !ð ð ð ð ð ð ��øõ ð /ð /ð /ðIð ð
 !—o’oÑ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'Ý" 3Ñ'Ô'¨QÐ.øøøøð/øøøð !×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+ˆDØ×$Ò$¨7Ð$Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø×'Ò'¨Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø—)’)Ð6 i¤nÐ6Ð6À=�)ÑQÔQÐQÐQÐQÐQÐQÐQÐQØ×'Ò'¨Ô(@ÑAÔAÐAÐAÐAÐAÐAÐAÐAà,¨dÐ3ˆJØ”=ð ð $(§=¢=ðñ$ô $ð ð ð ð ð ð �
ð # 7Ô+�Ø# HÔ-�à×!Ò!å!$ U¨HÑ!5Ô!5Ý"% f¨hÑ"7Ô"7ðð ñô ð ð &˜TœXÐ3Ð3¨
Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ˆHà—-’-‘/”/Ð!Ð!Ð!Ð!Ð!Ð!Ð!Ø—/’/Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ØˆOs(   … Œ
-–(¨-Â)C	 Ã	
DÃ,C?Ã?Dz.htmlF)ÚsuffixÚdeletezutf-8N)Ú
concurrentÚfuturesÚThreadPoolExecutorÚtempfileÚNamedTemporaryFileÚwriteÚencodeÚsubmitÚasyncioÚrunÚresultÚosÚunlinkrD   )r   ÚhtmlrU   ÚpoolrL   rT   s   `     r   Úrun_playwrightzWebPDFExporter.run_playwright_   s3  ø€ ðF	ð F	ð F	ð F	ð F	õP Ô!×4Ò4Ñ6Ô6ˆõ Ô/Ø 5ð
ñ 
ô 
ˆ	ð ð 	2ð 	2Ø�OŠO˜DŸKšK¨Ñ0Ô0Ñ1Ô1Ð1ð	2ð 	2ð 	2ñ 	2ô 	2ð 	2ð 	2ð 	2ð 	2ð 	2ð 	2øøøð 	2ð 	2ð 	2ð 	2ð	&Ø—{’{¥7¤;°°°Y±´Ñ@Ô@×GÒGÑIÔIˆHõ ŒI�i”nÑ%Ô%Ð%Ð%ø�BŒI�i”nÑ%Ô%Ð%Ð%øøøØˆs   ½)A2Á2A6Á9A6Á>;C ÃC.Nc                 óÜ   •—  t          ¦   «         j        |fd|i|¤Ž\  }}| j                             d¦  «         |                      |¦  «        }| j                             d¦  «         ||fS )zConvert from a notebook node.Ú	resourceszBuilding PDFzPDF successfully created)ÚsuperÚfrom_notebook_nodeÚlogÚinforg   )r   Únbri   Úkwre   rT   Ú	__class__s         €r   rk   z!WebPDFExporter.from_notebook_node¼   sr   ø€ à4�%™'œ'Ô4°RÐSÐSÀ9ÐSÐPRÐSÐS‰ˆˆiàŒ�Š�nÑ%Ô%Ð%Ø×&Ò& tÑ,Ô,ˆØŒ�ŠÐ0Ñ1Ô1Ð1à˜Ð"Ð"r   )N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úexport_from_notebookr   Útagr4   rF   r   rE   r   r   r   r    r;   r   r   r:   rg   rk   Ú__classcell__)rp   s   @r   r   r      sÜ  ø€ € € € € ðð ð *Ðà"˜dØØcðñ ô ÷ 
‚c�€cÑÔð ð
 ˆtØðð	ñ 	ô 	÷ 
‚c�€cÑÔð ð ˜#Øððñ ô ÷ 
‚c�€cÑÔð ð €WÐÑÔðð ñ Ôðð €WÐ!Ñ"Ô"ðð ñ #Ô"ðð €Wˆ_ÑÔðð ñ Ôðð �dØððñ ô ÷ 
‚c�€cÑÔð ð  �4Øˆ‰	Œ	ððñ ô ÷ 
‚c�€cÑÔð ð[ð [ð [ðz#ð #ð #ð #ð #ð #ð #ð #ð #ð #r   r   )rt   r`   Úconcurrent.futuresrX   rc   r7   r5   r[   Ú	importlibr   Úimportlib_utilÚ	traitletsr   r   r   r   r   re   r
   Ú	find_specÚPLAYWRIGHT_INSTALLEDrD   Ú
IS_WINDOWSr   r   r   r   ú<module>r      sø   ðØ *Ð *ð
 €€€Ø Ð Ð Ð Ø 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,à 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7Ð 7à Ð Ð Ð Ð Ð à/�~Ô/°Ñ=Ô=ÀTÐIÐ ØŒW˜Š_€
ðn#ð n#ð n#ð n#ð n#�\ñ n#ô n#ð n#ð n#ð n#r   