o
    h/                     @   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 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_tags)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   Y/var/www/html/optinet_system/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   

r:   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_resources8   s   
rC   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=   extrarC   )r?   r@   rA   r9   rE   
image_datarF   	dpi_ratiopatternshadingalphar   r   r   r<   A   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 ]/\}\}}|ri n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}!|r:d|!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(rt$d$)|+j(|
jd%< |+j*rt$|+j*|
jd&< |+j+r t$d$)|+j+|
jd'< |+j,r-t$|+j,|
jd(< |+j-r=t$t.|+j-d)|
jd*< |+j/rMt$t.|+j/d+|
jd,< |+j0rZt$|+j0|
j1d-< |d. r|+j2  D ]#\},}-d/)d0d1 |,D },|,j3d2d3d44 },|,rt$|-|
j|,< qd|+j56 }.|d5 r|d5 D ]}/t7|/t8st8|/| j9d6}/|.|/ qg }0|.D ]}/t:|
|/|}1|1d ur|0|1 q|0rtd7t i}2t|0D ]\}3}1|2d7 |1d8  |2d7 |1j
 q|
	|2 d7|
j1vrt |
j1d7< |2j
|
j1d7 d9< |d:  }4t;|
| j||4|}5|
	|5 d;|
j1v r1td<d=d>d?}6|
	|6 |6j
|5d@< |5j
|dA< t<|
|| |rwt }7t=|D ]}8|7t$|8d  |7|8dB  qGtd7|7i}9d7|
j1vrpt |
j1d7< |9|
j1d7 dC< |rtjt>t?dD @ gtdEdFdG|d}:|
	|: ttdHdIt$dJ|:j
dKg|
j1dL< |rtA|
| | |r||
|+| ||.| |
S )MN      ?zStep 6 - Creating PDFsrgbpdf_tagspdf_variantz/Lab)}   r\   r]   )
WhitePointRange)zlab-d50zlab-d65)rM   rD   rK   rL   
ColorSpaceuncompressed_pdfr   leftrighttopbottom)compress)dfz/Page)TypeParentMediaBoxContentsrJ   z/STabsStructParentsc                 S   s   i | ]	\}}||d  qS )rX   r   )r   r9   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)rj   SubtypeBaseFontZaDbr;   r   DestszsRGB2014.icc   z
/DeviceRGB)N	Alternatez/OutputIntentz
/GTS_PDFA1zsRGB IEC61966-2.1)rj   SOutputConditionIdentifierDestOutputProfileOutputIntents)Br
   infoVARIANTSpydyfPDF
DictionaryArrayr   r   r=   r>   listr   pages	enumeratezipr   heightwidthbleedr   rB   	transformappendadd_pager   r   r   formsfont_configfont_mappaintr   minr   make_bookmark_treeStringr   metadatatitleauthorsjoindescriptionkeywords	generatorr{   r:   r}   langcatalogcustomencodedecoder   copy
isinstancer   r   r   r   r<   sortedr   __package__
read_bytesr   );documenttargetzoomoptionsscalerY   rZ   variantvariant_function
propertiesr?   rA   color_spacer@   	pdf_namespage_links_and_anchorsannot_files	pdf_pagespage_streamsrf   page_numberpagelinks_and_anchorstagsmatrix
page_widthpage_heightrb   rd   rc   re   page_rectanglestreampdf_pager   	trim_lefttrim_top
trim_righttrim_bottom
bleed_left	bleed_topbleed_rightbleed_bottomr   r9   rp   r   
attachmentpdf_attachmentspdf_attachmentcontentisubset	pdf_fontsdingbats
name_arrayanchordestsprofiler   r   r   generate_pdfs   s  






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