o
    Zh0h.                     @   s   d Z ddlmZ ddl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mZ dd	lmZ d
dlmZmZmZ d
dlmZ d
dlmZ d
dlmZmZmZmZmZmZ dd ejejejfD Zdd Z dd Z!dd Z"dd Z#dS )zPDF generation management.    )filesN)D50D65   )VERSION
Attachment)W3C_DATE_RE)LOGGERPROGRESS_LOGGER)Matrix   )debugpdfapdfua)build_fonts_dictionary)Stream)add_annotations	add_forms	add_linksadd_outlinesresolve_linkswrite_pdf_attachmentc                 C   s$   i | ]}|  D ]\}}||qqS  )items).0variantsnamedatar   r   M/var/www/html/rh/venv/lib/python3.10/site-packages/weasyprint/pdf/__init__.py
<dictcomp>   s    r   c           	      C   s  | du rdS t | }|du rtd| d|  dS | }d}|d }dD ]}|| r7d}|| | }q(|rB|dv d	| }q(|d r||d
 sMJ |d rx|d dsZJ |d s`J t|d }t|d }||dd|d	7 }n|d7 }d| S )z Tranform W3C date to PDF format.NzInvalid z date:  hour)secondminuter!   daymonthyearT)r$   r%   02dr#   tz_hour)+-	tz_minutez+03d'ZzD:)r   matchr	   warning	groupdict
startswithint)	string	attr_namer.   groupspdf_datefoundkeyr(   r+   r   r   r   _w3c_date_to_pdf   s4   

r9   c                 C   s<   d|v r|d d u sJ ||d< t | || | | |jS )NFont)_use_references
add_object	reference)pdf	resourcesimagesfontsr   r   r   _reference_resources7   s   
rB   c                 C   s  | di  D ]h\}}|d u r:|| }|d }|d ur$|j|d |< q|d }t|d }||d |}||d< | | |j|d |< d|jv r\| |jd  |jd j|jd< d|jv rpt| |jd ||d |jd< q| d	i  D ]$\}}| | |j|d	 |< d|jv rt| |jd ||d |jd< qy| d
i  D ]\}}	| |	 |	j|d
 |< q| di  D ]\}}
d|
v rd|
d v r|
d d j|
d d< qd S )NXObjectx_objectimage
dpi_ratiosinterpolateSMask	Resourcesr:   PatternShading	ExtGStateG)getr   r=   maxget_x_objectr<   extrarB   )r>   r?   r@   r8   rD   
image_datarE   	dpi_ratiopatternshadingalphar   r   r   r;   @   sJ   







r;   c           :      K   s^  |d }t d d}|d }|d }|r+t| \}}	d|	v r#|	d }d|	v r+|	d }t }
i }ttdttttdd	ftdttttdd	fd
}|
	| tt t t t |j
d}|
	| g }tt| j}i }g g }}|d  }tt| j|D ])\}\}}t|dd| d|j| }||j|jd  |jd   }||j|jd  |jd   }| |jd  }| |jd  }|| }|| }|| || || | || | f}t| j|||||d}|jd|j| d |
	| || td|
jj
t||||g|j
|j
d} |r2d| d< || d< |
|  ||  t|||
| || t|d || |
| || t|j||
| ||| jj ||| dd |j  D }!||!d  }"||!d  }#||!d  }$||!d  }%|"t!d|!d  }&|#t!d|!d  }'|$t!d|!d  }(|%t!d|!d  })t|"|#|$|%g| d< t|&|'|(|)g| d< qt"|
| j#|dd  t d! t$d"t% |
jd#< | j&}*|*j'rt$|*j'|
jd$< |*j(rt$d%)|*j(|
jd&< |*j*rt$|*j*|
jd'< |*j+rt$d%)|*j+|
jd(< |*j,r%t$|*j,|
jd)< |*j-r5t$t.|*j-d*|
jd+< |*j/rEt$t.|*j/d,|
jd-< |*j0rRt$|*j0|
j1d.< |d/ r|*j2  D ]#\}+},d0)d1d2 |+D }+|+j3d3d4d54 }+|+r~t$|,|
j|+< q\|*j56 }-|d6 r|d6 D ]}.t7|.t8st8|.| j9d7}.|-|. qg }/|-D ]}.t:|
|.|}0|0d ur|/|0 q|/rtd8t i}1t|/D ]\}2}0|1d8 |0d9  |1d8 |0j
 q|
	|1 d8|
j1vrt |
j1d8< |1j
|
j1d8 d:< |d;  }3t;|
| j||3|}4|
	|4 d<|
j1v r)td=d>d?d@}5|
	|5 |5j
|4dA< |4j
|dB< t<|
|| |rot }6t=|D ]}7|6t$|7d  |6|7dC  q?td8|6i}8d8|
j1vrht |
j1d8< |8|
j1d8 dD< |rtjt>t?dE @ gtdFdGdH|d}9|
	|9 ttdIdJt$dK|9j
dLg|
j1dM< |r||
|*| ||-| |
S )NN      ?zStep 6 - Creating PDFFsrgbpdf_variantmarkz/Lab)}   r[   r\   )
WhitePointRange)zlab-d50zlab-d65)rL   rC   rJ   rK   
ColorSpaceuncompressed_pdfr   leftrighttopbottom)compress)dfz/Page)TypeParentMediaBoxContentsrI   z/STabsStructParentsc                 S   s   i | ]	\}}||d  qS )rW   r   )r   r8   valuer   r   r   r      s    z generate_pdf.<locals>.<dictcomp>
   TrimBoxBleedBoxT)transform_pageszStep 7 - Adding PDF metadatazWeasyPrint ProducerTitlez, AuthorSubjectKeywordsCreatorcreatedCreationDatemodifiedModDateLangcustom_metadatar    c                 s   s    | ]	}|  r|V  qd S )N)isalnum)r   charr   r   r   	<genexpr>   s    zgenerate_pdf.<locals>.<genexpr>asciiignore)errorsattachments)url_fetcherNamesFEmbeddedFiles
full_fontsAcroFormz/Fontz/Type1z/ZapfDingbats)ri   SubtypeBaseFontZaDbr:   r   DestszsRGB2014.icc   z
/DeviceRGB)N	Alternatez/OutputIntentz
/GTS_PDFA1zsRGB IEC61966-2.1)ri   SOutputConditionIdentifierDestOutputProfileOutputIntents)Ar
   infoVARIANTSpydyfPDF
DictionaryArrayr   r   r<   r=   listr   pages	enumeratezipr   heightwidthbleedr   rA   	transformappendadd_pager   r   r   formsfont_configfont_mappaintr   minr   make_bookmark_treeStringr   metadatatitleauthorsjoindescriptionkeywords	generatorrz   r9   r|   langcatalogcustomencodedecoder   copy
isinstancer   r   r   r   r;   sortedr   __package__
read_bytes):documenttargetzoomoptionsscalerZ   rX   variantvariant_function
propertiesr>   r@   color_spacer?   	pdf_namespage_links_and_anchorsannot_files	pdf_pagespage_streamsre   page_numberpagelinks_and_anchorsmatrix
page_widthpage_heightra   rc   rb   rd   page_rectanglestreampdf_pager   	trim_lefttrim_top
trim_righttrim_bottom
bleed_left	bleed_topbleed_rightbleed_bottomr   r8   ro   r   
attachmentpdf_attachmentspdf_attachmentcontentisubset	pdf_fontsdingbats
name_arrayanchordestsprofiler   r   r   generate_pdfr   s  

































r   )$__doc__importlib.resourcesr   r   tinycss2.color4r   r   r    r   r   htmlr   loggerr	   r
   r   r   r   r   r   rA   r   r   r   anchorsr   r   r   r   r   r   r   r9   rB   r;   r   r   r   r   r   <module>   s&     	2