3
.+h                 @   s(  d Z 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
mZmZmZmZmZ ddlmZmZ ddlmZ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  ddlm!Z! ddl"m#Z# ej$dZ%ej&edd G dd deZ'G dd de j(Z)G dd dZ*G dd dZ+dS )z
 * @author Xiaobo Sun
 * created  on 23.06.2018
 * @copyright (C) 2018 Sogood International GmbH - all rights reserved
 * @licence
 * Unauthorized copying of this file, via any medium is strictly prohibited
 * Proprietary and confidential
    N)colors)A4)SimpleDocTemplate	ParagraphSpacerImageTable
TableStyleFlowable)getSampleStyleSheetParagraphStyle)inchcm)
pdfmetrics)TTFont)TA_RIGHT	TA_CENTERTA_LEFT
TA_JUSTIFY)canvas)mm)createBarcodeDrawingdjango
DejaVuSanszfonts/DejaVuSans.ttfc               @   s&   e Zd ZdZdd ZddddZdS )SampleFlowablezK
    Sample Flowable Usage
    Usage : collis.append(SampleFlowable())
    c             C   s   t j|  d| _d| _d S )N2   )r
   __init__widthheight)self r    %/data/git/entellipy_wy/pdf/stockup.pyr   &   s    
zSampleFlowable.__init__N)returnc             C   s   | j jd| j| j| j dS )z
        Draw a line
        r   N)canvliner   r   )r   r    r    r!   draw+   s    zSampleFlowable.draw)__name__
__module____qualname____doc__r   r%   r    r    r    r!   r       s   r   c               @   sB   e Zd ZdZdd ZddddZdddd	Zddd
dZdS )NumberedCanvasz%
    Page Number - Canvas Sample
    c             O   s   t jj| f|| g | _d S )N)r   Canvasr   _saved_page_states)r   argskwargsr    r    r!   r   6   s    zNumberedCanvas.__init__N)r"   c             C   s   | j jt| j | j  dS )z
        Show page
        N)r,   appenddict__dict__
_startPage)r   r    r    r!   showPage:   s    zNumberedCanvas.showPagec             C   sL   t | j}x0| jD ]&}| jj| | j| tjj|  qW tjj|  dS )z:
        Add page info to each page (page x of y)
        N)	lenr,   r1   updatedraw_page_numberr   r+   r3   save)r   	num_pagesstater    r    r!   r7   A   s    

zNumberedCanvas.savec             C   s.   | j d | jdt dt d| j|f  dS )zI
        Draw page number
        :param page_count: page number
           d   
   z	%d von %dN)setFontSizedrawCentredStringr   _pageNumber)r   
page_countr    r    r!   r6   L   s    
zNumberedCanvas.draw_page_number)r&   r'   r(   r)   r   r3   r7   r6   r    r    r    r!   r*   1   s
   r*   c               @   s   e Zd Zdd ZdS )Collic             C   s   || _ || _|| _d S )N)_ean_title_count)r   eantitlecountr    r    r!   r   W   s    zColli.__init__N)r&   r'   r(   r   r    r    r    r!   rA   V   s   rA   c               @   s<   e Zd ZdZdd ZddddZdddd	Zd
d ZdS )StockupPrintablez
    Main Class
    A4 is 210mm x 297mm, 8.27 x 11.69 inches. 1 inch is 72 points (not pixel)
    dimension 592 x 842 points
    c             C   s   || _ || _d S )N)_buffer_list)r   bufferlistr    r    r!   r   c   s    zStockupPrintable.__init__N)r"   c             C   s  t  }|jtdtdd |jtdtd |jtdtd |jtdtdd	d
 g }|jddddg xX| jD ]N}g }|j|j |jt	d|jddd |j|j
 |j|j |j| qrW t  }|d }d|_d|_t|_g }xl|D ]d}g }xPtt|D ]@}	|	t|d kr4|jtt||	 | n|j||	  qW |j| qW t|ddddgd}
tdd d#dtjfdd$d'dtjfg}|
j| |j|
 dS )(zA
        write first page content
        :param collis:
        
MY_Justify   )name	alignmentleadingMY_Right)rO   rP   	MY_CenterMY_Head   zHelvetica-Bold)rO   rP   fontSizefontNameEANBarcodeNameCountCode128r<   x   )valuer   r   BodyTextCJK      P      r   )	colWidths	INNERGRIDr   g      ?BOXN)r   r   rh   )rh   rh   )r   r   rh   rh   )rh   rh   )r   addr   r   r   r   r/   rJ   rB   r   rC   rD   wordWraprV   rP   ranger4   r   strr   r	   r   blacksetStyle)r   elementsstylesdatacollirows_rightdata_with_styledata_with_style_rowitstyler    r    r!   write_contentg   s@    

zStockupPrintable.write_contentc             C   s  t  }|jtdtdd |jtdtd |jtdtd |jtdtdd	d
 g }|jddddg xX| jD ]N}g }|j|j |jt	d|jddd |j|j
 |j|j |j| qrW t  }|d }d|_d|_t|_g }xl|D ]d}g }xPtt|D ]@}|t|d kr4|jtt|| | n|j||  qW |j| qW t|ddddgd}	tddd"dtjfdd#d&dtjfg}
|	j|
 |	S )'zA
        write first page content
        :param collis:
        rM   rN   )rO   rP   rQ   rR   )rO   rP   rS   rT   rU   zHelvetica-Bold)rO   rP   rV   rW   rX   rY   rZ   r[   r\   r<   r]   )r^   r   r   r_   r`   ra   rb   rc      r   )re   rf   r   g      ?rg   )r   r   rh   rh   )rh   rh   )r   r   rh   rh   )rh   rh   )r   ri   r   r   r   r   r/   rJ   rB   r   rC   rD   rj   rV   rP   rk   r4   r   rl   r   r	   r   rm   rn   )r   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   r    r    r!   new_write_content   s@    

z"StockupPrintable.new_write_contentc             C   sT   t jd t| jtddddd}g }| j| |j|td | jj }| jj	  |S )zC
        Entry method of the class
        :rtype: BytesIO
        zstockup.py do()H   )pagesizerightMargin
leftMargin	topMarginbottomMargin)canvasmaker)
loggerinfor   rI   r   rz   buildr*   getvalueclose)r   docro   pdfr    r    r!   do   s    




zStockupPrintable.do)r&   r'   r(   r)   r   rz   r|   r   r    r    r    r!   rH   \   s
   ..rH   ),r)   datetimejsonloggingreportlab.libr   reportlab.lib.pagesizesr   reportlab.platypusr   r   r   r   r   r	   r
   reportlab.lib.stylesr   r   reportlab.lib.unitsr   r   reportlab.pdfbaser   reportlab.pdfbase.ttfontsr   reportlab.lib.enumsr   r   r   r   reportlab.pdfgenr   r   reportlab.graphics.barcoder   	getLoggerr   registerFontr   r+   r*   rA   rH   r    r    r    r!   <module>   s(   $
%