
    Xwgn                    X   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rd dl>m?Z? d dl@mAZA 	 d dlBmCZC d dlDmEZE  ej                  eH      ZIdZJdeKd<   dZLdeKd <    G d! d"eM      ZN G d# d$      ZO G d% d&e%      ZP G d' d(e'      ZQd)ZRd*eKd+<    G d, d-      ZS G d. d/e*eO      ZT G d0 d1e,eO      ZU G d2 d3e:eO      ZV G d4 d5e+eO      ZW G d6 d7e0eO      ZX G d8 d9e&      ZY G d: d;e.      ZZ G d< d=e)      Z[ G d> d?e)      Z\ G d@ dAe*      Z]y# eF$ r dZEdZCY w xY w)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                  (     e Zd Zd fdZddZ xZS )PTCyclec                >    d| _         d| _        t        |           y Nr   )_restart_idxsuper__init__self	__class__s    T/var/www/horilla/myenv/lib/python3.12/site-packages/xhtml2pdf/xhtml2pdf_reportlab.pyr5   zPTCycle.__init__J   s    	    c              #     K   	 | | j                       | xj                   dz  c_         | j                   t        |       k\  r| j                  | _         Pw)N   )r3   lenr2   r7   s    r9   cyclicIteratorzPTCycle.cyclicIteratorO   sD     tyy/!IINIyyCI% MM		 s   AAreturnNone)rA   r
   )__name__
__module____qualname__r5   r?   __classcell__r8   s   @r9   r/   r/   I   s    
*r:   r/   c                      e Zd ZddZddZy)PmlMaxHeightMixInc                   || _         |dk  rit        | d      r]t        | j                  d      sd| j                  _        t	        || j                  j                        x| _         | j                  _        | j                   S )Nip canvmaxAvailHeightValuer   )availHeightValuehasattrrK   rL   max)r7   availHeights     r9   setMaxHeightzPmlMaxHeightMixIn.setMaxHeightX   so    %074#8499&;<01		-DGTYY::E D!DII$A $$$r:   c                6    t        | d      r| j                  S dS )NrM   r   )rN   rM   r>   s    r9   getMaxHeightzPmlMaxHeightMixIn.getMaxHeightb   s    (/6H(It$$PqPr:   N)rP   intrA   rT   )rA   rT   )rC   rD   rE   rQ   rS    r:   r9   rI   rI   W   s    %Qr:   rI   c                  0    e Zd ZdZddZddZd	dZd
dZy)
PmlBaseDocz[We use our own document template to get access to the canvas and set some information once.c                V    t         | j                  j                  j                  _        y N)r-   rK   _docinfoproducerr>   s    r9   
beforePagezPmlBaseDoc.beforePagei   s    '/		$	r:   c           	         t        |dd      rR| j                  d|j                  t        t	        j
                  |j                        d      | j                  f       y y )NoutlineFTOCEntryT)quote)getattrnotifyoutlineLevelhtml_escapecopydeepcopytextpage)r7   flowables     r9   afterFlowablezPmlBaseDoc.afterFlowable~   sN    8Y.KK))hmm <DIII /r:   c                p   | j                  | d      }| j                  | d      }|r|r
| d| dg}	 t        |t              rat        | d      r| `| j
                  D ]3  }|j                  |k(  s| j
                  j                  |      | _         y d| d}t        |      t        |t              rt        | d      r| `|| _        yt        |t        t        f      rt               }|D ]m  }|dk(  rt        |      |_        | j
                  D ]F  }t!        j"                          |j                  |j%                         k(  s5|j'                  |        m o |sd}t        |      |j                  t        |      kD  rd	}t        |      |j)                         | _        yd
}t+        |      )zBIf pt has also templates for even and odd page convert it to list._left_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,   rN   ro   pageTemplatesidindex_nextPageTemplateIndex
ValueErrorrT   listtupler/   r=   r2   sysexitstripappendr?   	TypeError)r7   pthas_left_templatehas_right_templatetmsgcptns           r9   handle_nextPageTemplatez"PmlBaseDoc.handle_nextPageTemplate   s   "&"="=El"K#'#>#>"V}#M!3D,2$f.BJb#t56/'' 442:7;7I7I7O7OPQ7RD/ *"R0CS/!b#t56/*,D'T5M* !A 	#:!$QAJ++ AHHJttsyy{*		 8 o%zzCF"6 o% 9:8H8H8JD'CCC. r:   c                @    t        fd| j                  D              S )Nc              3  X   K   | ]!  }|j                   j                         k(   # y wrY   )rt   r|   ).0templatenames     r9   	<genexpr>z4PmlBaseDoc._has_template_for_name.<locals>.<genexpr>   s      R88;;$**,.Rs   '*)anyrs   )r7   r   s    `r9   rq   z!PmlBaseDoc._has_template_for_name   s    Rt?Q?QRRRr:   Nr@   )rj   r   rA   rB   )r   zstr | int | list | tuplerA   rB   )r   r,   rA   bool)rC   rD   rE   __doc__r]   rk   r   rq   rU   r:   r9   rW   rW   f   s    e*
/!bSr:   rW   c                  l     e Zd ZU dZded<   dZded<   eZded<   d fdZddZdd	Z	dd
Z
ddZ xZS )PmlPageTemplateportraitr,   PORTRAIT	landscape	LANDSCAPEpageorientationc                    g | _         g | _        d | _        t        |   di | d| _        d| _        d | _        d| _        d| _	        d| _
        g | _        y )Nr   TrU   )pisaStaticListpisaBackgroundListpisaBackgroundr4   r5   _page_count_first_flowimgphhwbackgroundids)r7   kwr8   s     r9   r5   zPmlPageTemplate.__init__   sa    $&/1"2 !!% (*r:   c                    | j                   rd|j                         | j                  k  rd| _         | j                   S |j                         | _        |j                         |j                  _        | j                   S NF)r   getPageNumberr   _doctemplate)r7   canvass     r9   isFirstFlowzPmlPageTemplate.isFirstFlow   sn    ##%)9)99#(   $*#7#7#9 282F2F2H##/r:   c                4    | j                   | j                  k(  S rY   )r   r   r>   s    r9   
isPortraitzPmlPageTemplate.isPortrait   s    ##t}}44r:   c                4    | j                   | j                  k(  S rY   )r   r   r>   s    r9   isLandscapezPmlPageTemplate.isLandscape   s    ##t~~55r:   c                   j                          	 |j                  j                  | j                  vrd }t	        | d      r| j
                  r| j
                  j                         s| j
                  j                         j                  d      rFt        j                  | j
                  | j                  | j                         | j                        }n| j
                  }| j                  j                  |j                  j                         |r6| j                  j                  j!                         || j                  f       fd	 j!                         | j"                  kD  r4j!                         | _        j!                         j$                  _        | j&                  D ]=  }t)        j*                  |      }|j,                  } |       |j/                  |       ? 	 j7                          y # t0        $ r t2        j5                  dd       Y 3w xY w# j7                          w xY w)Nr   zimage/)is_portraitcontextc                   t        |       D ]  }t        |t              r`|j                  D ]P  }|j                  rt              |_         |j                  s-t        j                  j                        |_        R st        |t              s|j                  D cg c]  }|D ]  }|  }}} |        y c c}}w rY   )r   rr   PmlParagraphfrags
pageNumberr,   rh   	pageCountr   r   PmlTable_cellvalues)	objListobjfragsublistitem
flat_cellsr   pageNumbering
pagenumbers	         r9   r   z5PmlPageTemplate.beforeDrawPage.<locals>.pageNumbering   s    "7+ 2C!#|4$'II QD#,/
O	!%,/0C0C0O0O,P		Q $C2 14&%,G&DHD& &
 & &j12&s    B>r   Texc_info)	saveStatepageTemplatert   r   rN   r   notFoundgetMimeType
startswithr    generate_pdf_backgroundpagesizer   backgroundContextr}   r   r   r   r   r   rf   rg   pisaStaticStoryaddFromList	ExceptionlogdebugrestoreState)	r7   r   docr   frame
frame_copystoryr   r   s	    `     @@r9   beforeDrawPagezPmlPageTemplate.beforeDrawPage   s   8	"""$*<*<<!%D"23++!0099;**668CCHM)3)K)K // MM(,(9$($:$:	* *.)<)<&&--c.>.>.A.AB!++22--/AWAWX2 <#113
 0 00'-';';'=D$6<6J6J6LF''3!00 :E!%u!5J&66E!%(**5&9: !  <		+d	;< !s1   E H- BH 5H-  H*'H- )H**H- -H?r@   )r   r'   rA   r   )rA   r   )r   r'   )rC   rD   rE   r   __annotations__r   r   r5   r   r   r   r   rF   rG   s   @r9   r   r      s:    Hc Is #OS#+  56:"r:   r   r<   rT   _ctrc                      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	Z	e
dd
       ZddZddZddZddZd Zd ZddZy)PmlImageReaderz5Wraps up either PIL or Java to get data from bitmaps.zClassVar[dict]_cacheFr   	use_cacheuse_lazy_loaderprocess_internal_filesc                *   t        |t              r|j                  | _        y |xs dt        |        | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        t        r*t        |t              r|| _        t        |dd       | _        y 	 t        |d      | _        | j                  rt        | j                  t               r| j                  j#                         }t%        j&                  t(              5  | j                  j+                          d d d        | j,                  ro| j.                  st1        | j.                  j2                         t5        |j7                  d            j9                         }| j.                  j;                  ||      }t!        |      | _        nC| j<                  r7t        |t>              r'| j                  j+                          | `t@        | _!        tD        rX| j
                  s | jG                  | j                        | _        t        | j
                  dd       dk(  r| jH                  | _%        y ddl&m'} 	  || j                        \  | _        | _        }| jH                  | _%        | j                  j#                         | _	        | j                  jS                  d       y y # 1 sw Y   xY w# t(        $ r}d	}tQ        |      |d }~ww xY w# tT        $ r}d
}tQ        |      |d }~ww xY w)N	PILIMAGE_fpbutf8formatJPEGr   )readJPEGInfozBImaging Library not available, unable to import bitmaps only jpegszCannot identify image file)+rr   PmlImage__dict__rt   fileName_image_width_height_transparent_data_dataAr   r   rb   r   r   r   read
contextlibsuppressr   closer   r   r   clearr   encodedigest
setdefaultr   r,   r   r8   r   _read_image_jpeg_fhjpeg_fhreportlab.pdfbase.pdfutilsr   r$   seekr   )r7   r   data	cache_keyr   r   er   s           r9   r5   zPmlImageReader.__init__-  s[   h)$--DM 190Ri4z<R!"&#' )-
-1-1Z%0"DKhd3DG(/'#6..:dggx3P $D#,,Y7 ((~~#{{*4;;+<+<=$'F(;$<$C$C$E	#{{55iF&tnDG))j3.GGGMMO%4DN;;&*&6&6tww&?t{{Hd;vE'+}}G77CDGG7L4T\1 $(==DL!%DJGGLLO F#( (0 % 7*  +3/Q67 * /2"3'Q./s]   A*K6 K
!D4K6 K6  K =AK6 
KK6 	K3 K..K33K6 6	L?LLc                    t         j                  d d dk(  r3ddlm} ddlm}  || j                               }|j                  |      S t        j                  |       S )N   javar   )ByteArrayInputStream)ImageIO)	rz   platformjava.ior   javax.imageior  r   PILImageopen)r   r   r  input_streams       r9   r   zPmlImageReader._read_imagei  sI    <<v%4-/	:L<<--}}R  r:   c                l    | j                   }t        |t        t        f      r|j	                  d       |S r1   )r   rr   r   r   r   )r7   r   s     r9   r   zPmlImageReader._jpeg_fhs  s*    WWb7H-.GGAJ	r:   c                     y)z-Might be replaced with _jpeg_fh in some casesNrU   r>   s    r9   r   zPmlImageReader.jpeg_fhy  s    r:   c                   | j                   | j                  t        j                  d d dk(  r?| j                  j                         | _         | j                  j                         | _        n#| j                  j                  \  | _         | _        t        r| j                   | j                  J | j                   | j                  fS )Nr   r   )	r   r   rz   r  r   getWidth	getHeightsizer   r>   s    r9   getSizezPmlImageReader.getSize}  s    ;;$,,"6||BQ6)"kk224#{{446,0KK,<,<)T\{{.4<<3KKK{{DLL((r:   c           
        | j                   d| _        t        j                  dd dk(  rddl}ddlm} | j                         \  }}|j                  ||z  d      } || j                  dd|||d|      }|j                          g }|j                  }|D ]D  }	 |t        |	dz	  dz                |t        |	d	z	  dz                |t        |	dz               F d
j                  |      | _         d| _        | j                   S | j                  }
|
j                  x}| _        |dk(  rJ|
j                          t!        |
j#                         d         | _        |
j%                  d      }
d| _        n|dvr|
j%                  d      }
d| _        t'        |
d      r|
j)                         n|
j+                         | _         | j                   S )z(Return byte array of RGB data as string.Nr   r   r   )PixelGrabberi          RGBRGBA   )Lr  CMYKtobytes)r   r   rz   r  jarrayjava.awt.imager  r  zerosr   
grabPixelsr}   chrjoinmodeloadr   splitconvertrN   r  tostring)r7   r  r  widthheightbufferpgpixelsargbimr"  s               r9   
getRGBDatazPmlImageReader.getRGBData  s   ::DK||BQ6)7 $vefnc:#/KKAuffa$  %'MM! 'Cc3"9,-.c3!8t+,-c#*o&'  WWV_
!	 zz [[#%77*ty6>GGI"0A"?DKE*B %DI!55E*B %DI-4R-CRZZ\
zzr:   c                N    | j                         \  }}||| j                         fS rY   )r  r/  )r7   r'  r(  s      r9   getImageDatazPmlImageReader.getImageData  s%    vfdoo///r:   c                   t         j                  d d dk(  ry d| j                  j                  v rw| j                  j                  d   dz  }| j                  j                  }t        |d      r|j                  }nt        |d      r|j                  }ny 	 t        |||dz          S y # t        $ r*}t        j                  t        |      |       Y d }~y d }~ww xY w)Nr   r   transparencyr  paletter   r   )rz   r  r   r[   r4  rN   r   rx   r   r   r   r,   )r7   r3  r4  r   s       r9   getTransparentzPmlImageReader.getTransparent  s    <<v%T[[---;;++N;a?Lkk))Gw	*!//&)!,,GL<!3CDEE
 	  		#a&1	-s   B( (	C1 CCc                    t        | j                  t        t        t        f      r5| j                  j                         xs t        |       }dt        |       S t        | j                  xs t        |             S )NPmlImageObject_)	rr   r   r   r   r   r   rt   hashr,   )r7   fns     r9   __str__zPmlImageReader.__str__  s[    dmmhw%?@##%1DB$T"XJ//4==,BtH--r:   N)r   zPmlImage | Image | strrA   rB   )rA   r   )rA   zBytesIO | StringIO | None)rA   ztuple[int, int])rA   zbytes | str)rA   r,   )rC   rD   rE   r   r   r   r   r   r   r5   staticmethodr   r   r   r  r/  r1  r5  r:  rU   r:   r9   r   r   $  sl    ?FNIt!OT!#(D(:/x ! !	)$L0..r:   r   c                  z    e Zd Z	 	 	 	 	 d		 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
dZd Z	 d	 	 	 	 	 ddZddZddZddZddZ	y)r   Nc                `   || _         d| _        || _        d| _        t	        |t
              r|| _        nOt	        |t              r|j                         | _        n)t	        |t              r|j                         xs d| _        || _
        || _        | j                         }d| _        d| _        |r$|j                         xs d\  }	}	| _        | _        n/| j!                         }
|
r|
j#                         \  | _        | _        |xs | j                  | _        |xs | j                  | _        y )NCENTERr:   g        )r   r   r   r   )r   hAlign_mask_imgdatarr   bytesr"   getvaluer!   getDatasrcmimetype
getDrawing
imageWidthimageHeight	getBoundsgetImager  	drawWidth
drawHeight)r7   r   rE  r'  r(  maskrF  r   drawing_r   s              r9   r5   zPmlImage.__init__  s     #
"dE" DMl+ MMODMn- LLN1cDM"$, //#!$"%6=6G6G6I 7 N3Aq$/4#3 --/C47KKM1!1 % 8!'!;4+;+;r:   c                   | j                  |      }t        | j                  |      }t        |      | j                  z  }t        | j                  |t
        z        }t        |      | j                  z  }t        ||      }| j                  |z  | _        | j                  |z  | _        | j                  | j                  fS )z
        Resize the image if necessary.

        This can be called more than once! Do not overwrite important data like drawWidth.
        )rQ   minrL  r*   rM  r+   dWidthdHeight)r7   
availWidthrP   r'  wfactorr(  hfactorfactors           r9   wrapzPmlImage.wrap  s     ''4DNNJ/,/T__kO&CD-$//1Wg&nnv-/{{DLL((r:   c                   t         r	 t        t        | j                              }|rwd}d}	 t	        | dd      || j
                  }||j                  z  }t	        | dd      || j                  }||j                  z  }|dk7  s|dk7  r|j                  ||       |S y# t        $ r Y yw xY w# t        $ r5 t        j                  d| j                  xs | j                  dd        Y |S w xY w)zZIf this image is a vector image and the library is available, returns a ReportLab Drawing.Nr<   rL  rM  z$SVG drawing could not be resized: %r2   )r)   r   rA  r   rb   rL  r'  rM  r(  scaleZeroDivisionErrorr   warningrE  )r7   r'  r(  rO  scale_xscale_ys         r9   rG  zPmlImage.getDrawing  s     !'$--"89 t[$7C =$(NNE"''--"7t\48D!>%)__F"(7>>"9!|w!|gw7 /  " ) KK>6DMM#2$6 s#   B  A0B/  	B,+B,/:C-,C-c                    t         r<t        r6| j                         }|r$t               }t        j                  ||d       |S y)zVIf this image is a vector image and the libraries are available, returns a PNG raster.PNG)fmtN)r)   r(   rG  r   
drawToFile)r7   svgimgdatas      r9   getDrawingRasterzPmlImage.getDrawingRaster.  s7    x??,C!)##Ce<r:   c                j    | j                         }|xs t        | j                        }t        |      S )zReturn a raster image.)rg  r   rA  r   )r7   vectorRasterrf  s      r9   rK  zPmlImage.getImage8  s.    ,,.8'$--"8g&&r:   c                    | j                         }| j                  j                  |dd| j                  | j                  | j
                         y )Nr   )rN  )rK  rK   	drawImagerS  rT  r@  )r7   r   s     r9   drawzPmlImage.draw>  s:     mmo		CAt{{DLLtzzRr:   c                .    t        j                  | |      S rY   )r   identity)r7   maxLens     r9   rn  zPmlImage.identityG  s      v..r:   )NNNautoN)r   z%pisaFileObject | pisaTempFile | bytesrE  
str | Noner'  
int | Noner(  rr  rN  r,   rF  rq  r   dictrA   rB   )NN)r'  float | Noner(  rt  rA   zDrawing | None)rA   zBytesIO | None)rA   r   r@   rY   )
rC   rD   rE   r5   rY  rG  rg  rK  rl  rn  rU   r:   r9   r   r     s      !#)<3)< )< 	)<
 )< )< )< )< 
)<V)& BF!2>	@'S/r:   r   c                      e Zd Zd Zd Zy)PmlParagraphAndImagec                    | j                   | j                  _         t        j                  | ||      }| j                  ` |S rY   )rK   Ir   rY  )r7   rU  rP   results       r9   rY  zPmlParagraphAndImage.wrapL  s3    ii"''j+FFFKr:   c                    t        | d      s)| j                  j                  ||      \  | _        | _        t        j                  | ||      S )NwI)rN   rx  rY  r{  hIr   r$  r7   rU  rP   s      r9   r$  zPmlParagraphAndImage.splitR  sC    tT"#vv{{K DGTW !&&tZEEr:   N)rC   rD   rE   rY  r$  rU   r:   r9   rv  rv  K  s    Fr:   rv  c                  $    e Zd Zd Zd Zd Zd Zy)r   c                   d| _         | j                  D ]  }t        |d      s|j                  j                  dk(  s*|j                  }|j
                  dkD  sF|j                  dkD  sVd| _         t        |j
                  |      }t        |      |j
                  z  }t        |j                  |t        z        }t        |      |j                  z  }t        ||      }	|xj                  |	z  c_        |xj
                  |	z  c_         y )NFcbDefnr   r   T)
	hasImagesr   rN   r  kindr'  r(  rR  r*   r+   )
r7   rU  rP   r   r   r'  rV  r(  rW  rX  s
             r9   _calcImageMaxSizeszPmlParagraph._calcImageMaxSizes\  s    JJ 	(DtX&4;;+;+;u+Dkk99q=SZZ!^%)DN		:6E#ElSYY6G 

K/$AF $Fmcjj8G '2FJJ&(JII'I	(r:   c                R   | j                  |      }| j                  }|j                  |j                  z   |j                  z   |j
                  z   | _        |j                  |j                  z   |j                  z   |j                  z   | _        || j                  z  }|| j                  z  }| j                  ||       t        j                  | ||       | j                  | j                  z   | _        | j                   | j                  z   | _        | j                  | j                   fS rY   )rQ   stylepaddingLeftpaddingRightborderLeftWidthborderRightWidth
deltaWidth
paddingToppaddingBottomborderTopWidthborderBottomWidthdeltaHeightr  r#   rY  r'  r(  )r7   rU  rP   r  s       r9   rY  zPmlParagraph.wrapm  s   ''4

   !##$ $$% 	 !!"""# %%& 	 	doo%
t''' 	
K8 	tZ5 ZZ$//1
kkD$4$44zz4;;&&r:   c                    t        | j                        dk  rg S t        | d      s| j                  ||       || j                  z  }|| j
                  z  }t        j                  | ||      S )Nr   r  )r=   r   rN   rY  r  r  r#   r$  r}  s      r9   r$  zPmlParagraph.split  sb    tzz?aI t\*IIj+.doo%
t'''tZ==r:   c           
        t        | dd      r,t        | j                  dd      dz   }|| j                  k  rwt               j                  }| j                  j                  |       | j                  j                  | j                  ||| j                          |dz  }|| j                  k  rw| j                  | j                  _	        t               j                  }| j                  j                  |       | j                  j                  | j                  || j                  | j                          |dz  }| j                  | j                  j                  }j                  }d}||z
  }| }| j                  |j                  z   z
  d|z  z   }| j                  d|z  z   }	|rHj!                          j#                  |       j%                  ||||	dd       j'                          d _        j!                          j)                  j*                  j,                  z   dj.                  j0                  z   z         t3        j4                  |        j'                          |_        j!                          fd	}
 |
j6                  j,                  j8                  |||||	z           |
j:                  j<                  j>                  ||z   |||z   ||	z           |
j@                  j0                  jB                  |||	z   ||z   ||	z           |
jD                  jF                  jH                  ||||z   |       j'                          y )
Nr_   FoutlineLastr<   r      )fillstrokec                    |rTt        |       rH|j                  }|7j                  |       j                  |       j	                  ||||       y y y y rY   )r%   	textColorsetStrokeColorsetLineWidthline)	bstyler'  colorx1y1x2y2r   r  s	          r9   _drawBorderLinez*PmlParagraph.draw.<locals>._drawBorderLine  s[    /=!OOE$))%0''.KKBB/ % 0ur:   )%rb   rK   rd   r   hexbookmarkPageaddOutlineEntryrh   outlineOpenr  r  	backColor
leftIndentr'  rightIndentr(  r   setFillColorrectr   	translater  r  r  r  r#   rl  borderLeftStyleborderLeftColorborderRightStyler  borderRightColorborderTopStyleborderTopColorborderBottomStyler  borderBottomColor)r7   lastkeybgr  bpxyr   r   r  r   r  s              @@r9   rl  zPmlParagraph.draw  s#   4E*499mR81<D***gkk		&&s+		))$))S$DDTDT@TU	 *** %)$5$5DII!'++CII""3'II%%		3 1 1t7G7G3G AID 

__%%
OCJJ*u'8'889AFBKK!b& #KK1a1K5!  	!6!66%""U%9%99:	
 	t 
	0 	!!!!!!E	
 	""""""EEE	
 	      EEE	
 	######E	
 	r:   N)rC   rD   rE   r  rY  r$  rl  rU   r:   r9   r   r   [  s    ("$'L>pr:   r   c                      e Zd Zd Zy)PmlKeepInFramec                    t        |d      }t        |d      }|| _        | j                  |      | _        t	        j
                  | ||      S )Ng      ?)rO   maxWidthrQ   	maxHeightr   rY  r}  s      r9   rY  zPmlKeepInFrame.wrap  sH    S)
+s+"**;7j+>>r:   NrC   rD   rE   rY  rU   r:   r9   r  r    s    ?r:   r  c                  *    e Zd Zed        ZddZd Zy)r   c                v    t        | t              r|dz  t        | dd       z  } n	| | dk(  r|} t        | |      S )z'Normalize width when using percentages.g      Y@Nr  rp   )rr   r,   r*   rR  )r   maxws     r9   
_normWidthzPmlTable._normWidth  sB     aq"v.AiQ#XA1d|r:   Nc           	     l    |dk(  r| j                         xs |}t        j                  | ||||||      S )N@ )WHaH)rS   r   _listCellGeom)r7   Vr   sr  r  r  s          r9   r  zPmlTable._listCellGeom&  s9    ;""$*B""4AqArBBr:   c                f   | j                  |       t        | d      s|| _        | j                  | j                  |      }|}d}| j                  }t        |      D ]+  \  }}|| j                  ||      }	||	z  }n|dz  }d }	|	||<   - |dz  }
|dkD  r(t        |      D ]  \  }}|	t        |
||z        ||<    t        |      |kD  r2|t        |      z  }t        t        |            D ]  }||   |z  ||<    t        |      |z
  }|dkD  r|dxx   |z  cc<   t        j                  | ||      S )N
totalWidthr   r<   g{Gz?)rQ   rN   r  r  
_colWidths	enumeraterO   sumranger=   r   rY  )r7   rU  rP   r  remainingWidthremainingColsnewColWidthsr  colWidthnewColWidthminCellWidthquotientdiffs                r9   rY  zPmlTable.wrap,  sj   +& t\*(DO __T__jA
#
 %\2 	*KAx#"ooh
C+-"")LO	* "D(1(6 8#&)$n}&D'LO |z)!C$55H3|,- =".q/H"<Q= < :-!8Ot#Ozz$
K88r:   )NNr  )rC   rD   rE   r;  r  r  rY  rU   r:   r9   r   r     s     C.9r:   r   c                  .     e Zd Zd fdZd ZddZ xZS )PmlPageCountc                0    t         |           d| _        y r   )r4   r5   second_roundr6   s    r9   r5   zPmlPageCount.__init__^  s    !r:   c                ,    | j                   }d| _         |S )NT)r  )r7   r  s     r9   isSatisfiedzPmlPageCount.isSatisfiedb  s     r:   c                     y rY   rU   )r7   r   r  r  _sWs        r9   drawOnzPmlPageCount.drawOng      r:   r@   )r   )rC   rD   rE   r5   r  r  rF   rG   s   @r9   r  r  ]  s    "
r:   r  c                      e Zd Zd Zy)PmlTableOfContentsc           
        || j                   z
  | j                   f}t        | j                        dk(  rdg}n| j                  }d}g }g d}t        |      D ]  \  }}	|	dd \  }
}}| j                  |
   }|r-|j                  dd|fd|ft        ||j                        f       |j                  }t        d|
z  |dt        	      }t        ||      }t        t        |      |      }|j                  ||g        t        ||t        |      
      | _        | j                  j!                  | j"                  ||      \  | _        | _        | j$                  | j&                  fS )z,All table properties should be known by now.r   )r   z!Placeholder for table of contentsr   ))VALIGNr   r   r  r  TOP)LEFTPADDINGr  r  r   )RIGHTPADDINGr  r  r   )
TOPPADDINGr  r  r   )BOTTOMPADDINGr  r  r   Nr  r  r  zleftColLevel%d)r   parentr  	alignment)	colWidthsr  )rightColumnWidthr=   _lastEntriesr  levelStylesr}   rO   spaceBefore
spaceAfterr   r   r#   r,   r   r   _tablewrapOnrK   r'  r(  )r7   rU  rP   widths_tempEntries
lastMargin	tableData
tableStyler  entrylevelrh   pageNumleftColStylerightColStyleleftPara	rightParas                    r9   rY  zPmlTableOfContents.wrapl  sq   t444d6K6KL t  !Q&GHL,,L
	

 ",/ 	4HAu#(!9 E4++E2L!!$AQJ(@(@A	 &00J*%-#"	M !|4H!#g,>Ih	23/	42 Iz*?UV"&++"4"4TYY
K"X
DKzz4;;&&r:   Nr  rU   r:   r9   r  r  k  s    2'r:   r  c                      e Zd ZddZd Zy)PmlRightPageBreakc                     y rY   rU   r>   s    r9   r5   zPmlRightPageBreak.__init__  r  r:   c                ~    | j                   j                         dz  s|| _        || _        ||fS dx| _        | _        yNr  r   r  rK   r   r'  r(  r}  s      r9   rY  zPmlRightPageBreak.wrap  sA    yy&&(1,#DJ%DK{**#$$
T[r:   Nr@   rC   rD   rE   r5   rY  rU   r:   r9   r  r        r:   r  c                      e Zd ZddZd Zy)PmlLeftPageBreakc                     y rY   rU   r>   s    r9   r5   zPmlLeftPageBreak.__init__  r  r:   c                ~    | j                   j                         dz  r|| _        || _        ||fS dx| _        | _        yr
  r  r}  s      r9   rY  zPmlLeftPageBreak.wrap  sA    99""$q(#DJ%DK{**#$$
T[r:   Nr@   r  rU   r:   r9   r  r    r  r:   r  c                  0    e Zd Z	 	 	 	 	 	 d	 ddZd Zd Zy)PmlInputNc                n    || _         || _        || _        || _        || _        ||ng | _        || _        y rY   )r'  r(  typer   defaultoptions	multiline)r7   r   
input_typer'  r(  r  r  r  s           r9   r5   zPmlInput.__init__  s<     
		")"5w2"r:   c                2    | j                   | j                  fS rY   )r'  r(  )r7   argss     r9   rY  zPmlInput.wrap  s    zz4;;&&r:   c           
        | j                   }|j                          |j                  dd       | j                  dk(  rnt	        j
                  || j                  dd| j                  | j                  | j                         |j                  dd| j                  | j                         nI| j                  dk(  r*|j                  dd| j                  | j                         n| j                  dk(  r|| j                  r$t	        j                  || j                  ddd       n#t	        j                  || j                  d	dd       |j                  dd| j                  | j                         n| j                  d
k(  rvt	        j                  || j                  | j                  | j                  dd| j                  | j                         |j                  dd| j                  | j                         |j                          y )N	Helvetica
   rh   r   )r  radiocheckboxYesOffselect)rK   r   setFontr  r   textFieldRelativer   r'  r(  r  r  r  buttonFieldRelativeselectFieldRelativer  r   )r7   r   s     r9   rl  zPmlInput.draw  sc   II				+r"99%%499aDJJt~~ FF1aT[[1YY'!FF1aT[[1YY*$||++Atyy%AF++Atyy%AFFF1aT[[1YY("''499dllDLL!Q

DKK FF1aT[[1	r:   )rh   r  r  r  Nr   r@   )rC   rD   rE   r5   rY  rl  rU   r:   r9   r  r    s/     # 
#$'r:   r  )^
__future__r   r   rf   loggingrz   hashlibr   htmlr   re   ior   r   typingr   r	   r
   uuidr   PILr   r  r   	PIL.Imagereportlab.lib.enumsr   reportlab.lib.stylesr   reportlab.lib.utilsr   r   r   r   reportlab.pdfbaser   reportlab.platypus.doctemplater   r   r   reportlab.platypus.flowablesr   r   r   r   "reportlab.platypus.tableofcontentsr   reportlab.platypus.tablesr   r   reportlab.rl_configr   xhtml2pdf.builders.watermarksr    xhtml2pdf.filesr!   r"   xhtml2pdf.reportlab_paragraphr#   xhtml2pdf.utilr$   r%   reportlab.graphics.shapesr&   reportlab.pdfgen.canvasr'   reportlab.graphicsr(   svglib.svglibr)   ImportError	getLoggerrC   r   r+   r   r-   rx   r/   rI   rW   r   r   r   r   rv  r   r  r   r  r  r  r  r  rU   r:   r9   <module>rD     s    #    
  &   4 4  ! &  ( / S S % 
  ? 7 . 4 8 3 71.+%
 g! E# E*d *Q QVS VSr_"l _"D ci. i.Xx/x* x/vF,.? F u9/ up?["3 ?>9u' >9B# 3' 3'l
 

} 
 .x .  GHs   F 	F)(F)