B
    b                 @   sl   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Ze j	
ejeZe j	
edZG dd dZdS )    N)HttpResponse)settingsZreportsz
export.pdfc               @   s*   e Zd ZdddZd	ddZd
ddZdS )	HTMLToPDFNc             C   sp   t | _d| _d}|r d|kr d}d|dddddd| _|| _|rD|n| j| _|rlx|D ]}|| | j|< qVW d S )N z0.6inzheader-htmlZ1inZA4zUTF-8)z	page-sizez
margin-topzmargin-rightzmargin-bottomzmargin-leftencodingquiet)DEFAULT_PATH	save_pathhtmloptions)selfr
   r	   Zextra_optionsZm_topkey r   1G:\easytimepro\master/mysite/tools\html_to_pdf.py__init__   s"    

zHTMLToPDF.__init__c          
   C   s   |r|n| j | _ tdd }tj| j d }tj||}tj|sTt| t	j
| j|| jd y$t|tt| j dd W n, tk
r } ztd| W d d }~X Y nX d S )Nz%Y-%m-%d-%H-%M-%S_exportr   )r   zutf-8zrename error)r	   timestrftimeospathsplitjoinexistsmakedirspdfkitfrom_stringr
   r   renamecodecsdecodebytesencode	Exceptionprint)r   r	   	temp_nametemp_dir	temp_pather   r   r   save(   s    
$zHTMLToPDF.savec          
   C   s`  |r|n| j | _ tdd }tj| j d }tj||}tj|sTt| yPtj	dkrt
jd }tj|d}tj| j|| j|d ntj| j|| jd W n& ttfk
r } zW d d }~X Y nX y,tt| j d	d	}t|| |}W n. tk
r& } ztd
| W d d }~X Y nX ddd}	t|	|dd}
dtj| j d  |
d< |
S )Nz%Y-%m-%d-%H-%M-%S_r   r   ntz/wkhtmltopdf.exe)Zwkhtmltopdf)r   configuration)r   zutf-8zrename error   c             s   s4   t | d}x||}|r"|V  qP qW |  d S )Nrb)openreadclose)fnZbuf_sizefcr   r   r   readFileV   s    

z+HTMLToPDF.return_response.<locals>.readFilezapplication/pdf)Zcontent_typezattachment; filename=%s   zContent-Disposition)r*   )r	   r   r   r   r   r   r   r   r   namer   ZDLL_ROOTr   r)   r   r
   r   IOErrorOSErrorr   r   r   r    r   r!   r"   r   )r   r	   r#   r$   r%   Z	conf_pathZconfigr&   Zdecode_namer2   Zresponser   r   r   return_response7   s0    




zHTMLToPDF.return_response)NN)N)N)__name__
__module____qualname__r   r'   r7   r   r   r   r   r      s   

r   )r   r   r   r   Zdjango.http.responser   Zdjango.confr   ZEXPORT_FOLDERr   r   ZADDITION_FILE_ROOTZEXPORT_ROOTr   r   r   r   r   r   <module>   s   