3
.+hn                 @   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 )SampleFlowablezM
    Sample Flowable Usage
    Usage : elements.append(SampleFlowable())
    c             C   s   t j|  d| _d| _d S )N2   )r
   __init__widthheight)self r    &/data/git/entellipy_wy/pdf/picklist.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 )Orderc             C   s   || _ || _|| _d S )N)_date_orderId_productName)r   dateorderIdproductNamer    r    r!   r   W   s    zOrder.__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	 ZdS )
PicklistPrintablez
    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PicklistPrintable.__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|j	 |jt
d|j	ddd |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 )(zC
        write first page content
        :param elements:
        
MY_Justify   )name	alignmentleadingMY_Right)rO   rP   	MY_CenterMY_Head   zHelvetica-Bold)rO   rP   fontSizefontNameZDatumz
Auftrag IDCodeZDetailsCode128r<   x   )valuer   r   BodyTextCJK      r;   F      )	colWidths	INNERGRIDr   g      ?BOXN)r   r   re   )re   re   )r   r   re   re   )re   re   )r   addr   r   r   r   r/   rJ   rB   rC   r   rD   wordWraprV   rP   ranger4   r   strr   r	   r   blacksetStyle)r   elementsstylesdataorderrows_rightdata_with_styledata_with_style_rowitstyler    r    r!   write_contentg   s@    

zPicklistPrintable.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picklist.py do()H   )pagesizerightMargin
leftMargin	topMarginbottomMargin)canvasmaker)
loggerinfor   rI   r   rw   buildr*   getvalueclose)r   docrl   pdfr    r    r!   do   s    




zPicklistPrintable.do)r&   r'   r(   r)   r   rw   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(   $
%