ó
ÊLºVc           @   s•   d  Z  d Z d Z d Z d d l m Z d d l m Z m Z m	 Z	 m
 Z
 e Z d „  Z d d	 „ Z d
 e
 f d „  ƒ  YZ d e f d „  ƒ  YZ d S(   s   HTML Renderer for FPDF.pys%   Mariano Reingart <reingart@gmail.com>s#   Copyright (C) 2010 Mariano Reingarts   LGPL 3.0i   (   t   FPDF(   t   PY3Kt
   basestringt   unicodet
   HTMLParserc         C   s   t  |  ƒ d d S(   Ngffffff9@g      R@(   t   int(   t   px(    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyt   px2mm   s    s   #000000c         C   sY   |  rU t  |  d d !d ƒ } t  |  d d !d ƒ } t  |  d d !d ƒ } | | | f Sd  S(   Ni   i   i   i   i   (   R   (   t   colort   rt   gt   b(    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyt   hex2dec   s
    t	   HTML2FPDFc           B   s¤   e  Z d  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d d d
 „ Z d d d „ Z d d d d „ Z d „  Z d „  Z RS(   s   Render basic HTML to FPDFc         C   sP  t  j |  ƒ i  |  _ t |  _ d |  _ d |  _ i  |  _ d  |  _	 g  |  _
 | |  _ | pa d „  |  _ d |  _ |  _ |  _ d |  _ g  |  _ |  j d d ƒ d |  _ d |  _ d  |  _ d  |  _ d  |  _ d  |  _ t |  _ d  |  _ d  |  _ d  |  _ d  |  _ d  |  _ t |  _ |  _  t! d d d d	 d
 d d d d d d d ƒ |  _" d  S(   Nt    c         S   s   |  S(   N(    (   t   src(    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyt   <lambda>'   s    i    t   timesi   t   h1i   t   h2g      ø?t   h3g¸…ëQ¸ò?t   h4i   t   h5gÂõ(\ê?t   h6gq=
×£på?(#   R   t   __init__t   stylet   Falset   pret   hreft   alignt
   page_linkst   Nonet   fontt
   font_stackt   pdft	   image_mapR	   R
   R   t   indentt   bullett   set_fontt	   font_faceR   t   tablet   table_col_widtht   table_col_indext   tdt   tht   trt   theadert   tfootert   theadt   tfoott   theader_outt   tfooter_outt   dictt   hsize(   t   selfR"   R#   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyR      s8    																						c         C   s‘   | d d k r |  j  j |  j  j |  j  j } |  j d d d k ri | t |  j d d  ƒ d 9} n  t | d  ƒ | d St | ƒ d Sd  S(   Niÿÿÿÿt   %t   widthg      Y@g     @Y@g      @(   R"   t   wt   r_margint   l_marginR(   R   (   R6   t   lengtht   total(    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyt   width2mm;   s     "c         C   s"  |  j  d  k	 rVd |  j  k rg d |  j  k rg y |  j |  j g } WqÁ t k
 rc t d ƒ ‚ qÁ XnZ d |  j  k r© |  j } t |  j  d ƒ } |  j | | | !} n |  j  j d d ƒ g } t g  | D] } |  j	 | ƒ ^ qË ƒ } t |  j  j d d ƒ ƒ d p|  j
 d } | |  _ t |  j j d	 d ƒ ƒ } |  j sp|  j  j d
 d ƒ d j ƒ  }	 | ojd } n; |  j d t ƒ | p‰d } |  j  j d
 d ƒ d j ƒ  }	 t |  j  j d |  j j d d ƒ ƒ ƒ }
 |  j d  k	 r|  j j | | | | d |	 f |
 f ƒ n  |  j d  k	 rI|  j j | | | | d |	 f |
 f ƒ n  | |  j rj|  j d d d pmd } |  j j | |  j j k rÇ|  j rÇ|  j ƒ  |  j j d t ƒ t |  _ |  _ n  |  j d  k r|  j d  k r|  j sû|  j  ƒ  n  |  j! | | |
 ƒ t" r1d |  j j# | | d f GHn  |  j j$ | | | | d |	 ƒ qnÈ |  j d  k	 rhn¶ |  j% rÀt" rˆd | d f GHn  |  j j$ d |  j
 | d d |  j% d j ƒ  |  j& ƒ n^ | j' d d ƒ } |  j& rñ|  j( |  j& | ƒ n- t" rd | d f GHn  |  j j) |  j
 | ƒ d  S(   NR8   t   colspans9   Table column/cell width not specified, unable to continuet   240t   heighti    i   gÍÌÌÌÌÌô?t   borderR   t   Lt   LRt   Bt   Ct   bgcolorR   i   t   sames   td cellt   *t   cells   
t    t   write(*   R+   R   R)   R*   t
   IndexErrort   RuntimeErrorR   t   gett   sumR>   t   ht   table_hR(   R,   t   uppert	   set_stylet   TrueR   R-   R0   R.   t   appendR1   R/   R"   t   yt   page_break_triggert   output_table_footert   add_pageR   R2   R3   t   output_table_headert
   box_shadowt   DEBUGt   xRJ   R   R   t   replacet   put_linkRL   (   R6   t   txtt   lt   iR?   R<   R9   RQ   RB   R   RG   RA   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyt   handle_dataD   sd    	(,		*++(&
	 %	 8	 c         C   sw   t  r d | | | f GHn  | rs |  j j } |  j j | Œ  |  j j |  j j |  j j | | d ƒ | |  j _ n  d  S(   NR\   t   F(   R]   R"   t
   fill_colort   set_fill_colort   rectR^   RW   (   R6   R9   RQ   RG   Rf   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyR\   |   s     (c         C   sØ   |  j  rË |  j } |  j j } |  j j |  j ƒ |  j d t ƒ xB |  j  D]7 \ } } |  j | d | d | ƒ |  j j	 | Œ  qK W|  j d | ƒ |  j j
 |  j  d d d ƒ |  j j |  j ƒ n  t |  _ d  S(   NRE   i    i   (   R.   R   R"   R^   t   set_xt   table_offsetRT   RU   R\   RJ   t   lnR2   (   R6   R   R^   RJ   RG   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyR[   „   s    		c         C   sÔ   |  j  rŸ |  j j } |  j j |  j ƒ xB |  j  D]7 \ } } |  j | d | d | ƒ |  j j | Œ  q2 W|  j j |  j  d d d ƒ |  j j | ƒ n  t |  j	 j
 d d ƒ ƒ rÇ |  j ƒ  n  t |  _ d  S(   Ni    i   RB   (   R/   R"   R^   Ri   Rj   R\   RJ   Rk   R   R(   RO   t   output_table_sepRU   R3   (   R6   R^   RJ   RG   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyRY   “   s    	c         C   sw   |  j  j |  j ƒ |  j  j } |  j  j } t g  |  j D] } |  j | ƒ ^ q8 ƒ } |  j  j | | | | | ƒ d  S(   N(	   R"   Ri   Rj   R^   RW   RP   R)   R>   t   line(   R6   t   x1t   y1t   lenghtR9   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyRl   ¡   s
    +c         C   sõ  t  | ƒ } t r# d | | f GHn  | d k sG | d k sG | d k rZ |  j | d ƒ n  | d k rv | d |  _ n  | d k r• |  j j d	 ƒ n  | d
 k rØ |  j j d	 ƒ | rØ | rÕ | j d ƒ |  _ qÕ qØ n  | |  j k rP|  j | } |  j j d	 | ƒ |  j j	 d d d ƒ |  j j
 d | ƒ | rP| j d ƒ |  _ qPn  | d k ri|  j ƒ  n  | d k rÇ|  j j d d d ƒ |  j j
 d ƒ |  j d t ƒ |  j d t ƒ t |  _ n  | d k rù|  j	 d d d ƒ |  j j d ƒ n  | d k r'|  j d 7_ |  j j d ƒ n  | d k rU|  j d 7_ |  j j d ƒ n  | d k r|  j j |  j d ƒ |  j j	 d d d ƒ |  j |  j d } t | t ƒ sÜ| d 7} | |  j |  j d <d  | } n  |  j j |  j d! d: |  j | f ƒ |  j	 ƒ  n  | d# k r|  j j |  j |  j |  j f ƒ d$ | k rst | d$ ƒ } |  j	 | Œ  | |  _ n  d% | k rÈ| j d% ƒ j ƒ  } y |  j j | ƒ | |  _ WqÈt k
 rÄqÈXn  d& | k rt | j d& ƒ ƒ } |  j j |  j d& t | ƒ ƒ| |  _ qn  | d' k rBt  g  | j ƒ  D] \ } } | j ƒ  | f ^ q3ƒ |  _  d( |  j  k r|d) |  j  d( <n  |  j  d( d* d+ k rì|  j j! |  j j" |  j j# }	 |	 t |  j  d( d*  ƒ d, 9}	 |  j j! |	 d- |  _$ n  g  |  _% t |  _& |  _' g  |  _( g  |  _) d  |  _+ d  |  _, d |  _- |  j j ƒ  n  | d. k r§t  g  | j ƒ  D] \ } } | j ƒ  | f ^ q^ƒ |  _. d |  _/ |  j j0 |  j$ ƒ n  | d/ k rðt  g  | j ƒ  D] \ } } | j ƒ  | f ^ qÃƒ |  _1 n  | d0 k rkt  g  | j ƒ  D] \ } } | j ƒ  | f ^ qƒ |  _1 t |  _2 d( |  j1 k rk|  j% j |  j1 d( ƒ qkn  | d1 k rƒi  |  _+ n  | d2 k r›i  |  _, n  | d3 k r¢d4 | k r¢|  j j3 ƒ  }
 |  j j4 ƒ  } t5 | j d( d ƒ ƒ }	 t5 | j d5 d ƒ ƒ } |  j rB|  j d j6 ƒ  d6 k rB|  j j! |
 d- |	 d- }
 n  |  j j7 |  j8 | d4 ƒ |
 | |	 | d7 |  j ƒ|  j j0 |
 |	 ƒ |  j j9 | | ƒ q¢n  | d k sÆ| d k sÆ| d k rÙ|  j | t ƒ n  | d8 k rñd9 |  _ n  d  S(;   Nt   STARTTAGR   Rc   t   ui   t   aR   t   bri   t   pR   i–   i    i   t   hrR   t   CourierR   i   RE   t   It
   blockquoteid   i-   i   t   uls   •t   olt   lii   i¾   s   %s. s   %s%s RK   R    R   t   facet   sizeR(   R8   s   100%iÿÿÿÿR7   g      Y@g       @R-   R+   R,   R0   R1   t   imgR   RA   RF   t   linkt   centert   Centers        (:   R4   R]   RT   R   R"   Rk   RO   R   R5   t   set_text_colort   set_font_sizet   put_lineR&   R   RU   R   R$   R%   RV   RQ   t
   isinstanceR   RL   R!   R'   t	   font_sizeR   R   t   lowerRN   R   t   itemsR(   R9   R:   R;   Rj   R)   R2   R3   R.   R/   R   R0   R1   RR   R-   R*   Ri   R+   R,   t   get_xt   get_yR   RS   t   imageR#   t   set_y(   R6   t   tagt   attrst   kR%   R   R}   R~   t   vR9   R^   RW   RQ   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyt   handle_starttag©   sà     $  
'": 						:	=:	"$c         C   s  t  r d | f GHn  | d k sD | d k sD | d k sD | d k rt |  j j d ƒ |  j ƒ  |  j ƒ  d  |  _ n  | d k r» |  j j |  j p• d d	 d
 ƒ |  j j d
 ƒ t	 |  _
 n  | d k rí |  j d d d ƒ |  j j d ƒ n  | d k rd } n  | d k rd } n  | d k s;| d k s;| d k rN|  j | t	 ƒ n  | d k rfd	 |  _ n  | d k r~d	 |  _ n  | d% k r©|  j d 8_ |  j j ƒ  n  | d k rÿ|  j sË|  j ƒ  n  d  |  _ t	 |  _ d  |  _ d  |  _ |  j j ƒ  n  | d k rd  |  _ n  | d k r/d  |  _ n  | d k r[|  j j |  j ƒ |  j ƒ  n  | d k rž|  j } |  j d  k r’|  j j | ƒ n  d  |  _ n  | d k s¶| d k r|  j ràt  rÍd GHn  |  j d  t	 ƒ n  |  j t |  j j  d! d" ƒ ƒ 7_ d  |  _ t	 |  _ n  | d# k r|  j! j ƒ  \ } } } | re|  j j d d d ƒ d  |  _" n  |  j | | ƒ d  |  _ n  | d$ k r™d  |  _ n  d  S(&   Nt   ENDTAGR   R   R   R   i   R   t   TimesR   i   Ry   i    i   t   strongR   t   emRc   Rr   Rs   Ru   Rz   R{   i   R(   R0   R1   t   tbodyR-   R+   R,   s   revert styleRE   R?   t   1R    R   (   s   uls   ol(#   R]   R"   Rk   R&   RT   R   R   R    R„   R   R   Rƒ   R   R$   R%   t   popR3   RY   R(   R,   R.   R/   R0   R1   Ri   Rj   Rl   RR   R-   R*   R   R+   RO   R!   R   (   R6   RŽ   RQ   R}   R~   R   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyt   handle_endtag  s€     0

		$							 $	c         C   sÂ   | r | |  _  n  | rL | |  _ | d d |  _ t rL d |  j f GHqL n  |  j j |  j  pa d d d ƒ |  j j |  j p€ d ƒ |  j d t ƒ |  j d t ƒ |  j d	 t ƒ |  j	 ƒ  d  S(
   Ng      R@gffffff9@t   HR   R   i   Rr   R   Rc   (
   R'   R‡   RQ   R]   R"   R&   R„   RT   R   Rƒ   (   R6   R}   R~   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyR&   \  s    	 c         C   s•   | r4 |  j  j | j ƒ  ƒ } | |  j  | j ƒ  <n  d } x- d D]% } |  j  j | ƒ rA | | 7} qA qA Wt r~ d | f GHn  |  j j d | ƒ d  S(   NR   R   Rc   Rr   t   SET_FONT_STYLE(   R   Rc   Rr   (   R   RO   Rˆ   R]   R"   R&   (   R6   RŽ   t   enablet   tR   t   s(    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyRT   j  s     i    c         C   sc   | d  k r. |  j j |  j |  j |  j ƒ n1 |  j j | | | ƒ | |  _ | |  _ | |  _ d  S(   N(   R   R"   Rƒ   R	   R
   R   (   R6   R	   R
   R   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyRƒ   v  s    "		c         C   sZ   |  j  d d d ƒ |  j d t ƒ |  j j d | | ƒ |  j d t ƒ |  j  d ƒ d  S(   Ni    iÿ   Rr   i   (   Rƒ   RT   RU   R"   RL   R   (   R6   t   urlRa   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyR`     s
    c         C   se   |  j  j d ƒ |  j  j |  j  j ƒ  |  j  j ƒ  |  j  j ƒ  d |  j  j ƒ  ƒ |  j  j d ƒ d  S(   Ni   i»   i   (   R"   Rk   Rm   RŠ   R‹   (   R6   (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyR…   ‡  s    AN(   t   __name__t
   __module__t   __doc__R   R   R>   Rd   R\   R[   RY   Rl   R’   Rš   R&   RT   Rƒ   R`   R…   (    (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyR      s   			8					p	C		t	   HTMLMixinc           B   s   e  Z d d  „ Z RS(   c         C   s/   t  |  | ƒ } | j | ƒ } | j | ƒ d S(   s    Parse HTML and convert it to PDFN(   R   t   unescapet   feed(   R6   t   textR#   t   h2p(    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyt
   write_html  s    N(   R¡   R¢   R   R©   (    (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyR¤   Œ  s   N(   R£   t
   __author__t   __copyright__t   __license__t   fpdfR    t   py3kR   R   R   R   R   R]   R   R   R   t   objectR¤   (    (    (    s&   /var/www/ficnx/bin/pyfpdf/fpdf/html.pyt   <module>   s   "	ÿ s