U
    =gE                     @  s  U d dl m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
 d dlmZ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 d d
lmZ d dlmZ d dlmZmZm Z m!Z! d dl"m#Z# d dl$m%Z%m&Z&m'Z' d dl(m)Z)m*Z*m+Z+m,Z, d dl-m.Z. d dl/m0Z0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7m8Z8 d dl9m:Z: d dl;m<Z<m=Z= erd dl>m?Z? d dl@mAZA zd dlBmCZC d dlDmEZE W n eFk
r   dZEdZCY nX eGeHZIdZJdeKd< dZLdeKd < G d!d" d"eMZNG d#d$ d$ZOG d%d& d&e%ZPG d'd( d(e'ZQd)ZRd*eKd+< G d,d- d-ZSG d.d/ d/e*eOZTG d0d1 d1e,eOZUG d2d3 d3e:eOZVG d4d5 d5e+eOZWG d6d7 d7e0eOZXG d8d9 d9e&ZYG d:d; d;e.ZZG d<d= d=e)Z[G d>d? d?e)Z\G d@dA dAe*Z]dS )B    )annotationsN)md5)escape)BytesIOStringIO)TYPE_CHECKINGClassVarIterator)uuid4)Image)UnidentifiedImageError)TA_RIGHT)ParagraphStyle)LazyImageReaderflatten
haveImagesopen_for_read)pdfform)BaseDocTemplateIndexingFlowablePageTemplate)CondPageBreakFlowableKeepInFrameParagraphAndImage)TableOfContents)Table
TableStyle)register_reset)
WaterMarks)pisaFileObjectpisaTempFile)	Paragraph)ImageWarninggetBorderStyle)Drawing)Canvas)renderPM)svg2rlggffffff?floatMAX_IMAGE_RATIOz3xhtml2pdf <https://github.com/xhtml2pdf/xhtml2pdf/>strPRODUCERc                      s0   e Zd Zdd fddZddddZ  ZS )PTCycleNonereturnc                   s   d| _ d| _t   d S Nr   )_restart_idxsuper__init__self	__class__ A/tmp/pip-unpacked-wheel-d1lgvatt/xhtml2pdf/xhtml2pdf_reportlab.pyr5   J   s    zPTCycle.__init__r	   c                 c  s6   | | j  V  |  j d7  _ | j t| kr | j| _ q d S )N   )r3   lenr2   r6   r:   r:   r;   cyclicIteratorO   s    zPTCycle.cyclicIterator)__name__
__module____qualname__r5   r>   __classcell__r:   r:   r8   r;   r-   I   s   r-   c                   @  s*   e Zd ZdddddZddddZdS )	PmlMaxHeightMixInint)availHeightr0   c                 C  sJ   || _ |dk rDt| drDt| jds,d| j_t|| jj | _ | j_| j S )Nip canvmaxAvailHeightValuer   )availHeightValuehasattrrF   rG   max)r7   rE   r:   r:   r;   setMaxHeightX   s     zPmlMaxHeightMixIn.setMaxHeightr/   c                 C  s   t | dr| jS dS )NrH   r   )rI   rH   r6   r:   r:   r;   getMaxHeightb   s    zPmlMaxHeightMixIn.getMaxHeightN)r?   r@   rA   rK   rL   r:   r:   r:   r;   rC   W   s   
rC   c                   @  sN   e Zd ZdZddddZddddd	Zd
ddddZdddddZdS )
PmlBaseDocz[We use our own document template to get access to the canvas and set some information once.r.   r/   c                 C  s   t | jjj_d S N)r,   rF   _docinfoZproducerr6   r:   r:   r;   
beforePagei   s    zPmlBaseDoc.beforePager   )flowabler0   c                 C  s6   t |ddr2| d|jtt|jdd| jf d S )NoutlineFZTOCEntryT)quote)getattrnotifyoutlineLevelhtml_escapecopydeepcopytextpage)r7   rR   r:   r:   r;   afterFlowable~   s    zPmlBaseDoc.afterFlowablezstr | int | list | tuple)ptr0   c                 C  s`  |  | d}|  | d}|r<|r<| d| dg}t|trt| drT| `| jD ]"}|j|krZ| j|| _ dS qZd| d}t	|t|t
rt| dr| `|| _nt|ttfrPt }|D ]H}|dkrt||_q| jD ](}t  |j| kr||  qqq|s(d}t	||jt|krDd	}t	|| | _nd
}t|dS )zBIf pt has also templates for even and odd page convert it to list._leftZ_right_nextPageTemplateCycleNzcan't find template('z')*z No valid page templates in cyclezInvalid cycle restart positionz/Argument pt should be string or integer or list)_has_template_for_name
isinstancer+   rI   r`   pageTemplatesidindexZ_nextPageTemplateIndex
ValueErrorrD   listtupler-   r=   r2   sysexitstripappendr>   	TypeError)r7   r^   Zhas_left_templateZhas_right_templatetmsgcZptnr:   r:   r;   handle_nextPageTemplate   sJ    








z"PmlBaseDoc.handle_nextPageTemplater+   bool)namer0   c                   s   t  fdd| jD S )Nc                 3  s   | ]}|j   kV  qd S rN   )re   rl   ).0templatert   r:   r;   	<genexpr>   s     z4PmlBaseDoc._has_template_for_name.<locals>.<genexpr>)anyrd   )r7   rt   r:   rw   r;   rb      s    z!PmlBaseDoc._has_template_for_nameN)r?   r@   rA   __doc__rQ   r]   rr   rb   r:   r:   r:   r;   rM   f   s
   1rM   c                      s   e Zd ZU dZded< dZded< eZded< dd fd	d
ZdddddZddddZ	ddddZ
ddddZ  ZS )PmlPageTemplateZportraitr+   PORTRAITZ	landscape	LANDSCAPEpageorientationr.   r/   c                   sN   g | _ g | _d | _t jf | d| _d| _d | _d| _d| _	d| _
g | _d S )Nr   T)pisaStaticListpisaBackgroundListpisaBackgroundr4   r5   _page_count_first_flowimgphhwbackgroundids)r7   kwr8   r:   r;   r5      s    zPmlPageTemplate.__init__r&   rs   )canvasr0   c                 C  s8   | j r2| | jkrd| _ n| | _| |j_| j S NF)r   getPageNumberr   _doctemplate)r7   r   r:   r:   r;   isFirstFlow   s    
zPmlPageTemplate.isFirstFlowc                 C  s   | j | jkS rN   )r~   r|   r6   r:   r:   r;   
isPortrait   s    zPmlPageTemplate.isPortraitc                 C  s   | j | jkS rN   )r~   r}   r6   r:   r:   r;   isLandscape   s    zPmlPageTemplate.isLandscape)r   c                   s<      z"|jj| jkrd }t| dr|| jr|| j s|| j 	drft
j| j| j|  | jd}n| j}| j|jj |r| j  || jf  fddz\  | jkr҈  | _   j_| jD ](}t|}|j}| ||  qW n$ tk
r(   tjddd Y nX W 5    X d S )	Nr   zimage/)Zis_portraitcontextc                   sr   t | D ]d}t|trJ|jD ]*}|jr2t|_q|jrt jj	|_qqt|t
rdd |jD }| qd S )Nc                 S  s   g | ]}|D ]}|qqS r:   r:   )ru   Zsublistitemr:   r:   r;   
<listcomp>  s      zIPmlPageTemplate.beforeDrawPage.<locals>.pageNumbering.<locals>.<listcomp>)r   rc   PmlParagraphfragsZ
pageNumberr+   r[   Z	pageCountr   r   PmlTableZ_cellvalues)ZobjListobjfragZ
flat_cellsr   pageNumberingZ
pagenumberr:   r;   r      s    


z5PmlPageTemplate.beforeDrawPage.<locals>.pageNumberingr{   Texc_info)	saveStaterestoreStateZpageTemplatere   r   rI   r   ZnotFoundZgetMimeType
startswithr   Zgenerate_pdf_backgroundZpagesizer   ZbackgroundContextrm   r   r   r   r   r   rY   rZ   ZpisaStaticStoryZaddFromList	Exceptionlogdebug)r7   r   docr   frameZ
frame_copyZstoryr:   r   r;   beforeDrawPage   sJ    



zPmlPageTemplate.beforeDrawPage)r?   r@   rA   r|   __annotations__r}   r~   r5   r   r   r   r   rB   r:   r:   r8   r;   r{      s   
	r{   r<   rD   _ctrc                   @  s   e Zd ZU dZi Zded< dZded< dZded< dZded< d	d
dddZ	e
ddddZddddZddddZddddZddddZdd Zdd  Zd!dd"d#Zd$S )%PmlImageReaderz5Wraps up either PIL or Java to get data from bitmaps.zClassVar[dict]_cacheFrs   	use_cacheuse_lazy_loaderprocess_internal_fileszPmlImage | Image | strr.   )fileNamer0   c              
   C  s$  t |tr|j| _d S |p&dt|  | _d | _d | _d | _d | _d | _	d | _
d | _trzt |trz|| _t|dd | _nzpt|d| _| jrt | jtr| j }tt | j  W 5 Q R X | jr| jst| jj t|d }| j||}t|| _n(| jr8t |tr8| j  | `t | _!t"rr| jsT| #| j| _t| jdd dkr| j$| _%nxddl&m'} z|| j\| _| _}W n2 tk
r } zd	}t(||W 5 d }~X Y nX | j$| _%| j | _	| j)d W n2 t*k
r } zd
}t(||W 5 d }~X Y nX d S )NZ	PILIMAGE_fpbutf8formatZJPEGr   )readJPEGInfozBImaging Library not available, unable to import bitmaps only jpegszCannot identify image file)+rc   PmlImage__dict__re   r   _image_width_heightZ_transparent_data_dataAr   r   rU   r   r   r   read
contextlibsuppressr   closer   r   r   clearr   encodedigest
setdefaultr   r+   r   r9   r   _read_image_jpeg_fhjpeg_fhZreportlab.pdfbase.pdfutilsr   r#   seekr   )r7   r   data	cache_keyr   rq   erp   r:   r:   r;   r5   -  s`    



zPmlImageReader.__init__r   r/   c                 C  sJ   t jd d dkr@ddlm} ddlm} ||  }||S t| S )N   javar   )ByteArrayInputStream)ImageIO)	rj   platformZjava.ior   Zjavax.imageior   r   PILImageopen)r   r   r   Zinput_streamr:   r:   r;   r   i  s    
zPmlImageReader._read_imagezBytesIO | StringIO | Nonec                 C  s"   | j }t|ttfr|d |S r1   )r   rc   r   r   r   )r7   r   r:   r:   r;   r   s  s    
zPmlImageReader._jpeg_fhc                 C  s   dS )z-Might be replaced with _jpeg_fh in some casesNr:   r6   r:   r:   r;   r   y  s    zPmlImageReader.jpeg_fhztuple[int, int]c                 C  sx   | j d ks| jd krltjd d dkr@| j | _ | j | _n| jj\| _ | _trl| j d k	rh| jd k	slt	| j | jfS )Nr   r   )
r   r   rj   r   r   ZgetWidthZ	getHeightsizer   AssertionErrorr6   r:   r:   r;   getSize}  s    zPmlImageReader.getSizezbytes | strc              	   C  sZ  | j dkrTd| _tjdd dkrddl}ddlm} |  \}}||| d}|| j	dd|||d|}|
  g }|j}|D ]<}	|t|	d? d@  |t|	d	? d@  |t|	d@  qd
|| _ d| _n| j	}
|
j }| _|dkr|
  t|
 d | _|
d}
d| _n|dkr6|
d}
d| _t|
drJ|
 n|
 | _ | j S )z(Return byte array of RGB data as string.Nr   r   r   )PixelGrabberi          RGBZRGBA   >   r   LCMYKtobytes)r   r   rj   r   jarrayZjava.awt.imager   r   zerosr   Z
grabPixelsrm   chrjoinmodeloadr   splitconvertrI   r   tostring)r7   r   r   widthheightbufferZpgZpixelsaZrgbZimr   r:   r:   r;   
getRGBData  sL           



zPmlImageReader.getRGBDatac                 C  s   |   \}}|||  fS rN   )r   r   )r7   r   r   r:   r:   r;   getImageData  s    zPmlImageReader.getImageDatac              
   C  s   t jd d dkrd S d| jjkr| jjd d }| jj}t|drL|j}nt|dr^|j}nd S zt|||d  W S  tk
r } zt	j
t||d W Y d S d }~X Y qX nd S d S )Nr   r   transparencyr   paletter   r   )rj   r   r   rP   r   rI   r   rh   r   r   r   r+   )r7   r   r   r   r:   r:   r;   getTransparent  s     

zPmlImageReader.getTransparentr+   c                 C  sD   t | jtttfr2| j p"t| }dt| S t| jp@t| S )NZPmlImageObject_)	rc   r   r   r   r   r   re   hashr+   )r7   fnr:   r:   r;   __str__  s    zPmlImageReader.__str__N)r?   r@   rA   rz   r   r   r   r   r   r5   staticmethodr   r   r   r   r   r   r   r   r:   r:   r:   r;   r   $  s   
<	&r   c                
   @  sz   e Zd Zdddddddddd	d
dZdd ZdddddddZddddZddddZddddZd ddZ	dS )!r   Nautoz%pisaFileObject | pisaTempFile | bytesz
str | Nonez
int | Noner+   dictr.   )r   srcr   r   maskmimetyper   r0   c                 K  s   || _ d| _|| _d| _t|tr*|| _n.t|tr@| | _nt|trX|	 pTd| _|| _
|| _|  }d| _d| _|r| pd\}	}	| _| _n|  }
|
r|
 \| _| _|p| j| _|p| j| _d S )NZCENTER    g        )r   r   r   r   )r   ZhAlign_mask_imgdatarc   bytesr!   getvaluer    ZgetDatar   r   
getDrawingZ
imageWidthZimageHeightZ	getBoundsgetImager   	drawWidth
drawHeight)r7   r   r   r   r   r   r   r   drawing_r   r:   r:   r;   r5     s,    



zPmlImage.__init__c                 C  sp   |  |}t| j|}t|| j }t| j|t }t|| j }t||}| j| | _| j| | _| j| jfS )z
        Resize the image if necessary.

        This can be called more than once! Do not overwrite important data like drawWidth.
        )rK   minr   r)   r  r*   dWidthdHeight)r7   
availWidthrE   r   wfactorr   hfactorfactorr:   r:   r;   wrap  s    

zPmlImage.wrapzfloat | NonezDrawing | None)r   r   r0   c              	   C  s   t rzt t| j}W n tk
r,   Y dS X |rd}d}zpt| dddk	rd|dkrZ| j}||j }t| dddk	r|dkr| j}||j }|dks|dkr|	|| W n0 t
k
r   td| jp| jdd  Y nX |S dS )zZIf this image is a vector image and the library is available, returns a ReportLab Drawing.Nr<   r   r  z$SVG drawing could not be resized: %r2   )r(   r   r   r   rU   r   r   r  r   ZscaleZeroDivisionErrorr   warningr   )r7   r   r   r  Zscale_xZscale_yr:   r:   r;   r     s4    


zPmlImage.getDrawingzBytesIO | Noner/   c                 C  s2   t r.tr.|  }|r.t }tj||dd |S dS )zVIf this image is a vector image and the libraries are available, returns a PNG raster.ZPNG)fmtN)r(   r'   r   r   Z
drawToFile)r7   svgimgdatar:   r:   r;   getDrawingRaster.  s    zPmlImage.getDrawingRasterr   c                 C  s   |   }|pt| j}t|S )zReturn a raster image.)r  r   r   r   )r7   ZvectorRasterr  r:   r:   r;   r   8  s    zPmlImage.getImagec                 C  s*   |   }| jj|dd| j| j| jd d S )Nr   )r   )r   rF   Z	drawImager  r  r   )r7   r   r:   r:   r;   draw>  s    zPmlImage.drawc                 C  s   t | |S rN   )r   identity)r7   maxLenr:   r:   r;   r  G  s    zPmlImage.identity)NNNr   N)NN)N)
r?   r@   rA   r5   r  r   r  r   r  r  r:   r:   r:   r;   r     s        +    
	r   c                   @  s   e Zd Zdd Zdd ZdS )PmlParagraphAndImagec                 C  s"   | j | j_ t| ||}| j` |S rN   )rF   Ir   r  )r7   r  rE   resultr:   r:   r;   r  L  s    
zPmlParagraphAndImage.wrapc                 C  s.   t | ds | j||\| _| _t| ||S )NwI)rI   r  r  r  ZhIr   r   r7   r  rE   r:   r:   r;   r   R  s    
 zPmlParagraphAndImage.splitN)r?   r@   rA   r  r   r:   r:   r:   r;   r  K  s   r  c                   @  s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
r   c           
      C  s   d| _ | jD ]}t|dr|jjdkr|j}|jdkr|jdkrd| _ t|j|}t||j }t|j|t	 }t||j }t||}	| j|	9  _| j|	9  _qd S )NFcbDefnr   r   T)
Z	hasImagesr   rI   r  kindr   r   r  r)   r*   )
r7   r  rE   r   r   r   r  r   r	  r
  r:   r:   r;   _calcImageMaxSizes\  s     
 
zPmlParagraph._calcImageMaxSizesc                 C  s   |  |}| j}|j|j |j |j | _|j|j |j	 |j
 | _|| j8 }|| j8 }| || t| || |  j| j7  _|  j| j7  _| j| jfS rN   )rK   stylepaddingLeftZpaddingRightborderLeftWidthborderRightWidth
deltaWidth
paddingTopZpaddingBottomborderTopWidthborderBottomWidthdeltaHeightr  r"   r  r   r   )r7   r  rE   r  r:   r:   r;   r  m  s2    
	

zPmlParagraph.wrapc                 C  sJ   t | jdkrg S t| ds(| || || j8 }|| j8 }t| ||S )Nr   r"  )r=   r   rI   r  r"  r&  r"   r   r  r:   r:   r;   r     s    


zPmlParagraph.splitc              	     s  t | ddrt | jddd }|| jk r^t j}| j| | j| j||| j  |d7 }q| j| j_	t j}| j| | j| j|| j| j  |d7 }| j | j
j}j}d}|| }| }| j|j  d|  }| jd|  }	|r$    |  j||||	ddd    d _    jj djj   t|     |_    fd	d
}
|
jjj|||||	  |
jjj|| ||| ||	  |
j jj!|||	 || ||	  |
j"j#j$|||| |    d S )NrS   FoutlineLastr<   r      )fillZstrokec                   sJ   |rFt | rF|d krj}|d k	rF |  |  |||| d S rN   )r$   Z	textColorZsetStrokeColorZsetLineWidthline)Zbstyler   colorx1y1x2y2r   r  r:   r;   _drawBorderLine  s    

z*PmlParagraph.draw.<locals>._drawBorderLine)%rU   rF   rW   r
   hexZbookmarkPageZaddOutlineEntryr[   ZoutlineOpenr'  r  Z	backColor
leftIndentr   ZrightIndentr   r   ZsetFillColorrectr   	translater  r   r#  r$  r"   r  ZborderLeftStyleZborderLeftColorZborderRightStyler!  ZborderRightColorZborderTopStyleZborderTopColorZborderBottomStyler%  ZborderBottomColor)r7   lastkeybgr4  Zbpxyr   r   r2  r:   r1  r;   r    s    


   


			
zPmlParagraph.drawN)r?   r@   rA   r  r  r   r  r:   r:   r:   r;   r   [  s   &r   c                   @  s   e Zd Zdd ZdS )PmlKeepInFramec                 C  s4   t |d}t |d}|| _| || _t| ||S )Ng      ?)rJ   ZmaxWidthrK   Z	maxHeightr   r  r  r:   r:   r;   r    s
    

zPmlKeepInFrame.wrapNr?   r@   rA   r  r:   r:   r:   r;   r<    s   r<  c                   @  s*   e Zd Zedd Zd	ddZdd ZdS )
r   c                 C  sB   t | tr$|d t| dd  } n| dks4| dkr8|} t| |S )z'Normalize width when using percentages.g      Y@Nr(  ra   )rc   r+   r)   r  )r   Zmaxwr:   r:   r;   
_normWidth  s
    
zPmlTable._normWidthN@ c              	   C  s,   |dkr|   p|}tj| ||||||dS )Nr?  )WHaH)rL   r   _listCellGeom)r7   Vr   sr@  rA  rB  r:   r:   r;   rC  &  s    zPmlTable._listCellGeomc                 C  s$  |  | t| ds|| _| | j|}|}d}| j}t|D ]:\}}|d k	rd| ||}	||	8 }n|d7 }d }	|	||< q>|d }
|dkrt|D ]"\}}|d krt|
|| ||< qt||kr|t| }tt	|D ]}||  |9  < qt|| }|dkr|d  |8  < t
| ||S )N
totalWidthr   r<   g{Gz?)rK   rI   rF  r>  Z
_colWidths	enumeraterJ   sumranger=   r   r  )r7   r  rE   rF  ZremainingWidthZremainingColsZnewColWidthsr   ZcolWidthZnewColWidthZminCellWidthZquotientZdiffr:   r:   r;   r  ,  s<    



 

zPmlTable.wrap)NNr?  )r?   r@   rA   r   r>  rC  r  r:   r:   r:   r;   r     s   

r   c                      s4   e Zd Zdd fddZdd Zd
dd	Z  ZS )PmlPageCountr.   r/   c                   s   t    d| _d S r   )r4   r5   second_roundr6   r8   r:   r;   r5   ^  s    
zPmlPageCount.__init__c                 C  s   | j }d| _ |S )NT)rK  )r7   rE  r:   r:   r;   isSatisfiedb  s    zPmlPageCount.isSatisfiedr   c                 C  s   d S rN   r:   )r7   r   r:  r;  Z_sWr:   r:   r;   drawOng  s    zPmlPageCount.drawOn)r   )r?   r@   rA   r5   rL  rM  rB   r:   r:   r8   r;   rJ  ]  s   rJ  c                   @  s   e Zd Zdd ZdS )PmlTableOfContentsc              	   C  s  || j  | j f}t| jdkr&dg}n| j}d}g }dddddg}t|D ]\}}	|	dd	 \}
}}| j|
 }|r|d
d|fd|ft||jf |j}t	d|
 |dt
d}t||}tt||}|||g qJt||t|d| _| j| j||\| _| _| j| jfS )z,All table properties should be known by now.r   )r   z!Placeholder for table of contentsr   )ZVALIGNr   r   r(  r(  ZTOP)ZLEFTPADDINGrO  rP  r   )ZRIGHTPADDINGrO  rP  r   )
TOPPADDINGrO  rP  r   )ZBOTTOMPADDINGrO  rP  r   Nr   rQ  r(  zleftColLevel%d)rt   parentr4  	alignment)Z	colWidthsr  )ZrightColumnWidthr=   Z_lastEntriesrG  ZlevelStylesrm   rJ   ZspaceBeforeZ
spaceAfterr   r   r"   r+   r   r   Z_tableZwrapOnrF   r   r   )r7   r  rE   ZwidthsZ_tempEntriesZ
lastMarginZ	tableDataZ
tableStyler   entrylevelr[   ZpageNumZleftColStyleZrightColStyleZleftParaZ	rightParar:   r:   r;   r  l  sH    

	
zPmlTableOfContents.wrapNr=  r:   r:   r:   r;   rN  k  s   rN  c                   @  s"   e Zd ZddddZdd ZdS )PmlRightPageBreakr.   r/   c                 C  s   d S rN   r:   r6   r:   r:   r;   r5     s    zPmlRightPageBreak.__init__c                 C  s2   | j  d s"|| _|| _||fS d | _| _dS Nr)  r   rO  rF   r   r   r   r  r:   r:   r;   r    s    zPmlRightPageBreak.wrapNr?   r@   rA   r5   r  r:   r:   r:   r;   rV    s   rV  c                   @  s"   e Zd ZddddZdd ZdS )PmlLeftPageBreakr.   r/   c                 C  s   d S rN   r:   r6   r:   r:   r;   r5     s    zPmlLeftPageBreak.__init__c                 C  s2   | j  d r"|| _|| _||fS d | _| _dS rW  rX  r  r:   r:   r;   r    s    zPmlLeftPageBreak.wrapNrY  r:   r:   r:   r;   rZ    s   rZ  c                   @  s,   e Zd Zddddd	Zd
d Zdd ZdS )PmlInputr[   
   r   Nr   r.   r/   c                 C  s:   || _ || _|| _|| _|| _|d k	r*|ng | _|| _d S rN   )r   r   typert   defaultoptions	multiline)r7   rt   Z
input_typer   r   r^  r_  r`  r:   r:   r;   r5     s    
zPmlInput.__init__c                 G  s   | j | jfS rN   )r   r   )r7   argsr:   r:   r;   r    s    zPmlInput.wrapc              
   C  s  | j }|  |dd | jdkrZtj|| jdd| j| j| j	d |
dd| j| j n| jdkrz|
dd| j| j n| jdkr| jrt|| jddd nt|| jd	dd |
dd| j| j nB| jd
krt|| j| j| jdd| j| j |
dd| j| j |  d S )NZ	Helveticar\  r[   r   )r`  ZradioZcheckboxZYesZOffselect)rF   r   ZsetFontr]  r   ZtextFieldRelativert   r   r   r`  r5  r^  ZbuttonFieldRelativeZselectFieldRelativer_  r   )r7   rq   r:   r:   r;   r    sD    
      

       zPmlInput.draw)r[   r\  r\  r   Nr   )r?   r@   rA   r5   r  r  r:   r:   r:   r;   r[    s         r[  )^
__future__r   r   rY   loggingrj   hashlibr   htmlr   rX   ior   r   typingr   r   r	   uuidr
   ZPILr   r   r   Z	PIL.ImageZreportlab.lib.enumsr   Zreportlab.lib.stylesr   Zreportlab.lib.utilsr   r   r   r   Zreportlab.pdfbaser   Zreportlab.platypus.doctemplater   r   r   Zreportlab.platypus.flowablesr   r   r   r   Z"reportlab.platypus.tableofcontentsr   Zreportlab.platypus.tablesr   r   Zreportlab.rl_configr   Zxhtml2pdf.builders.watermarksr   Zxhtml2pdf.filesr    r!   Zxhtml2pdf.reportlab_paragraphr"   Zxhtml2pdf.utilr#   r$   Zreportlab.graphics.shapesr%   Zreportlab.pdfgen.canvasr&   Zreportlab.graphicsr'   Zsvglib.svglibr(   ImportError	getLoggerr?   r   r*   r   r,   rh   r-   rC   rM   r{   r   r   r   r  r   r<  r   rJ  rN  rV  rZ  r[  r:   r:   r:   r;   <module>   sp    

Yb -{ 9	A6