
    BBT9                         d Z dZdZdZddlmZ ddlmZmZm	Z	m
Z
 dZd Zdd
Z G d de
          Z G d de          ZdS )zHTML Renderer for FPDF.pyz%Mariano Reingart <reingart@gmail.com>z#Copyright (C) 2010 Mariano ReingartzLGPL 3.0   )FPDF)PY3K
basestringunicode
HTMLParserFc                 ,    t          |           dz  dz  S )Nffffff9@      R@int)pxs    Y/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/fpdf/html.pypx2mmr      s    r774<    #000000c                     | rMt          | dd         d          }t          | dd         d          }t          | dd         d          }|||fS d S )Nr               r   )colorrgbs       r   hex2decr      sd     ac
Bac
Bac
B!Qw	 r   c                   n    e Zd ZdZddZd Zd Zd Zd Zd Z	d	 Z
d
 Zd ZddZddZddZd Zd ZdS )	HTML2FPDFzRender basic HTML to FPDFNc                    t          j        |            i | _        d| _        d| _        d| _        i | _        d | _        g | _        || _	        |pd | _
        dx| _        x| _        | _        d| _        g | _        |                     dd           d| _        d| _        d | _        d | _        d | _        d | _        d| _        d | _        d | _        d | _        d | _        d | _        dx| _        | _        t?          ddd	d
dd          | _         d S )NF c                     | S N )srcs    r   <lambda>z$HTML2FPDF.__init__.<locals>.<lambda>'   s    3 r       times      g      ?gQ?r   g(\?gq=
ףp?)h1h2h3h4h5h6)!r   __init__styleprehrefalign
page_linksfont
font_stackpdf	image_mapr   r   r   indentbulletset_font	font_facer   tabletable_col_widthtable_col_indextdthtrtheadertfootertheadtfoottheader_outtfooter_outdicthsize)selfr7   r8   s      r   r/   zHTML2FPDF.__init__   s   D!!!
	
	"7#$$$$&gr""" 

##

.334+Q34A$4HHH


r   c                 B   |d         dk    r| j         j        | j         j        z
  | j         j        z
  }| j        d         d         dk    r(|t          | j        d         d d                   dz  z  }t          |d d                   |z  dz  S t          |          dz  S )N%width      Y@g     @Y@g      @)r7   wr_marginl_marginr=   r   )rK   lengthtotals      r   width2mmzHTML2FPDF.width2mm;   s    ":s??HJ!22TX5FFEz'"2&++TZ0"566u<<vcrc{##e+e33v;;$$r   c           	      n     j         Hd j         vr;d j         vr2	  j         j                 g}nv# t          $ r t	          d          w xY wd j         v r4 j        }t           j         d                   } j        |||z            }n j                             dd          g}t           fd|D                       }t           j                             dd                    dz  p	 j        d	z  }| _	        t           j
                            d
d                    } j        s8 j                             dd          d                                         }|od}nM                     dd           |pd} j                             dd          d                                         }t           j                             d j                            dd                              }	 j        " j                            ||||d|f|	f            j        " j                            ||||d|f|	f           | j        r j        d         d         d         pdz   }
 j        j        |
z    j        j        k    rB j        s;                                   j                                         dx _         _         j        ~ j        y j        s                                                       |||	           t<          rt?          d j        j         ||d            j        !                    ||||d|           d S d S d S  j
        d S  j"        rat<          rt?          d|d            j        !                    d j        |dd j"        d                                          j#                   d S |$                    dd          } j#        r %                     j#        |           d S t<          rt?          d|d            j        &                     j        |           d S )NrO   colspanz9Table column/cell width not specified, unable to continue240c                 :    g | ]}                     |          S r"   rV   .0lenghtrK   s     r   
<listcomp>z)HTML2FPDF.handle_data.<locals>.<listcomp>Q   s%    ;;;vT]]6**;;;r   heightr%      g?borderr3   LLRBTCbgcolorr   r   Fztd cell*cell
 write)'r@   r>   r?   
IndexErrorRuntimeErrorr   getsumhtable_hr=   rA   upper	set_styler   rB   rE   rC   appendrF   rD   r7   ypage_break_triggeroutput_table_footeradd_pagerG   rH   output_table_header
box_shadowDEBUGprintxri   r3   r2   replaceput_linkrl   )rK   txtlirX   rQ   rq   rb   r3   rg   r`   s   `          r   handle_datazHTML2FPDF.handle_dataD   s,   7dg%%)47*B*Bd-d.BCDAA! d d d&'bcccddg%%(dgi011(1W95W[[//0;;;;;;;<<ADGKK!,,--1@TVD[ADL!4455F7 =GS11!4::<<Ds4(((3GS11!4::<<dgkk)TW[[B5O5OPPQQGz%##a#fQu%=w$GHHHz%##a#fQu%=w$GHHH$,@4<?1+=a+@EAFFxz& !<<<TW<((***!!###6;; 4#3z!dj&8' /,,...1g...C%	48:q#sCCCa#fQu55555 "!&8&8 Z#DZ 		+-eFC---HMM!DF3q4:a=+>+>+@+@$)LLLLL++d3''Cy +di,,,,,2%c222tvc*****s	   1 Ac                     t           rt          d|||           |r[| j        j        } | j        j        |  | j                            | j        j        | j        j        ||d           || j        _        d S d S )Nr{   F)r|   r}   r7   
fill_colorset_fill_colorrectr~   rv   )rK   rQ   rq   rg   r   s        r   r{   zHTML2FPDF.box_shadow|   s}    4%aG444 	-,J#DH#W--HMM$(*dhj!Q<<<",DH		- 	-r   c                    | j         r| j        }| j        j        }| j                            | j                   |                     dd           | j         D ]7\  }}|                     |d         |d         |            | j        j        |  8|                     d|           | j        	                    | j         d         d         d                    | j                            | j                   d| _
        d S )Nre   Tr%   r   )rC   r   r7   r~   set_xtable_offsetrt   r{   ri   lnrG   )rK   r   r~   ri   rg   s        r   rz   zHTML2FPDF.output_table_header   s    < 
	.A
AHNN4,---NN3t$$$!% % %gQa':::t$$$NN3q!!!HKKQ*1-...HNN4,---r   c                    | j         r| j        j        }| j                            | j                   | j         D ]7\  }}|                     |d         |d         |            | j        j        |  8| j                            | j         d         d         d                    | j                            |           t          | j	        
                    dd                    r|                                  d| _        d S )Nr%   r   rb   T)rD   r7   r~   r   r   r{   ri   r   r   r=   ro   output_table_seprH   )rK   r~   ri   rg   s       r   rx   zHTML2FPDF.output_table_footer   s    < 	
AHNN4,---!% % %gQa':::t$$$HKKQ*1-...HNN1tz~~h**++ 	$!!###r   c                       j                              j                    j         j        } j         j        }t           fd j        D                       } j                             ||||z   |           d S )Nc                 :    g | ]}                     |          S r"   r[   r\   s     r   r_   z.HTML2FPDF.output_table_sep.<locals>.<listcomp>   s%    JJJ6v&&JJJr   )r7   r   r   r~   rv   rp   r>   line)rK   x1y1rQ   s   `   r   r   zHTML2FPDF.output_table_sep   su    t()))XZXZJJJJT5IJJJKKbBqD$$$$$r   c                    t          |          }t          rt          d||           |dk    s|dk    s|dk    r|                     |d           |dk    r|d         | _        |dk    r| j                            d	           |d
k    r8| j                            d	           |r|r|                    d          | _        || j	        v r| j	        |         }| j                            d	|z             | j        
                    ddd           | j                            d|z             |r|                    d          | _        |dk    r|                                  |dk    ri| j                            ddd           | j                            d           |                     dd           |                     dd           d| _        |dk    r1| 
                    ddd           | j                            d           |dk    r*| xj        dz  c_        | j                            d           |dk    r*| xj        dz  c_        | j                            d           |dk    r| j                            | j        d z              | j        
                    d!dd           | j        | j        dz
           }t'          |t(                    s|dz  }|| j        | j        dz
  <   d"|z  }| j                            | j        d#| j        z  |d$           | 
                                 |d%k    r| j                            | j        | j        | j        f           d&|v r5t5          |d&                   | _         | j
        t2            t2          | _        d'|v rZ|                    d'                                          }	 | j                            |           || _        n# t8          $ r Y nw xY wd(|v rWt;          |                    d(                    }| j                            | j        t;          |          )           || _        |d*k    rt          d+ |                                D                       | _        d,| j        vr
d-| j        d,<   | j        d,         d.         d/k    re| j        j         | j        j!        z
  | j        j"        z
  }|t;          | j        d,         d d.                   d0z  z  }| j        j         |z
  d1z  | _#        g | _$        dx| _%        | _&        g | _'        g | _(        d | _)        d | _*        d| _+        | j                                         |d2k    rVt          d3 |                                D                       | _,        d| _-        | j        .                    | j#                   |d4k    r0t          d5 |                                D                       | _/        |d6k    ret          d7 |                                D                       | _/        d| _0        d,| j/        v r%| j$                            | j/        d,                    |d8k    ri | _)        |d9k    ri | _*        |d:k    r7d;|v r2| j        1                                }| j        2                                }	tg          |                    d,d                    }tg          |                    d<d                    }
| j        r;| j        d         4                                d=k    r| j        j         |z
  d1z  |d1z  z
  }| j        5                    | 6                    |d;                   ||	||
| j        >           | j        .                    ||z              | j        7                    |	|
z              |dk    s|dk    s|dk    r|                     |d           |d?k    r	d@| _        d S d S )ANSTARTTAGr   r   ur   ar2   brr   pr3      r%   r'   hrr1   Courierr      re   FIT
blockquoted   -   r   ul   ollir(      z%s. z     rk   r5   r   facesize)r   r=   c                 @    g | ]\  }}|                                 |fS r"   lowerr]   kvs      r   r_   z-HTML2FPDF.handle_starttag.<locals>.<listcomp>   s(    GGG#!A		1~GGGr   rO   z100%rM   rN   rP   g       @rB   c                 @    g | ]\  }}|                                 |fS r"   r   r   s      r   r_   z-HTML2FPDF.handle_starttag.<locals>.<listcomp>   (    DDDsqQWWYYNDDDr   r@   c                 @    g | ]\  }}|                                 |fS r"   r   r   s      r   r_   z-HTML2FPDF.handle_starttag.<locals>.<listcomp>   r   r   rA   c                 @    g | ]\  }}|                                 |fS r"   r   r   s      r   r_   z-HTML2FPDF.handle_starttag.<locals>.<listcomp>   r   r   rE   rF   imgr#   r`   rf   )linkcenterCenter)8rI   r|   r}   rt   r2   r7   r   ro   r3   rJ   set_text_colorset_font_sizeput_liner;   r1   r9   r:   ru   rq   
isinstancer   rl   r6   r<   	font_sizer   r   r   rn   r   itemsr=   rQ   rR   rS   r   r>   rG   rH   rC   rD   rE   rF   rr   rB   r?   r   r@   rA   get_xget_yr   rs   imager8   set_y)rK   tagattrsr   r:   r   r   rQ   r~   rv   rq   s              r   handle_starttagzHTML2FPDF.handle_starttag   s{   U/%
C///88sCxx388NN3q!!!88FmDI99HKKNNN88HKKNNN :9uyy'9'9$*$*
3AHKK!H##C!,,,H""26***5599W#5#5dj99MMOOO::Hi2...H""2&&&NN3u%%%NN3u%%%DHAb)))HKKNNN99KKNKKKv&&&99KKNKKKq!!!99HKKq!!!H##C!,,,[Q/Ffj11 )!-3DKM*&HNN46U4;->->"GHHH!!!;;O""DNDNDJ#OPPP%$U7^44
##U++"
yy((..00H%%d+++%)DNN#   D599V,,--!!$.s4yy!AAA!%<<GGGGGHHDJdj((&,
7#z'"2&++HJ!22TX5FFSG,SbS122588%)XZ\3$6!#%D 277Dt/DLDLDJDJDLHKKMMM99DDekkmmDDDEEDG#$D HNN4,---99DDekkmmDDDEEDG99DDekkmmDDDEEDGDG$'!!$++DGG,<===<<DJ<<DJ::~~HNN$$HNN$$%))GQ//00%))HQ//00: 3$*Q-"5"5"7"73">">As*QsU2At~~eEl;; !Q	  ; ; ;qs###qs###88sCxx388NN3%%%==!DJJJ =s   !O. .
O;:O;c                    t           rt          d|           |dk    s|dk    s|dk    s|dk    rI| j                            d           |                                  |                                  d | _        |dk    rD| j                            | j        pdd	d
           | j                            d
           d| _	        |dk    r1| 
                    ddd           | j                            d           |dk    rd}|dk    rd}|dk    s|dk    s|dk    r|                     |d           |dk    rd	| _        |dk    rd	| _        |dv r)| xj        dz  c_        | j                                         |dk    rP| j        s|                                  d | _        d| _        d | _        d | _        | j                                         |dk    rd | _        |dk    rd | _        |dk    r3| j                            | j                   |                                  |dk    r/| j        }| j        | j                            |           d | _        |dk    s|dk    rw| j        r,t           rt          d           |                     d d           | xj        t;          | j                            d!d"                    z  c_        d | _        d| _        |d#k    r_| j                                         \  }}}|r#| j        
                    ddd           d | _!        |                     ||           d | _        |d$k    r	d | _        d S d S )%NENDTAGr)   r*   r+   r,      r1   Timesr   r'   Fr   r%   r   strongr   emr   r   r   r   )r   r   r   r=   rE   rF   tbodyrB   r@   rA   zrevert stylere   rX   1r5   r   )"r|   r}   r7   r   r;   rt   r3   r5   r   r1   r   r2   r9   r:   poprH   rx   r=   rA   rC   rD   rE   rF   r   r   r   rr   rB   r?   r   r@   ro   r6   r   )rK   r   rq   r   r   r   s         r   handle_endtagzHTML2FPDF.handle_endtag  sN   &%#&&&99T		S$YY#t))HKKNNNMMOOONNDJ::Hdi272b999H""2&&&DH!A&&&HKKNNN==C99C88sCxx388NN3&&&88DI88DJ,KKNKKKOO<<# +((***DJDGDLDLHKKMMM<<DJ<<DJ<<HNN4,---!!###99Az!ADG99T		w +/%///sE***  CIc(B(B$C$CC  DGDG;; $ 3 3 5 5D$ "''!A...!
MM$%%%DI==DJJJ =r   c                    |r|| _         |r0|| _        |dz  dz  | _        t          rt	          d| j                   | j                            | j         pddd           | j                            | j        pd           |                     dd           |                     d	d           |                     d
d           | 	                                 d S )Nr
   r	   Hr&   r   r'   r   Fr   r   )
r<   r   rq   r|   r}   r7   r;   r   rt   r   )rK   r   r   s      r   r;   zHTML2FPDF.set_font\  s     	"!DN 	)!DND[%DF(eC((($.3GBr:::t~3444sE"""sE"""sE"""r   c                 J   |rH| j                             |                                          }|| j         |                                <   d}dD ]!}| j                             |          r||z  }"t          rt	          d|           | j                            d|           d S )Nr   )r   r   r   SET_FONT_STYLE)r0   ro   r   r|   r}   r7   r;   )rK   r   enabletr0   ss         r   rt   zHTML2FPDF.set_stylej  s     	-
syy{{++A&,DJsyy{{# 	 	Az~~a   q0%(%000"U#####r   r%   c                     |-| j                             | j        | j        | j                   d S | j                             |||           || _        || _        || _        d S r!   )r7   r   r   r   r   )rK   r   r   r   s       r   r   zHTML2FPDF.set_text_colorv  s`    9H##DF46$&99999H##Aq!,,,DFDFDFFFr   c                     |                      ddd           |                     dd           | j                            d||           |                     dd           |                      d           d S )Nr%      r   Tr   F)r   rt   r7   rl   )rK   urlr   s      r   r   zHTML2FPDF.put_link  st    Aa$$$sD!!!qS!!!sE"""Ar   c                 f   | j                             d           | j                             | j                                         | j                                         | j                                         dz   | j                                                    | j                             d           d S )Nr(      r   )r7   r   r   r   r   )rK   s    r   r   zHTML2FPDF.put_line  sw    Adhnn&&tx~~'7'78H8H8LTX^^M]M]^^^Ar   r!   )NN)Nr%   r%   )__name__
__module____qualname____doc__r/   rV   r   r{   rz   rx   r   r   r   r;   rt   r   r   r   r"   r   r   r   r      s       I I I I<% % %6+ 6+ 6+p- - -          % % %n" n" n"`A A AF   
$ 
$ 
$ 
$         r   r   c                       e Zd ZddZdS )	HTMLMixinNc                 z    t          | |          }|                    |          }|                    |           dS )z Parse HTML and convert it to PDFN)r   unescapefeed)rK   textr8   h2ps       r   
write_htmlzHTMLMixin.write_html  s5    i((||D!!r   r!   )r   r   r   r   r"   r   r   r   r     s(             r   r   N)r   )r   
__author____copyright____license__fpdfr   py3kr   r   r   r   r|   r   r   r   objectr   r"   r   r   <module>r      s     4
5       7 7 7 7 7 7 7 7 7 7 7 7     p p p p p
 p p pd         r   