
     hņ                     2   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 d dlmc 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mZ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' d dl(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0 d dl1m2Z2 	 d dl3m4Z4m5Z5 d dl6m7Z7 n# e8$ r dZ7dZ5Y nw xY w ej9        d          Z:dZ;dZ< G d de=          Z> G d d          Z? G d de          Z@ G d de          ZAdZB G d d eC          ZD G d! d"e e?          ZE G d# d$e"e?          ZF G d% d&e-e?          ZG G d' d(e!e?          ZH G d) d*e&e?          ZI G d+ d,e          ZJ G d- d.e$          ZK G d/ d0e          ZL G d1 d2e          ZM G d3 d4e           ZNdS )5    N)md5)escape)BytesIOStringIO)TA_RIGHT)ParagraphStyle)LazyImageReaderflatten
haveImagesopen_for_read)BaseDocTemplateIndexingFlowablePageTemplate)CondPageBreakFlowableKeepInFrameParagraphAndImage)TableOfContents)Table
TableStyle)register_reset)
WaterMarks)	Paragraph)getBorderStylegetUID)pisaTempFile)	renderPDFrenderPM)svg2rlg	xhtml2pdfgffffff?z3xhtml2pdf <https://github.com/xhtml2pdf/xhtml2pdf/>c                       e Zd Zd Zd ZdS )PTCyclec                 V    d| _         d| _        t                              |            d S Nr   )_restart_idxlist__init__selfs    Y/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/xhtml2pdf/xhtml2pdf_reportlab.pyr(   zPTCycle.__init__9   s(    	d    c              #      K   	 | | j                  V  | xj         dz  c_         | j         t          |           k    r| j        | _         D)N   )r&   lenr%   r)   s    r+   cyclicIteratorzPTCycle.cyclicIterator>   sM      	*ty/!!!IINIIyCII%% M			*r,   N)__name__
__module____qualname__r(   r0    r,   r+   r"   r"   8   s2          
* * * * *r,   r"   c                       e Zd Zd Zd ZdS )PmlMaxHeightMixInc                     || _         |dk     r]t          | d          rLt          | j        d          sd| j        _        t	          || j        j                  x| _         | j        _        n|| _         t          | d          sd| _         | j         S )Nip canvmaxAvailHeightValuer   availHeightValue)r:   hasattrr8   r9   max)r*   availHeights     r+   setMaxHeightzPmlMaxHeightMixIn.setMaxHeightG   s     +tV$$ 3ty*?@@ 645DI1HKI1I3 I3 3%	(E
 %0D!t/00 	&$%D!$$r,   c                 4    t          | d          sdS | j        S )Nr:   r   )r;   r:   r)   s    r+   getMaxHeightzPmlMaxHeightMixIn.getMaxHeightX   s#    t/00 	1$$r,   N)r1   r2   r3   r>   r@   r4   r,   r+   r6   r6   F   s2        % % %"% % % % %r,   r6   c                   *    e Zd ZdZd Zd Zd Zd ZdS )
PmlBaseDoczj
    We use our own document template to get access to the canvas
    and set some informations once.
    c                 <    t           | j        j        j        _        d S N)PRODUCERr8   _docinfoproducerr)   s    r+   
beforePagezPmlBaseDoc.beforePaged   s    '/	$	 	r,   c           	          t          |dd          rJ|                     d|j        t          t	          j        |j                  d          | j        f           d S d S )NoutlineFTOCEntryr.   )getattrnotifyoutlineLevelhtml_escapecopydeepcopytextpage)r*   flowables     r+   afterFlowablezPmlBaseDoc.afterFlowabley   sk    8Y.. 	KK
%DM(-88!<<	%     	 	r,   c                    |                      |dz             }|                      |dz             }|r|r
|dz   |dz   g}	 t          |t                    r[t          | d          r| `| j        D ]/}|j        |k    r"| j                            |          | _         dS 0t          d|z            t          |t                    rt          | d          r| `|| _        dS t          |t          t          f          rt                      }|D ][}|dk    rt          |          |_        | j        D ]6}|j        |                                k    r|                    |            n7\|st          d          |j        t          |          k    rt          d          |                                | _        dS t'          d	          )
zS
        if pt has also templates for even and odd page convert it to list
        _left_right_nextPageTemplateCycleNzcan't find template('%s')*z No valid page templates in cyclezInvalid cycle restart positionz/Argument pt should be string or integer or list)_has_template_for_name
isinstancestrr;   rZ   pageTemplatesidindex_nextPageTemplateIndex
ValueErrorintr'   tupler"   r/   r%   stripappendr0   	TypeError)r*   pthas_left_templatehas_right_templatetcptns          r+   handle_nextPageTemplatez"PmlBaseDoc.handle_nextPageTemplate   s	    !77WEE!88hGG 	/!3 	/w,X.BJb# !	Ot566 0/'  42::262D2J2J12M2MD/FF  82=>>>C   	Ot566 0/*,D'''T5M** 	O 		A  #::!$QAJ+  Atsyy{{** +  C !CDDDc!ff$$ !ABBB +,*:*:*<*<D'''MNNNr,   c                 Z    | j         D ]"}|j        |                                k    r dS #dS )NTF)r_   r`   rf   )r*   nametemplates      r+   r\   z!PmlBaseDoc._has_template_for_name   s:    * 	 	H{djjll**tt +ur,   N)r1   r2   r3   __doc__rI   rV   ro   r\   r4   r,   r+   rB   rB   ^   s^         
  *  ,O ,O ,O\    r,   rB   c                   8    e Zd ZdZdZeZd Zd Zd Zd Z	d Z
dS )	PmlPageTemplateportrait	landscapec                     g | _         g | _        d | _        t          j        | fi | d| _        d| _        d | _        d| _        d| _	        d| _
        g | _        d S )Nr   T)pisaStaticListpisaBackgroundListpisaBackgroundr   r(   _page_count_first_flowimgphhwbackgroundids)r*   kws     r+   r(   zPmlPageTemplate.__init__   so     "$"d))b))) r,   c                     | j         r\|                                | j        k    rd| _         n7|                                | _        |                                |j        _        | j         S NF)r}   getPageNumberr|   _doctemplate)r*   canvass     r+   isFirstFlowzPmlPageTemplate.isFirstFlow   sg     	I##%%)999#(  #)#7#7#9#9 282F2F2H2H#/r,   c                 "    | j         | j        k    S rD   )pageorientationPORTRAITr)   s    r+   
isPortraitzPmlPageTemplate.isPortrait   s    #t}44r,   c                 "    | j         | j        k    S rD   )r   	LANDSCAPEr)   s    r+   isLandscapezPmlPageTemplate.isLandscape   s    #t~55r,   c                 J                                     	 |j        j        | j        vrd }t	          | d          r| j        r| j                                        s| j                                                            d          r:t          j
        | j        | j        |                                 | j                  }n| j        }| j                            |j        j                   |r4| j                                                            || j        f           fd	                                 | j        k    r7                                | _                                        j        _        | j        D ]>}t)          j        |          }|j        } |           |                    |           ?n,# t0          $ r t2                              dd           Y nw xY w                                 d S #                                  w xY w)Nr{   zimage/)contextc                 P   t          |           D ]}t          |t                    rL|j        D ]C}|j        rt                    |_        |j        rt          j        j	                  |_        Dct          |t                    rd |j        D             } |           d S )Nc                     g | ]	}|D ]}|
S r4   r4   ).0sublistitems      r+   
<listcomp>zIPmlPageTemplate.beforeDrawPage.<locals>.pageNumbering.<locals>.<listcomp>   s&    %^%^%^wV]%^%^dd%^%^%^%^r,   )r
   r]   PmlParagraphfrags
pageNumberr^   rS   	pageCountr   r|   PmlTable_cellvalues)objListobjfrag
flat_cellsr   pageNumbering
pagenumbers       r+   r   z5PmlPageTemplate.beforeDrawPage.<locals>.pageNumbering   s    "7++ 2 2C!#|44 
2$'I Q QD# Q,/
OO		!% Q,/0C0O,P,P		Q $C22 2%^%^#/%^%^%^
%j1112 2r,   ru   r.   exc_info)	saveStatepageTemplater`   r   r;   r{   notFoundgetMimeType
startswithr   generate_pdf_backgroundpagesizer   backgroundContextrg   rz   r   r|   r   ry   rQ   rR   pisaStaticStoryaddFromList	ExceptionlogdebugrestoreState)r*   r   docr{   framestoryr   r   s    `    @@r+   beforeDrawPagezPmlPageTemplate.beforeDrawPage   sa   /	""$*<<<!%4!122 Ct7J CTXTgTpTpTrTr C*6688CCHMM =)3)KDL_LPM[_[j[j[l[lTXTj*l *l *l *.)<&--c.>.ABBB! u+22F4H4H4J4JN\`\r3sttt2 2 2 2 2 2 29 $1133
 000'-';';'='=D$6<6J6J6L6LF'3!0 5 5E M%00E!1E!M%(((%%eV44445  9 9 9		+a	888889 !!!!!F!!!!s1   DH -BG
 	H 
&G30H 2G33H H"N)r1   r2   r3   r   r   r   r(   r   r   r   r   r4   r,   r+   ru   ru      sn        HIO           5 5 56 6 61" 1" 1" 1" 1"r,   ru   r.   c                   L    e Zd ZdZi Zd Zd Zd Zd Zd Z	d Z
d Zd	 Zd
 ZdS )PmlImageReaderz>
    Wraps up either PIL or Java to get data from bitmaps
    c                    t          |t                    r|j        | _        d S || _        d | _        d | _        d | _        d | _        d | _        d}t          rit          |t          j
                  rO|| _        t          |dd           | _        	 || _        d S # t          $ r dt          |           z  | _        Y d S w xY w	 t          |d          | _        t          | j        t!                      j                  rd}|dk    r| j                                        }|dz  r"	 | j                                         n#  Y nxY w|dz  rZ| j        st+          | j        j                   | j                            t1          |                                          |          }t5          |          | _        nB|dk    r<t          |t6                    r'| j                                         | `t8          | _        t:          rP| j        s|                     | j                  | _        t          | j        dd           d	k    r| j        | _         d S d S dd
l!m"} 	  || j                  \  | _        | _        }n#  tG          d          xY w| j        | _         | j                                        | _        d | _$        | j        %                    d           d S #  tM          j'                    \  }}}tQ          |d          r\t7          |j)        d                   d|z  z   }	|j)        d d         |	fz   |_)        tG          d*                    |||                     xY w)Nr   fpzPILIMAGE_%db      formatJPEG)readJPEGInfozBImaging Library not available, unable to import bitmaps only jpegsargsz fileName=%rz{0} {1} {2})+r]   r   __dict__fileName_image_width_height_transparent_dataPILImageImagerM   r   AttributeErrorr`   r   r   	__class__readclose_cacher   clear
setdefaultr   digestr   r^   r	   r   _read_image_jpeg_fhjpeg_fhreportlab.pdfbase.pdfutilsr   RuntimeError_dataAseeksysr   r;   r   r   )
r*   r   imageReaderFlagsdatar   rm   etevtbas
             r+   r(   zPmlImageReader.__init__  sM   h// 	$-DMF ! 
 7	
8X^<< 7	"DKhd33DG9 (! 9 9 9 -4 89/'#66dgwyy':;; )'($#a''7<<>>D'!+ !! GMMOOOO! D'!+ P#{ >*4;+<===#{55c$ii6F6F6H6H$OO&tnnDGG%,,Hc1J1J,GMMOOO%4DN $; @&*&6&6tw&?&?t{Hd;;vEE'+} FE HGGGGGq7C|DG7L7L4T\11q*+oppp#'=DL!%DJ"&DKGLLOOOOO \^^
B2v&& BGCL))^h-FGA geent3BG&}';';BB'G'GHHHsX   B !B=<B=A!K #D= <K =E?DK K I7 6K 7JAK BMc                     t           j        dd         dk    r>ddlm} ddlm}  ||                                          }|                    |          S t          rt          j        |          S d S )Nr   r   java)ByteArrayInputStream)ImageIO)	r   platformjava.ior   javax.imageior   r   r   open)r*   r   r   r   input_streams        r+   r   zPmlImageReader._read_image^  s    <!&&444444------//		::L<<--- 	%=$$$	% 	%r,   c                 >    | j         }|                    d           |S r$   )r   r   )r*   r   s     r+   r   zPmlImageReader._jpeg_fhg  s    W



	r,   c                     d S rD   r4   r)   s    r+   r   zPmlImageReader.jpeg_fhl  s    tr,   c                    | j         | j        nt          j        dd         dk    r=| j                                        | _         | j                                        | _        n| j        j        \  | _         | _        | j         | j        fS )Nr   r   r   )r   r   r   r   r   getWidth	getHeightsizer)   s    r+   getSizezPmlImageReader.getSizeo  su    ;$,"6|AaC F**"k2244#{4466,0K,<)T\{DL((r,   c           
         | j         d| _        t          j        dd         dk    rddl}ddlm} |                                 \  }}|                    ||z  d          } || j	        dd|||d|          }|
                                 g }|j        }|D ]Y}	 |t          |	dz	  dz                        |t          |	d	z	  dz                        |t          |	dz                       Zd
                    |          | _         d| _        n| j	        }
|
j        x}| _        |dk    r]|
                                 t!          |
                                d                   | _        |
                    d          }
d| _        n |dvr|
                    d          }
d| _        t'          |
d          r|
                                | _         n|
                                | _         | j         S )z'Return byte array of RGB data as stringNr   r   r   )PixelGrabberi          RGBRGBA   )Lr   CMYKtobytes)r   r   r   r   jarrayjava.awt.imager   r   zerosr   
grabPixelsrg   chrjoinmodeloadr   splitconvertr;   r   tostring)r*   r  r   widthheightbufferpgpixelsr   rgbimr  s               r+   
getRGBDatazPmlImageReader.getRGBDatax  s   :DK|AaC F**777777 $vefnc::!\$+q!UFFAuUU M! ' 'CAc3"9,--...Ac3!8t+,,---Ac#*oo&&&&WWV__
!		[#%7*ty6>>GGIII"0A"?"?DKE**B %DII!555E**B %DI2y)) /!#DJJ "$DJzr,   c                 ^    |                                  \  }}|||                                 fS rD   )r   r  )r*   r  r  s      r+   getImageDatazPmlImageReader.getImageData  s*    vfdoo////r,   c                    t           j        dd         dk    rd S d| j        j        v r| j        j        d         dz  }| j        j        }t          |d          r|j        }nt          |d          r|j        }nd S 	 t          |||dz                      S # t          $ r4}t          
                    t          |          |           Y d }~d S d }~ww xY wd S )	Nr   r   r   transparencyr   paletter   r   )r   r   r   rG   r  r;   r   r'   r   r   r   r^   )r*   r  r  es       r+   getTransparentzPmlImageReader.getTransparent  s    <!&&4t{///;+N;a?Lk)Gw	** !/&)) !,tGL1A$ABCCC   		#a&&1	---ttttt 4s   =B 
C!)CCc                     	 | j                                         }|st          |           }dt          |          z  S #  | j         }|st          |           }|cY S xY w)NzPmlImageObject_%s)r   r   r`   hash)r*   fns     r+   __str__zPmlImageReader.__str__  sj    		##%%B XX&b11	B XXIIIs	   ;> AN)r1   r2   r3   rs   r   r(   r   r   r   r   r  r  r  r  r4   r,   r+   r   r     s          FD D DL% % %  
  ) ) )& & &P0 0 0  .
 
 
 
 
r,   r   c                   >    e Zd Zd
dZd ZddZd Zd Zd Zdd	Z	dS )PmlImageNautoc                    || _         d| _        || _        t          |t                    r|                                n|| _        || _        |                                 }|r&|	                                pd\  }}| _
        | _        n7|                                 }	|	r!|	                                \  | _
        | _        |p| j
        | _        |p| j        | _        d S )NCENTER)r   r   r   r   )r   hAlign_maskr]   r   getvalue_imgdatamimetype
getDrawing	getBounds
imageWidthimageHeightgetImager   	drawWidth
drawHeight)
r*   r   r  r  maskr(  r   drawing_r~   s
             r+   r(   zPmlImage.__init__  s    
+5dL+I+ISt  //## 	B6=6G6G6I6I6Y\3Aq$/4#3#3--//C B47KKMM1!11$/ 4D$4r,   c                 d   |                      |          }t          | j        |          }t          |          | j        z  }t          | j        |t
          z            }t          |          | j        z  }t          ||          }| j        |z  | _        | j        |z  | _        | j        | j        fS )zS This can be called more than once! Do not overwrite important data like drawWidth )r>   minr.  floatr/  MAX_IMAGE_RATIOdWidthdHeight)r*   
availWidthr=   r  wfactorr  hfactorfactors           r+   wrapzPmlImage.wrap  s    ''44DNJ//,,/T_kO&CDD--$/1Wg&&nv-/{DL((r,   c                 `   t           r	 t          t          | j                            }n# t          $ r Y dS w xY w|rpd}d}t	          | dd          || j        }||j        z  }t	          | dd          || j        }||j        z  }|dk    s|dk    r|	                    ||           |S dS )z[ If this image is a vector image and the library is available, returns a ReportLab Drawing.Nr.   r.  r/  )
r   r   r'  r   rM   r.  r  r/  r  scale)r*   r  r  r1  scale_xscale_ys         r+   r)  zPmlImage.getDrawing  s     	!'$-"8"899   tt  4d33?} $#gm3G4t44@~!%$w~5Ga<<7a<<MM'7333ts   !+ 
99c                     t           rDt          r=|                                 }|r't                      }t          j        ||d           |S dS )zX If this image is a vector image and the libraries are available, returns a PNG raster. PNG)fmtN)r   r   r)  r   
drawToFile)r*   svgimgdatas      r+   getDrawingRasterzPmlImage.getDrawingRaster  sS     	x 	//##C !))#Ce<<<<tr,   c                 x    |                                  }|pt          | j                  }t          |          }|S )z Returns a raster image. )rH  r   r'  r   )r*   vectorRasterrG  r~   s       r+   r-  zPmlImage.getImage  s9    ,,..8'$-"8"8W%%
r,   c                     |                                  }| j                            |dd| j        | j        | j                   d S )Nr   )r0  )r-  r8   	drawImager7  r8  r%  )r*   r~   s     r+   drawzPmlImage.draw  sQ     mmoo	qKL 	 	 	 	 	 	r,   c                 0    t          j        | |          }|S rD   )r   identity)r*   maxLenrs      r+   rO  zPmlImage.identity%  s    dF++r,   )NNr!  N)NNrD   )
r1   r2   r3   r(   r=  r)  rH  r-  rM  rO  r4   r,   r+   r   r     s        5 5 5 5() ) )   4           r,   r   c                       e Zd Zd Zd ZdS )PmlParagraphAndImagec                 b    | j         | j        _         t          j        | ||          }| j        ` |S rD   )r8   Ir   r=  )r*   r9  r=   results       r+   r=  zPmlParagraphAndImage.wrap+  s-    i"'j+FFFKr,   c                     t          | d          s(| j                            ||          \  | _        | _        t          j        | ||          S )NwI)r;   rU  r=  rX  hIr   r	  r*   r9  r=   s      r+   r	  zPmlParagraphAndImage.split1  sH    tT"" 	D#v{{:{CCDGTW &tZEEEr,   N)r1   r2   r3   r=  r	  r4   r,   r+   rS  rS  *  s7          F F F F Fr,   rS  c                   &    e Zd Zd Zd Zd Zd ZdS )r   c                    d| _         | j        D ]}t          |d          r|j        j        dk    r|j        }|j        dk    r|j        dk    rd| _         t          |j        |          }t          |          |j        z  }t          |j        |t          z            }t          |          |j        z  }t          ||          }	|xj        |	z  c_        |xj        |	z  c_        d S )NFcbDefnr~   r   T)
	hasImagesr   r;   r]  kindr  r  r4  r5  r6  )
r*   r9  r=   r   r~   r  r:  r  r;  r<  s
             r+   _calcImageMaxSizeszPmlParagraph._calcImageMaxSizes9  s    J 	( 	(DtX&& 
(4;+;u+D+Dk9q==SZ!^^%)DN	:66E#EllSY6G [?-JKKF#Fmmcj8G '22FJJ&(JJII'II	( 	(r,   c                    |                      |          }| j        }|j        |j        z   |j        z   |j        z   | _        |j        |j        z   |j	        z   |j
        z   | _        || j        z  }|| j        z  }|                     ||           t          j        | ||           | j        | j        z   | _        | j        | j        z   | _        | j        | j        fS rD   )r>   stylepaddingLeftpaddingRightborderLeftWidthborderRightWidth
deltaWidth
paddingToppaddingBottomborderTopWidthborderBottomWidthdeltaHeightr`  r   r=  r  r  )r*   r9  r=   rb  s       r+   r=  zPmlParagraph.wrapH  s    ''44
+e.@@5CXX[`[qq +e.AAEDXX[`[rr 	do%
t'' 	
K888 	tZ555 Z$/1
kD$44z4;&&r,   c                     t          | j                  dk    rg S t          | d          s|                     ||           || j        z  }|| j        z  }t          j        | ||          S )Nr   rg  )r/   r   r;   r=  rg  rl  r   r	  rZ  s      r+   r	  zPmlParagraph.splite  so    tz??aI t\** 	/IIj+...do%
t''tZ===r,   c           
         t          | dd          rt          | j        dd          dz   }|| j        k     r`t                      }| j                            |           | j                            | j        ||| j                    |dz  }|| j        k     `| j        | j        _        t                      }| j                            |           | j                            | j        || j        | j                    |dz  }| j        | j	        j
        }j        }d}||z
  }| }| j        |j        z   z
  d|z  z   }| j        d|z  z   }	|rX                                                     |                               ||||	dd                                            d _
                                                             j        j        z   dj        j        z   z             t1          j        |                                             |_
                                         fd	}
 |
j        j        j        |||||	z               |
j        j        j        ||z   |||z   ||	z               |
j        j        j         |||	z   ||z   ||	z               |
j!        j"        j#        ||||z   |                                            d S )
NrK   FoutlineLastr   r.   r   r   )fillstrokec                     |r^t          |           rQ|j        }|H                    |                               |                               ||||           d S d S d S d S rD   )r   	textColorsetStrokeColorsetLineWidthline)	bstyler  colorx1y1x2y2r   rb  s	          r+   _drawBorderLinez*PmlParagraph.draw.<locals>._drawBorderLine  s     0// 0=!OE$))%000''...KKBB/////0 0 0 0
 %$r,   )$rM   r8   rO   r   bookmarkPageaddOutlineEntryrS   outlineOpenro  rb  	backColor
leftIndentr  rightIndentr  r   setFillColorrectr   	translaterc  re  rh  rj  r   rM  borderLeftStyleborderLeftColorborderRightStylerf  borderRightColorborderTopStyleborderTopColorborderBottomStylerk  borderBottomColor)r*   lastkeybgr  bpxyr   r   r}  r   rb  s              @@r+   rM  zPmlParagraph.draws  s    4E** 	 49mS99A=D***hh	&&s+++	))I((	* * *
 	 *** %)$5DI!((CI""3'''I%%	!$$	& & &
 AID 
_%
ODJ*u'889AFBK!b&  	"###KK1a1K555!!!  	!66%"U%99:	< 	< 	<
 	t 
	0 
	0 
	0 
	0 
	0 
	0 	---1aQ	( 	( 	( 	...Aq!a%Q	0 	0 	0 	,,,1q5!a%Q	0 	0 	0 	///1a!eQ	( 	( 	(
 	r,   N)r1   r2   r3   r`  r=  r	  rM  r4   r,   r+   r   r   8  sU        ( ( (' ' ':> > >c c c c cr,   r   c                       e Zd Zd ZdS )PmlKeepInFramec                     t          |d          }t          |d          }|| _        |                     |          | _        t	          j        | ||          S )Ng      ?)r<   maxWidthr>   	maxHeightr   r=  rZ  s      r+   r=  zPmlKeepInFrame.wrap  sQ    S))
+s++"**;77j+>>>r,   Nr1   r2   r3   r=  r4   r,   r+   r  r    s#        ? ? ? ? ?r,   r  c                   "    e Zd Zd ZddZd ZdS )r   c                     t          |          t          d          k    r|dz  t          |dd                   z  }n
||dk    r|}t          ||          S )z4
        Helper for calculating percentages
        r   g      Y@Nr   r[   )typer5  r4  )r*   r   maxws      r+   
_normWidthzPmlTable._normWidth  sY     77d2hh,%%C%//1AAiQ#XXA1d||r,   N@ c           	      p    |dk    r|                                  p|}t          j        | ||||||          S )Nr  )WHaH)r@   r   _listCellGeom)r*   Vr   sr  r  r  s          r+   r  zPmlTable._listCellGeom  sA    ;;""$$*B"4AqArBBBBr,   c                    |                      |           	 | j         n#  || _        Y nxY w|                     | j        |          }|}d}| j        }t	          |          D ]5\  }}||dk    r|                     ||          }||z  }n|dz  }d }|||<   6|dz  }	|dk    r-t	          |          D ]\  }}|t          |	||z            ||<   t          |          |k    r?|t          |          z  }
t          t          |                    D ]}||         |
z  ||<   t          |          |z
  }|dk    r|dxx         |z  cc<   t          j
        | ||          S )Nr   r[   r.   g{Gz?)r>   
totalWidthr  
_colWidths	enumerater<   sumranger/   r   r=  )r*   r9  r=   r  remainingWidthremainingColsnewColWidthsr   colWidthminCellWidthquotientdiffs               r+   r=  zPmlTable.wrap  s   +&&&	)OOO	)(DOOO __T_jAA
#
 %\22 	' 	'KAx$(c//??8Z@@(*"&LOO "D(1(66 X X8#&),8V&W&WLO |z))!C$5$55H3|,,-- = =".q/H"<Q <  :-!88OOOt#OOOz$
K888s    	*)NNr  )r1   r2   r3   r  r  r=  r4   r,   r+   r   r     sJ          C C C C/9 /9 /9 /9 /9r,   r   c                   "    e Zd Zd Zd ZddZdS )PmlPageCountc                 <    t          j        |            d| _        d S r   )r   r(   second_roundr)   s    r+   r(   zPmlPageCount.__init__&  s!    !$'''!r,   c                 "    | j         }d| _         |S )NT)r  )r*   r  s     r+   isSatisfiedzPmlPageCount.isSatisfied*  s     r,   r   c                     d S rD   r4   )r*   r   r  r  _sWs        r+   drawOnzPmlPageCount.drawOn/      r,   N)r   )r1   r2   r3   r(   r  r  r4   r,   r+   r  r  %  sF        " " "  
     r,   r  c                       e Zd Zd ZdS )PmlTableOfContentsc           
         || j         z
  | j         f}t          | j                  dk    rdg}n| j        }d}g }g d}t          |          D ]\  }}	|	dd         \  }
}}| j        |
         }|r0|                    dd|fd|ft          ||j                  f           |j        }t          d|
z  |dt          	          }t          ||          }t          t          |          |          }|                    ||g           t          ||t          |          
          | _        | 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)rq   parentr  	alignment)	colWidthsrb  )rightColumnWidthr/   _lastEntriesr  levelStylesrg   r<   spaceBefore
spaceAfterr   r   r   r^   r   r   _tablewrapOnr8   r  r  )r*   r9  r=   widths_tempEntries
lastMargin	tableData
tableStyler   entrylevelrS   pageNumleftColStylerightColStyleleftPara	rightParas                    r+   r=  zPmlTableOfContents.wrap4  s   
 t44') t !!Q&&GHLL,L
	
 
 

 ",// 	4 	4HAu#(!9 E4+E2L @!! FS!H
L$<==#? @ @ @
 &0J*0@50H2>675=? ? ?M !|44H!#g,,>>Ih	23333Z((* * *
 #'+"4"4TY
K"X"X
DKz4;&&r,   Nr  r4   r,   r+   r  r  3  s#        3' 3' 3' 3' 3'r,   r  c                       e Zd Zd Zd ZdS )PmlRightPageBreakc                     d S rD   r4   r)   s    r+   r(   zPmlRightPageBreak.__init__k  r  r,   c                 ~    | j                                         dz  s|| _        || _        ||fS dx| _        | _        dS Nr   r   r  r8   r   r  r  rZ  s      r+   r=  zPmlRightPageBreak.wrapn  sI    y&&((1, 	+#DJ%DK{**#$$
T[tr,   Nr1   r2   r3   r(   r=  r4   r,   r+   r  r  j  2              r,   r  c                       e Zd Zd Zd ZdS )PmlLeftPageBreakc                     d S rD   r4   r)   s    r+   r(   zPmlLeftPageBreak.__init__x  r  r,   c                 ~    | j                                         dz  r|| _        || _        ||fS dx| _        | _        dS r  r  rZ  s      r+   r=  zPmlLeftPageBreak.wrap{  sI    9""$$q( 	+#DJ%DK{**#$$
T[tr,   Nr  r4   r,   r+   r  r  w  r  r,   r  c                   &    e Zd Z	 	 d	dZd Zd ZdS )
PmlInputrS   
   r   Nr   c                 p    || _         || _        || _        || _        || _        ||ng | _        || _        d S rD   )r  r  r  rq   defaultoptions	multiline)r*   rq   
input_typer  r  r  r  r  s           r+   r(   zPmlInput.__init__  s@    
		")"5ww2"r,   c                     | j         | j        fS rD   )r  r  )r*   r   s     r+   r=  zPmlInput.wrap  s    z4;&&r,   c           
      H   | j         }|                                 |                    dd           | j        dk    rRt	          j        || j        dd| j        | j        | j	                   |
                    dd| j        | j                   n| j        dk    r#|
                    dd| j        | j                   n| j        dk    re| j        rt	          j        || j        ddd           nt	          j        || j        d	dd           |
                    dd| j        | j                   na| j        d
k    rVt	          j        || j        | j        | j        dd| j        | j                   |
                    dd| j        | j                   |                                 d S )N	Helveticar  rS   r   )r  radiocheckboxYesOffselect)r8   r   setFontr  pdfformtextFieldRelativerq   r  r  r  r  r  buttonFieldRelativeselectFieldRelativer  r   )r*   rm   s     r+   rM  zPmlInput.draw  s   I				+r"""9%aAq$*dk]a]kllllFF1aT[1111Y'!!FF1aT[1111Y*$$| G+Aty%AFFFF+Aty%AFFFFF1aT[1111Y(""'49dlDLRSUVX\XbdhdopppFF1aT[111	r,   )rS   r  r  r   Nr   )r1   r2   r3   r(   r=  rM  r4   r,   r+   r  r    sL        MO)*# # # #' ' '    r,   r  )OrQ   loggingr   hashlibr   htmlr   rP   ior   r   	PIL.Imager   r   reportlab.pdfbase.pdfformpdfbaser  reportlab.lib.enumsr   reportlab.lib.stylesr   reportlab.lib.utilsr	   r
   r   r   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.reportlab_paragraphr   xhtml2pdf.utilr   r   xhtml2pdf.filesr   reportlab.graphicsr   r   svglib.svglibr   ImportError	getLoggerr   r6  rE   r'   r"   r6   rB   ru   _ctrobjectr   r   rS  r   r  r   r  r  r  r  r  r4   r,   r+   <module>r     s1  "   



       & & & & & &                       + + + + + + + + + ( ( ( ( ( ( / / / / / /< < < < < < < < < < < <: : : : : : : : : := = = = = = = = = = = = > > > > > > 7 7 7 7 7 7 7 7 . . . . . . 4 4 4 4 4 4 3 3 3 3 3 3 1 1 1 1 1 1 1 1 ( ( ( ( ( (66666666%%%%%%%   GHHH g$$@* * * * *d * * *% % % % % % % %0U U U U U U U UpV" V" V" V" V"l V" V" V"r 	s s s s sV s s sl_ _ _ _ _x* _ _ _DF F F F F,.? F F F^ ^ ^ ^ ^9/ ^ ^ ^B? ? ? ? ?["3 ? ? ?@9 @9 @9 @9 @9u' @9 @9 @9F    #   4' 4' 4' 4' 4' 4' 4' 4'n
 
 
 
 
 
 
 

 
 
 
 
} 
 
 
 " " " " "x " " " " "s   B 	B('B(