Exemple #1
0
def autoLegender( chart,title=''):
    width = 448
    height = 230
    d = Drawing(width,height)
    lab = Label()
    lab.x = 220  #x和y是文字的位置坐标
    lab.y = 210
    lab.setText(title)
    # lab.fontName = 'song' #增加对中文字体的支持
    lab.fontSize = 20
    d.add(lab)
    d.background = Rect(0,0,width,height,strokeWidth=1,strokeColor="#868686",fillColor=None) #边框颜色
    d.add(chart)

    return d
Exemple #2
0
def autoLegender(chart,
                 title='',
                 width=448,
                 height=230,
                 order='off',
                 categories=[],
                 use_colors=[]):
    d = Drawing(width, height)
    d.add(chart)
    lab = Label()
    lab.x = width / 2  #x和y是title文字的位置坐标
    lab.y = 21 / 23 * height
    lab.fontName = 'song'  #增加对中文字体的支持
    lab.fontSize = 20
    lab.setText(title)
    d.add(lab)
    #颜色图例说明等
    if categories != [] and use_colors != []:
        leg = Legend()
        leg.x = 500  # 说明的x轴坐标
        leg.y = 0  # 说明的y轴坐标
        leg.boxAnchor = 'se'
        # leg.strokeWidth = 4
        leg.strokeColor = None
        leg.subCols[1].align = 'right'
        leg.columnMaximum = 10  # 图例说明一列最多显示的个数
        leg.fontName = 'song'
        leg.alignment = 'right'
        leg.colorNamePairs = list(zip(use_colors, tuple(categories)))
        d.add(leg)
    if order == 'on':
        d.background = Rect(0,
                            0,
                            width,
                            height,
                            strokeWidth=1,
                            strokeColor="#868686",
                            fillColor=None)  #边框颜色
    return d
def test3():
    wl = "select apply_id, tenant_name, sex, tenant_IDcode, marital_status, tenant_unit, tenant_unit_address, " + \
         "unit_property, unit_pro_business, unit_pro_office, unit_pro_employment, unit_pro_retire, unit_pro_other, " + \
         "pro_graduate, pro_outside, pro_gov_talent, pro_difficult, pro_cheap, pro_economy, card_address, " + \
         "now_address, minimum_living_no, member_name_1, member_relation_1, member_ID_1, member_unit_1, " + \
         "member_income_1, member_name_2, member_relation_2, member_ID_2, member_unit_2, member_income_2, " + \
         "member_name_3, member_relation_3, member_ID_3, member_unit_3, member_income_3, member_name_4, " + \
         "member_relation_4, member_ID_4, member_unit_4, member_income_4, member_name_5, member_relation_5, " + \
         "member_ID_5, member_unit_5, member_income_5, income_avg, income_all, member_name_11, member_address_11, " + \
         "member_con_area_11, member_door_pro_11, member_name_12, member_address_12, member_con_area_12, " + \
         "member_door_pro_12, is_transfer, transfer_address_1, transfer_con_area_1, is_remove, remove_address_1, " + \
         "remove_con_area_1, con_area_avg, user_name, occur_date, community_name, street_name, remark, " + \
         "transfer_pro_1, remove_pro_1 " + \
         "FROM t_public_doors_apply where apply_id = '001'"
    db = DB()
    apply, re_s = db.get_data_by_sql(wl)
    if len(apply) == 0:
        return 'not found'
    pdfmetrics.registerFont(TTFont('simsun', 'SimSun.ttf'))
    pdfmetrics.registerFont(TTFont('simhei', 'SimHei.ttf'))
    style_sheet = getSampleStyleSheet()
    # 标题
    title_style = style_sheet['Title']
    title_style.fontName = 'simhei'
    title_style.fontSize = 22
    # title_style = ParagraphStyle(name='titlestyle', fontName='simhei', fontSize=22, aligment=TA_CENTER)
    # title_stytle.fontWeight = 900
    elements = [Paragraph('立山区公共租赁租房(申请)审批表', title_style)]
    elements.append(Spacer(0, 0.3 * cm))
    # 标题下一行小字
    doc_style = ParagraphStyle(name='rightstyle', fontName='simsun', fontSize=10, alignment=TA_CENTER)
    line0 = Paragraph('编号:' + apply_id + '\0' * 32 + '单位:平方米,人,元', doc_style)
    elements.append(line0)
    elements.append(Spacer(0, 0.3 * cm))
    # 创建画布,画表格
    width, height = 19 * cm, 25 * cm;
    # 第一页开画
    d1 = Drawing(width, height)
    d1.background = Rect(0, 0, width, height, strokeWidth=1, strokeColor="#000000", fillColor=None)  # 边框颜色
    d1.add(Line(1.2 * cm, 24 * cm, width, 24 * cm, strokeWidth=0.5))
    d1.add(Line(1.2 * cm, 23 * cm, width, 23 * cm, strokeWidth=0.5))
    d1.add(Line(1.2 * cm, 22 * cm, width, 22 * cm, strokeWidth=0.5))
    d1.add(Line(1.2 * cm, 21 * cm, width, 21 * cm, strokeWidth=0.5))
    d1.add(Line(1.2 * cm, 19.5 * cm, width, 19.5 * cm, strokeWidth=0.5))
    d1.add(Line(1.2 * cm, 18 * cm, width, 18 * cm, strokeWidth=0.5))
    d1.add(Line(1.2 * cm, 17 * cm, width, 17 * cm, strokeWidth=0.5))
    d1.add(Line(0 * cm, 16 * cm, width, 16 * cm, strokeWidth=0.8))
    d1.add(Line(1.2 * cm, 25 * cm, 1.2 * cm, 8.8 * cm, strokeWidth=0.5))
    d1.add(Line(3.5 * cm, 25 * cm, 3.5 * cm, 0 * cm, strokeWidth=0.5))
    d1.add(Line(6.5 * cm, 25 * cm, 6.5 * cm, 24 * cm, strokeWidth=0.5))
    d1.add(Line(8.0 * cm, 25 * cm, 8.0 * cm, 24 * cm, strokeWidth=0.5))
    d1.add(Line(10 * cm, 25 * cm, 10 * cm, 24 * cm, strokeWidth=0.5))
    d1.add(Line(12 * cm, 25 * cm, 12 * cm, 24 * cm, strokeWidth=0.5))
    d1.add(Line(10 * cm, 23 * cm, 10 * cm, 22 * cm, strokeWidth=0.5))
    d1.add(Line(12 * cm, 23 * cm, 12 * cm, 22 * cm, strokeWidth=0.5))
    d1.add(get_label(x=2.25 * cm, y=24.5 *cm, text='姓名', size=10))
    d1.add(get_label(x=5 * cm, y=24.5 * cm, text=apply[0]['tenant_name'], size=10))
    d1.add(get_label(x=7.25 * cm, y=24.5 * cm, text='性别', size=10))
    d1.add(get_label(x=9 * cm, y=24.5 * cm, text=apply[0]['sex'], size=10))
    d1.add(get_label(x=11 * cm, y=24.5 * cm, text='身份证', size=10))
    d1.add(get_label(x=14.5 * cm, y=24.5 * cm, text=apply[0]['tenant_IDcode'], size=10))
    d1.add(get_label(x=2.25 * cm, y=23.5 * cm, text='婚姻状况', size=10))
    d1.add(get_label(x=4.5 * cm, y=23.5 * cm, text=apply[0]['marital_status'], size=10))
    d1.add(get_label(x=2.25 * cm, y=22.5 * cm, text='工作单位', size=10))
    d1.add(get_label(x=6.5 * cm, y=22.5 * cm, text=apply[0]['tenant_unit'], size=10))
    d1.add(get_label(x=11 * cm, y=22.5 * cm, text='单位地址', size=10))
    d1.add(get_label(x=15.5 * cm, y=22.5 * cm, text=apply[0]['tenant_unit_address'], size=10))

    d1.add(get_label(x=2.25 * cm, y=21.5 * cm, text='单位性质', size=10))
    unit_pro = ''
    if int(apply[0]['unit_pro_business']) == 1:
        unit_pro += '企业 '
    if int(apply[0]['unit_pro_office']) == 1:
        unit_pro += '机关 '
    if int(apply[0]['unit_pro_employment']) == 1:
        unit_pro += '个体 '
    if int(apply[0]['unit_pro_retire']) == 1:
        unit_pro += '退休 '
    if int(apply[0]['unit_pro_other']) == 1:
        unit_pro += '其它'
    d1.add(get_label(x=10 * cm, y=21.5 * cm, text=unit_pro, size=10))
    d1.add(get_label(x=2.25 * cm, y=20.25* cm, text='申请人类型', size=10))
    tenant_pro = ''
    if int(apply[0]['pro_graduate']) == 1:
        tenant_pro += '新就业普通高校毕业生'
    if int(apply[0]['pro_outside']) == 1:
        tenant_pro += '外来务工人员'
    if int(apply[0]['pro_gov_talent']) == 1:
        tenant_pro += '政府引进特殊人才'
    if int(apply[0]['pro_difficult']) == 1:
        tenant_pro += '困难家庭'
    if int(apply[0]['pro_cheap']) == 1:
        tenant_pro += '廉租房保障家庭'
    if int(apply[0]['pro_economy']) == 1:
        tenant_pro += '经济房保障家庭'
    d1.add(get_label(x=10 * cm, y=20.25 * cm, text=tenant_pro, size=10))
    d1.add(get_label(x=2.25 * cm, y=18.75 * cm, text='户口所在\n\0地址', size=10))
    d1.add(get_label(x=10 * cm, y=18.75 * cm, text=apply[0]['card_address'], size=10))
    d1.add(get_label(x=2.25 * cm, y=17.5 * cm, text='现居住地址', size=10))
    d1.add(get_label(x=10 * cm, y=17.5 * cm, text=apply[0]['now_address'], size=10))

    d1.add(get_label(x=2.25 * cm, y=16.5 * cm, text='低保证号', size=10))
    d1.add(get_label(x=10 * cm, y=16.5 * cm, text=apply[0]['minimum_living_no'], size=10))
    d1.add(get_label(x=0.5 * cm, y=20.5 * cm, text='申\n请\n人\n基\n本\n情\n况\n及\n申\n请\n公\n共\n租\n赁\n住\n房\n情\n况', size=10))
    d1.add(Line(1.2 * cm, 14.8 * cm, width, 14.8 * cm, strokeWidth=0.5))
    d1.add(Line(1.2 * cm, 13.6 * cm, width, 13.6 * cm, strokeWidth=0.5))
    d1.add(Line(1.2 * cm, 12.4 * cm, width, 12.4 * cm, strokeWidth=0.5))
    d1.add(Line(1.2 * cm, 11.2 * cm, width, 11.2 * cm, strokeWidth=0.5))
    d1.add(Line(1.2 * cm, 10 * cm, width, 10 * cm, strokeWidth=0.5))
    d1.add(Line(0 * cm, 8.8 * cm, width, 8.8 * cm, strokeWidth=0.8))
    d1.add(Line(6 * cm, 16 * cm, 6 * cm, 8.8 * cm, strokeWidth=0.5))
    d1.add(Line(11 * cm, 16 * cm, 11 * cm, 7.3 * cm, strokeWidth=0.5))
    d1.add(Line(16.5 * cm, 16 * cm, 16.5 * cm, 8.8 * cm, strokeWidth=0.5))
    d1.add(Line(0 * cm, 7.3 * cm, width, 7.3 * cm, strokeWidth=0.8))
    d1.add(Line(13.5 * cm, 8.8 * cm, 13.5 * cm, 7.3 * cm, strokeWidth=0.5))
    d1.add(get_label(x=0.5 * cm, y=12.5 * cm, text='申\n请\n人\n家\n庭\n收\n入\n情\n况', size=10))
    d1.add(get_label(x=2.25 * cm, y=15.4 * cm, text='与申请\n人关系', size=10))
    d1.add(get_label(x=2.25 * cm, y=14.2 * cm, text=apply[0]['member_relation_1'], size=10))
    d1.add(get_label(x=2.25 * cm, y=13 * cm, text=apply[0]['member_relation_2'], size=10))
    d1.add(get_label(x=2.25 * cm, y=11.8 * cm, text=apply[0]['member_relation_3'], size=10))
    d1.add(get_label(x=2.25 * cm, y=10.6 * cm, text=apply[0]['member_relation_4'], size=10))
    d1.add(get_label(x=2.25 * cm, y=9.4 * cm, text=apply[0]['member_relation_5'], size=10))
    d1.add(get_label(x=4.75 * cm, y=15.4 * cm, text='姓名', size=10))
    d1.add(get_label(x=4.75 * cm, y=14.2 * cm, text=apply[0]['member_name_1'], size=10))
    d1.add(get_label(x=4.75 * cm, y=13 * cm, text=apply[0]['member_name_2'], size=10))
    d1.add(get_label(x=4.75 * cm, y=11.8 * cm, text=apply[0]['member_name_3'], size=10))
    d1.add(get_label(x=4.75 * cm, y=10.6 * cm, text=apply[0]['member_name_4'], size=10))
    d1.add(get_label(x=4.75 * cm, y=9.4 * cm, text=apply[0]['member_name_5'], size=10))
    d1.add(get_label(x=8.5 * cm, y=15.4 * cm, text='身份证', size=10))
    d1.add(get_label(x=8.5 * cm, y=14.2 * cm, text=apply[0]['member_ID_1'], size=10))
    d1.add(get_label(x=8.5 * cm, y=13 * cm, text=apply[0]['member_ID_2'], size=10))
    d1.add(get_label(x=8.5 * cm, y=11.8 * cm, text=apply[0]['member_ID_3'], size=10))
    d1.add(get_label(x=8.5 * cm, y=10.6 * cm, text=apply[0]['member_ID_4'], size=10))
    d1.add(get_label(x=8.5 * cm, y=9.4 * cm, text=apply[0]['member_ID_5'], size=10))
    d1.add(get_label(x=13.75 * cm, y=15.4 * cm, text='工作单位', size=10))
    d1.add(get_label(x=13.75 * cm, y=14.2 * cm, text=apply[0]['member_unit_1'], size=10))
    d1.add(get_label(x=13.75 * cm, y=13 * cm, text=apply[0]['member_unit_2'], size=10))
    d1.add(get_label(x=13.75 * cm, y=11.8 * cm, text=apply[0]['member_unit_3'], size=10))
    d1.add(get_label(x=13.75 * cm, y=10.6 * cm, text=apply[0]['member_unit_4'], size=10))
    d1.add(get_label(x=13.75 * cm, y=9.4 * cm, text=apply[0]['member_unit_5'], size=10))
    d1.add(get_label(x=17.75 * cm, y=15.4 * cm, text='年收入', size=10))
    d1.add(get_label(x=17.75 * cm, y=14.2 * cm, text=str(apply[0]['member_income_1']), size=10))
    d1.add(get_label(x=17.75 * cm, y=13 * cm, text=str(apply[0]['member_income_2']), size=10))
    d1.add(get_label(x=17.75 * cm, y=11.8 * cm, text=str(apply[0]['member_income_3']), size=10))
    d1.add(get_label(x=17.75 * cm, y=10.6 * cm, text=str(apply[0]['member_income_4']), size=10))
    d1.add(get_label(x=17.75 * cm, y=9.4 * cm, text=str(apply[0]['member_income_5']), size=10))

    d1.add(get_label(x=1.8 * cm, y=8.1 * cm, text='家庭人均月收入', size=10))
    d1.add(get_label(x=4.8 * cm, y=8.1 * cm, text=str(apply[0]['income_avg']), size=10))
    d1.add(get_label(x=12.25 * cm, y=8.1 * cm, text='家庭成员\n年收入合计', size=10))
    d1.add(get_label(x=14.5 * cm, y=8.1 * cm, text=str(apply[0]['income_all']), size=10))
    d1.add(get_label(x=1.8 * cm, y=4.1 * cm, text='家庭收入\n认定意见', size=10))
    d1.add(get_label(x=11.8 * cm, y=4.1 * cm, text='经办人', size=10))
    d1.add(get_label(x=15.8 * cm, y=4.1 * cm, text='认定部门(盖章)', size=10))
    d1.add(get_label(x=15.8 * cm, y=1.1 * cm, text='年\0\0\0月\0\0\0日', size=10))
    # lable_name.setOrigin(1 * cm, 1。75 * cm)
    # lable_name.fontName = 'simsun'
    # lable_name.fontSize = 10
    elements.append(d1)
    # 第二页 开画
    d2 = Drawing(width, height)
    d2.background = Rect(0, 0, width, height, strokeWidth=1, strokeColor="#000000", fillColor=None)  # 边框颜色
    d2.add(Line(1.2 * cm, 25 * cm, 1.2 * cm, 17.5 * cm, strokeWidth=0.5))
    d2.add(Line(1.2 * cm, 23.5 * cm, width, 23.5 * cm, strokeWidth=0.5))
    d2.add(Line(1.2 * cm, 22 * cm, width, 22 * cm, strokeWidth=0.5))
    d2.add(Line(1.2 * cm, 20.5 * cm, width, 20.5 * cm, strokeWidth=0.5))
    d2.add(Line(1.2 * cm, 19 * cm, width, 19 * cm, strokeWidth=0.5))
    d2.add(Line(0 * cm, 17.5 * cm, width, 17.5 * cm, strokeWidth=0.5))
    d2.add(Line(0 * cm, 16 * cm, width, 16 * cm, strokeWidth=0.8))
    d2.add(Line(5.2 * cm, 25 * cm, 5.2 * cm, 16 * cm, strokeWidth=0.5))
    d2.add(Line(13.2 * cm, 25 * cm, 13.2 * cm, 17.5 * cm, strokeWidth=0.5))
    d2.add(Line(16.2 * cm, 25 * cm, 16.2 * cm, 17.5 * cm, strokeWidth=0.5))
    d2.add(Line(0 * cm, 11 * cm, width, 11 * cm, strokeWidth=0.8))
    d2.add(Line(0 * cm, 6 * cm, width, 6 * cm, strokeWidth=0.8))
    d2.add(Line(9.5 * cm, 16 * cm, 9.5 * cm, 11 * cm, strokeWidth=0.8))
    d2.add(get_label(x=0.5 * cm, y=21.5 * cm, text='申\n请\n人\n家\n庭\n成\n员\n住\n房\n情\n况', size=10))
    d2.add(get_label(x=3.25 * cm, y=24.2 * cm, text='产权人或承租人', size=10))
    d2.add(get_label(x=3.25 * cm, y=22.8 * cm, text=apply[0]['member_name_11'], size=10))
    d2.add(get_label(x=3.25 * cm, y=21.2 * cm, text=apply[0]['member_name_12'], size=10))
    d2.add(get_label(x=9.25 * cm, y=24.2 * cm, text='房屋坐落', size=10))
    d2.add(get_label(x=9.25 * cm, y=22.8 * cm, text=apply[0]['member_address_11'], size=10))
    d2.add(get_label(x=9.25 * cm, y=21.2 * cm, text=apply[0]['member_address_12'], size=10))
    d2.add(get_label(x=14.75 * cm, y=24.2 * cm, text='建筑面积', size=10))
    d2.add(get_label(x=14.75 * cm, y=22.8 * cm, text=str(apply[0]['member_con_area_11']), size=10))
    d2.add(get_label(x=14.75 * cm, y=21.2 * cm, text=str(apply[0]['member_con_area_12']), size=10))
    d2.add(get_label(x=17.55 * cm, y=24.2 * cm, text='住房性质', size=10))
    d2.add(get_label(x=17.55 * cm, y=22.8 * cm, text=apply[0]['member_door_pro_11'], size=10))
    d2.add(get_label(x=17.55 * cm, y=21.2 * cm, text=apply[0]['member_door_pro_12'], size=10))
    d2.add(get_label(x=3.25 * cm, y=19.75 * cm, text='近五年转让\n房屋情况', size=10))
    d2.add(get_label(x=9.25 * cm, y=19.75 * cm, text=apply[0]['transfer_address_1'], size=10))
    d2.add(get_label(x=14.75 * cm, y=19.75 * cm, text=str(apply[0]['transfer_con_area_1']), size=10))
    d2.add(get_label(x=17.55 * cm, y=19.75 * cm, text=str(apply[0]['transfer_pro_1']), size=10))
    d2.add(get_label(x=3.25 * cm, y=18.25 * cm, text='近五年拆迁\n房屋情况', size=10))
    d2.add(get_label(x=9.25 * cm, y=18.25 * cm, text=apply[0]['remove_address_1'], size=10))
    d2.add(get_label(x=14.75 * cm, y=18.25 * cm, text=str(apply[0]['remove_con_area_1']), size=10))
    d2.add(get_label(x=17.55 * cm, y=18.25 * cm, text=str(apply[0]['remove_pro_1']), size=10))
    d2.add(get_label(x=2.25 * cm, y=16.75 * cm, text='家庭人均建筑面积', size=10))
    d2.add(get_label(x=9.25 * cm, y=16.75 * cm, text=str(apply[0]['con_area_avg']), size=10))
    d2.add(get_label(x=2 * cm, y=15.25 * cm, text='所在社区意见:', size=10))
    d2.add(get_label(x=1.45 * cm, y=13.5 * cm, text='负责人:', size=10))
    d2.add(get_label(x=1.45 * cm, y=12.5 * cm, text='经办人:', size=10))
    d2.add(get_label(x=7.45 * cm, y=12.5 * cm, text='公章', size=10))
    d2.add(get_label(x=7.45 * cm, y=11.5 * cm, text='年\0\0\0月\0\0\0日', size=10))
    d2.add(get_label(x=11.9 * cm, y=15.25 * cm, text='所在街道办事处意见:', size=10))
    d2.add(get_label(x=10.75 * cm, y=13.5 * cm, text='负责人:', size=10))
    d2.add(get_label(x=10.75 * cm, y=12.5 * cm, text='经办人:', size=10))
    d2.add(get_label(x=16.75 * cm, y=12.5 * cm, text='公章', size=10))
    d2.add(get_label(x=16.75 * cm, y=11.5 * cm, text='年\0\0\0月\0\0\0日', size=10))
    d2.add(get_label(x=3.25 * cm, y=10.25 * cm, text='区县(市)住房保障部门意见:', size=10))
    d2.add(get_label(x=1.45 * cm, y=8.75 * cm, text='负责人:', size=10))
    d2.add(get_label(x=1.45 * cm, y=7.75 * cm, text='经办人:', size=10))
    d2.add(get_label(x=16.75 * cm, y=7.75 * cm, text='公章', size=10))
    d2.add(get_label(x=16.75 * cm, y=6.5 * cm, text='年\0\0\0月\0\0\0日', size=10))
    d2.add(get_label(x=3.25 * cm, y=5 * cm, text='市保障性住房管理办公室意见:', size=10))
    d2.add(get_label(x=16.75 * cm, y=1 * cm, text='年\0\0\0月\0\0\0日', size=10))
    elements.append(Spacer(0, 1.75 * cm))
    elements.append(d2)
    doc = SimpleDocTemplate('hello.pdf',
                            topMargin=0.6 * cm,
                            leftMargin=0.7 * cm,
                            rightMargin=0.6 * cm,
                            bottomMargin=0 * cm, title='dalun')
    doc.build(elements)
Exemple #4
0
      ('LINEBELOW', (0, 0), (-1, 0), 1, colors.purple),
      ('FONT', (0, 0), (-1, 0), 'Times-Bold'),
      ('LINEABOVE', (0, -1), (-1, -1), 1, colors.purple),
      ('LINEBELOW', (0, -1), (-1, -1), 0.5, colors.purple, 1, None, None, 4,
       1), ('LINEBELOW', (0, -1), (-1, -1), 1, colors.red),
      ('FONT', (0, -1), (-1, -1), 'Times-Bold'),
      ('BACKGROUND', (1, 1), (-2, -2), colors.green),
      ('TEXTCOLOR', (0, 0), (1, -1), colors.red)]

table = Table(lista, style=ts)
elements.append(table)

d = Drawing(20, 20)
d.add(Circle(10, 10, 5, strokeColor="#FF0000", fillColor='#FF0000'))
d.background = Rect(0,
                    0,
                    20,
                    20,
                    strokeWidth=0.25,
                    strokeColor="#868686",
                    fillColor=None)

table2 = Table([['AAA', d]] * 10,
               style=[('INNERGRID', (0, 0), (-1, -1), 0.25, colors.black),
                      ('BOX', (0, 0), (-1, -1), 0.25, colors.black)])

elements.append(table2)

doc = SimpleDocTemplate(PATH_OUT + 'Report_File.pdf')
doc.build(elements)