
     h                     P    d dl Z d dlmZ d dlmZ d dlmZmZ  G d d          ZdS )    N)Image)Canvas)pisaFileObjectgetFilec                       e Zd Zed             Zed             Zei fd            Zed             Zed             ZdS )
WaterMarksc                    |                     dd           }|                     dd           }|                     dd           }|                                 \  }}|\  }	}
|	}t          |          |z  }|
}t          |          |z  }t          ||          }t	          ||          }|r||z  }||z  }n
||z  }||z  }|r|\  }}n|rd|
|z
  }}nd\  }}|r|}|r|}||||fS )Nobject_positionheightwidthr   )r   r   )getgetSizefloatminmax)imgcontextpagesizeis_portraitr
   	cssheightcsswidthiwihpwphr   wfactorr   hfactor
factor_min
factor_maxxys                      Y/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/xhtml2pdf/builders/watermarks.pyget_size_locationzWaterMarks.get_size_location	   s(   !++&7>>KK$//	;;w--BB,,#--"$'**
'**
 	$*_FOEE*_FOE 	"DAqq "V)11 	E 	F!UF""    c                    |                     dd           }|r|                                 }t          j        |          }|                    d          }|                    t          d|z                       |                    |d           t          |          	                                S | 	                                S )NopacityRGBA   PNG)
r   getNamedFiler   openconvertputalphaintsaver   
getBytesIO)pisafiler   r&   namer   s        r"   get_img_with_opacityzWaterMarks.get_img_with_opacity-   s    ++i.. 	.((**D
4  C++f%%CLLS[))***HHT%   4==++---""$$$r$   c                 d   ddl m} t          dd          } |t                              | |                    }t                              ||||          \  }}}	}
t          |                                |          }|                    ||||	|
d           	 |	                                 |S )z
        pypdf requires pdf as background so convert image to pdf in temporary file with same page dimensions
        :param pisafile:  Image File
        :param pagesize:  Page size for the new pdf
        :return: pisaFileObject as tempfile
        r   )PmlImageReaderNzapplication/pdf)r   auto)mask)
xhtml2pdf.xhtml2pdf_reportlabr5   r   r   r3   r#   r   r*   	drawImager/   )r1   r   r   r   r5   outputr   r    r!   r   r   canvass               r"   generate_pdf_backgroundz"WaterMarks.generate_pdf_background9   s     	A@@@@@&788n++Hg>>
 
 )::3S^__1eV++--AAAaE6???	( 	r$   c              #   H  K   | j         rt          t          d | j                             |dz   gz   }|                    d           d}| j         D ]O\  }}}|                                s.t          |||                   |t          |d                   fV  |dz  }Nd S d S )Nc                     | d         S )Nr    )r    s    r"   <lambda>z*WaterMarks.get_watermark.<locals>.<lambda>g   s
    qt r$      r   step)pisaBackgroundListlistmappopnotFoundranger.   )r   max_numpagepagescounterpagebgfile	pgcontexts          r"   get_watermarkzWaterMarks.get_watermarkd   s      % 	^^W-GHHII;WX=/YEIIaLLLG+2+E  'fi(( VeGn55vs9VCT?U?UUUUU
	 	 r$   c                    t          j                    }t          j        |          }d}t                              | t          |j                            D ]\  }}}t          |          D ]\  }	}
t          j        |                                          }|j        d         }|j        |
dz
           }|	|z  dk    r|	                    |           |}|
                    |           d}|r|                    |           ||fS )NFr   rA   T)pypdf	PdfWriter	PdfReaderr   rO   lenrJ   	enumerater0   
merge_pageadd_pagewrite)r   istreamr:   	pdfoutputinput1has_bgrJ   bgouterrB   indexctrbginputpagebgrL   s                 r"   process_doczWaterMarks.process_doco   s   O%%	))$.$<$<Wc&,FWFW$X$X 		 		 E7D'..  
s/'*<*<*>*>?? q)|CE*:??%%d+++!D""4(((  	$OOF###v~r$   N)	__name__
__module____qualname__staticmethodr#   r3   r<   rO   rb   r?   r$   r"   r   r      s        !# !# \!#F 	% 	% \	% IK ( ( ( \(T   \   \  r$   r   )	rQ   PILr   reportlab.pdfgen.canvasr   xhtml2pdf.filesr   r   r   r?   r$   r"   <module>rj      s           * * * * * * 3 3 3 3 3 3 3 3y y y y y y y y y yr$   