U
    =g                     @   s   d dl Z d dl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 d d
lmZmZ d dlmZ d dlmZ d dlmZmZ eeZdd Z dddZ!dd Z"dddZ#dS )    N)escape)
pdfencrypt)Spacer)Frame)PDFSignature)
WaterMarks)pisaContext)DEFAULT_CSS)
cleanFilespisaTempFile)
pisaParser)getBox)
PmlBaseDocPmlPageTemplatec                 C   s   t |jd}|d|j  |jD ],\}}}}|dkr"|d||t|f  q"|d|j  |jD ],\}}}}|dkrf|d||t|f  qft| | dd	S )
N)capacityzJ<p style='background-color:red;'><strong>%d error(s) occurred:</strong><p>errorz<pre>%s in line %d: %s</pre>z.<p><strong>%d warning(s) occurred:</strong><p>warningz<p>%s in line %d: %s</p>F)raise_exception)	r   r   writeerrloghtml_escapewarnpisaDocumentgetvalue)destcoutmodelinemsg_ r"   6/tmp/pip-unpacked-wheel-d1lgvatt/xhtml2pdf/document.pypisaErrorDocument#   s    r$    Fc	                 K   s   |st ||d}||_|d kr"t}t| ||||| |jsHtddg|_|jr\|j|j |jD ]\}
}||j	krbd |
_
qb|S )N)debug   )r   pathCallbackr	   r   storyr   Zindexing_storyappendZ
anchorFragZ
anchorNamelink)srcpathlink_callbackr&   default_cssxhtmlencodingcontext
xml_output_kwargsfraganchorr"   r"   r#   	pisaStory5   s    
r7   c                 C   s$   | d krd S t | tr t| S | S )N)
isinstancestrr   ZStandardEncryption)datar"   r"   r#   get_encrypt_instance[   s
    

r;   T  c                 K   s  t d| ||||| t|||d}|d k	r8|j| ||_t| ||||||||	d	}t }t	||j
|jd  |jd  dd |jd  d	D |jd
  dt|dd	}d|jkr|jd }|jd= n<td|j
\}}}}tdt||||dddddd	g|j
d}||ft|j  |jrB||j n||j t }t|||\}}|sr|}|rt }t|||}|r|}|d krt }||_| }|j| t  |r|S |S )NznpisaDocument options:
  src = %r
  dest = %r
  path = %r
  link_callback = %r
  xhtml = %r
  context_meta = %r)r&   r   )r2   r3   authorsubjectc                 S   s   g | ]}|r|  qS r"   )strip).0xr"   r"   r#   
<listcomp>   s      z pisaDocument.<locals>.<listcomp>keywords,titler   r'   )pagesizer=   r>   rC   rE   ZshowBoundaryencryptZallowSplittingbodyz1cm 1cm -1cm -1cm)idZleftPaddingZrightPaddingZbottomPaddingZ
topPadding)rI   framesrF   ) r   r&   r   metaupdater(   r7   ioBytesIOr   ZpageSizer?   splitr;   ZtemplateListr   r   r   ZaddPageTemplateslistvaluesZ
multiBuildr)   buildr   Zprocess_docr   signr   r   r   r
   )r,   r   Z
dest_bytesr-   r.   r&   r/   r0   r1   r3   r   r   Zcontext_metarG   	signaturer4   r2   r   docrH   rA   ywhoutputZhas_bgZ
signoutputZdo_okr:   r"   r"   r#   r   e   s    



r   )r%   Nr   NFNNN)NFr%   Nr   NFNNTr<   NNN)$rM   logginghtmlr   r   Zreportlab.libr   Zreportlab.platypus.flowablesr   Zreportlab.platypus.framesr   Zxhtml2pdf.builders.signsr   Zxhtml2pdf.builders.watermarksr   Zxhtml2pdf.contextr   Zxhtml2pdf.defaultr	   Zxhtml2pdf.filesr
   r   Zxhtml2pdf.parserr   Zxhtml2pdf.utilr   Zxhtml2pdf.xhtml2pdf_reportlabr   r   	getLogger__name__r   r$   r7   r;   r   r"   r"   r"   r#   <module>   sP   
        
&              