o
    Fzc                     @   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mZ d dlmZmZ d dlmZ edZdd Z 		dddZ!dd Z"	 			dddZ#dS )    N)
pdfencrypt)Spacer)Frame)PDFSignature)
WaterMarks)pisaContext)DEFAULT_CSS)
pisaParser)pypdfgetBox)pisaTempFile
cleanFiles)
PmlBaseDocPmlPageTemplate)escapeZ	xhtml2pdfc                 C   s   t |jd}|d|j  |jD ]\}}}}|dkr'|d||t|f  q|d|j  |jD ]\}}}}|dkrI|d||t|f  q3t| | dd	S )
N)capacityzI<p style='background-color:red;'><strong>%d error(s) occured:</strong><p>errorz<pre>%s in line %d: %s</pre>z-<p><strong>%d warning(s) occured:</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#   /xhtml2pdf/document.pypisaErrorDocument&   s    r%   Fc	                 K   s   |st ||d}||_|d u rt}t| ||||| |js$tddg|_|jr.|j|j |jD ]\}
}||j	vr=d |
_
q1|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kwfraganchorr#   r#   r$   	pisaStory7   s   
r7   c                 C   s$   | d u rd S t | trt| S | S )N)
isinstancestrr   ZStandardEncryption)datar#   r#   r$   get_encrypt_instanceT   s
   

r;   T  c                 K   s  t d| ||||| t|||d}|d ur|j| ||_t| ||||||||	d	}t }t	||j
|jd  |jd  dd |jd  d	D |jd
  dt|dd	}d|jv rk|jd }|jd= ntd|j
\}}}}tdt||||dddddd	g|j
d}||gt|j   |jr||j n||j t }t|||\}}|s|}|rt }t|||}|r|}|d u 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   ^   s   	



r   )NNr   NFNNN)NFNNr   NFNNTr<   NNN)$rM   loggingZ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.parserr	   Zxhtml2pdf.utilr
   r   Zxhtml2pdf.filesr   r   Zxhtml2pdf.xhtml2pdf_reportlabr   r   htmlr   r   	getLoggerr   r%   r7   r;   r   r#   r#   r#   r$   <module>   s2   


