Example #1
0
def getTOC(commune, pdfconfig, translations):

    toc_pages = ExtractPDF(commune, pdfconfig, translations)

    # START TOC
    toc_pages.add_page()
    toc_pages.set_margins(*pdfconfig.pdfmargins)
    toc_pages.set_y(40)
    toc_pages.set_font(*pdfconfig.textstyles['title3'])
    toc_pages.multi_cell(0, 12, translations['toclabel'])

    toc_pages.set_y(60)
    toc_pages.set_font(*pdfconfig.textstyles['bold'])
    toc_pages.cell(12, 15, '', '', 0, 'L')
    toc_pages.cell(118, 15, '', 'L', 0, 'L')
    toc_pages.cell(15, 15, '', 'L', 0, 'C')
    toc_pages.cell(15, 15, '', 'L', 1, 'C')

    toc_pages.cell(12, 5, translations['pagelabel'], 'B', 0, 'L')
    toc_pages.cell(118 ,5, translations['toclabel'], 'LB', 0, 'L')
    y = toc_pages.get_y()
    x = toc_pages.get_x()
    toc_pages.rotate(90)
    toc_pages.text(x-4, y+8, translations['legalprovisionslabel'].replace(' ', '\n'))
    toc_pages.text(x-4, y+23, translations['referenceslabel'])
    toc_pages.rotate(0)
    toc_pages.cell(15, 5, '', 'LB', 0, 'L')
    toc_pages.cell(15, 5, '', 'LB', 1, 'L')

    return toc_pages
Example #2
0
def getTitlePage(feature_info, crdppf_wms, nomcom, commune, pdfconfig, translations):

    temp_path = pkg_resources.resource_filename('crdppf', 'static/public/temp_files/')

    # the dictionnary for the document
    reportInfo = {}
    reportInfo['type'] = '[officiel]'

    # the dictionnary for the parcel
    feature_info['no_EGRID'] = 'to be defined'
    #feature_info['lastUpdate'] = datetime.now()
    feature_info['operator'] = 'F.Voisard - SITN'
    today= datetime.now()

    # Create property highlight sld
    sld = u"""<?xml version="1.0" encoding="UTF-8"?>
<sld:StyledLayerDescriptor version="1.0.0" xmlns="http://www.opengis.net/ogc" xmlns:sld="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd">
<sld:NamedLayer>
<sld:Name>parcelles</sld:Name>
<sld:UserStyle>
<sld:Name>propertyIsEqualTo</sld:Name>
<sld:Title>propertyIsEqualTo</sld:Title>
<sld:FeatureTypeStyle>
<sld:Rule>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>idemai</ogc:PropertyName>
<ogc:Literal>"""
    sld += str(feature_info['idemai'])
    sld += u"""</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<sld:PolygonSymbolizer>
<sld:Stroke>
<sld:CssParameter name="stroke">#ff0000</sld:CssParameter>
<sld:CssParameter name="stroke-opacity">1</sld:CssParameter>
<sld:CssParameter name="stroke-width">5</sld:CssParameter>
</sld:Stroke>
</sld:PolygonSymbolizer>
<sld:TextSymbolizer>
<sld:Label>
<ogc:PropertyName>nummai</ogc:PropertyName>
</sld:Label> 
<sld:Font>
<sld:CssParameter name="font-family">pdfconfig.fontfamily</sld:CssParameter> 
<sld:CssParameter name="font-weight">bold</sld:CssParameter> 
<sld:CssParameter name="font-size">8</sld:CssParameter> 
</sld:Font>
<sld:Fill>
<sld:CssParameter name="fill">#000000</sld:CssParameter> 
</sld:Fill>
</sld:TextSymbolizer>
</sld:Rule>
</sld:FeatureTypeStyle>
</sld:UserStyle>
</sld:NamedLayer>
</sld:StyledLayerDescriptor>"""


    sldfile = open(temp_path+'sld_'+'siteplan'+'.xml', 'w')
    sldfile.write(sld)
    sldfile.close()

    layers = [
        'parcelles',
        'mo22_batiments',
        'mo21_batiments_provisoires',
        'mo23_batiments_projetes',
        'ag1_parcellaire_provisoire',
        'mo9_immeubles',
        'mo5_point_de_detail',
        'mo7_obj_divers_lineaire',
        'mo7_obj_divers_couvert',
        'mo7_obj_divers_piscine',
        'mo7_obj_divers_cordbois',
        'mo4_pfa_1',
        'mo4_pfp_3',
        'mo4_pfp_1_2',
        'la3_limites_communales',
        'mo22_batiments'
    ]

    scale = feature_info['printFormat']['scale']*2
    # SitePlan/Plan de situation/Situationsplan
    map_params = {'width':feature_info['printFormat']['mapWidth'],'height':feature_info['printFormat']['mapHeight']}
    map_params['bboxCenterX'] = (feature_info['BBOX']['maxX']+feature_info['BBOX']['minX'])/2
    map_params['bboxCenterY'] = (feature_info['BBOX']['maxY']+feature_info['BBOX']['minY'])/2
    #to recenter the map on the bbox of the feature, with the right scale and add at least 10% of space we calculate a wmsBBOX
    wmsBBOX = {}
    wmsBBOX['centerY'] =  int(map_params['bboxCenterY'])
    wmsBBOX['centerX'] =  int(map_params['bboxCenterX'])
    wmsBBOX['minX'] = int(wmsBBOX['centerX'] - (160*scale/1000/2))
    wmsBBOX['maxX'] = int(wmsBBOX['centerX']+(160*scale/1000/2))
    wmsBBOX['minY'] = int(wmsBBOX['centerY']-(90*scale/1000/2))
    wmsBBOX['maxY'] = int(wmsBBOX['centerY']+(90*scale/1000/2))

    #wms = WebMapService('http://sitn.ne.ch/mapproxy/service', version='1.1.1')
    wms = WebMapService(crdppf_wms, version='1.1.1')
    #layers = 'plan_ville_c2c'

    map = wms.getmap(
        layers=layers,
        sld = pdfconfig.sld_url + '/sld_' + 'siteplan' + '.xml',
        srs='EPSG:21781',
        bbox=(wmsBBOX['minX'],wmsBBOX['minY'],wmsBBOX['maxX'],wmsBBOX['maxY']),
        size=(1600,900),
        format='image/png',
        transparent=False
    )

    out = open(temp_path + 'siteplan.png', 'wb')
    out.write(map.read())
    out.close()

    mappath = temp_path + 'siteplan.png'

    # Create PDF extract
    pdf = ExtractPDF(commune, pdfconfig, translations) 

    # START TITLEPAGE
    pdf.add_page()
    pdf.set_margins(*pdfconfig.pdfmargins)
    path = pkg_resources.resource_filename('crdppf', 'utils\\')

    # PageTitle
    pdf.set_y(45)
    pdf.set_font(*pdfconfig.textstyles['title1'])
    if reportInfo['type'] =='certified':
        pdf.multi_cell(0, 9, translations["certifiedextracttitlelabel"])
    elif reportInfo['type'] =='reduced':
        pdf.multi_cell(0, 9, translations['reducedextracttitlelabel'])
    elif reportInfo['type'] =='reducedcertified':
        pdf.multi_cell(0, 9, translations['reducedcertifiedextracttitlelabel'])
    else:
        pdf.multi_cell(0, 9, translations['normalextracttitlelabel'])
    pdf.set_font(*pdfconfig.textstyles['title2'])
    #pdf.multi_cell(0, 7, translations['extractsubtitlelabel'])
    pdf.multi_cell(0, 7, translations['extractsubtitlelabel'])
    pdf.ln()
    
    map = pdf.image(temp_path+'siteplan.png', 25, 80, 160, 90)

    y=pdf.get_y()
    pdf.rect(25, 80, 160, 90, '')
    pdf.set_y(y+105)
    # First infoline
    pdf.set_font(*pdfconfig.textstyles['bold'])
    pdf.cell(45, 5, translations['propertylabel'], 0, 0, 'L')

    pdf.set_font(*pdfconfig.textstyles['normal'])
    if feature_info['nomcad'] is not None:
        pdf.cell(50, 5, feature_info['nummai'].encode('iso-8859-1')+str(' (')+feature_info['nomcad'].encode('iso-8859-1')+str(') ')+str(' - ')+feature_info['type'].encode('iso-8859-1'), 0, 1, 'L')
    else : 
        pdf.cell(50, 5, feature_info['nummai'].encode('iso-8859-1'), 0, 1, 'L')
    
     # Second infoline : Area and EGRID
    pdf.set_font(*pdfconfig.textstyles['bold'])
    pdf.cell(45, 5, translations['propertyarealabel'], 0, 0, 'L')
    pdf.set_font(*pdfconfig.textstyles['normal'])
    pdf.cell(50, 5, str(feature_info['area'])+str(' m2').encode('iso-8859-1'), 0, 0, 'L')
    pdf.set_font(*pdfconfig.textstyles['bold'])
    pdf.cell(35, 5, translations['EGRIDlabel'], 0, 0, 'L')
    pdf.set_font(*pdfconfig.textstyles['normal'])
    pdf.cell(50, 5, feature_info['no_EGRID'].encode('iso-8859-1'), 0, 1, 'L')

    # Third infoline : Adresse/localisation
    pdf.set_font(*pdfconfig.textstyles['bold'])
    pdf.cell(45, 5, translations['addresslabel'], 0, 0, 'L')
    pdf.set_font(*pdfconfig.textstyles['normal'])
    pdf.cell(50, 5, str('Placeholder').encode('iso-8859-1'), 0, 1, 'L')

     # Fourth infoline : municipality and BFS number
    pdf.set_font(*pdfconfig.textstyles['bold'])
    pdf.cell(45, 5,  translations['municipalitylabel']+str(' (')+translations['federalmunicipalitynumberlabel']+str(')'), 0, 0, 'L')
    pdf.set_font(*pdfconfig.textstyles['normal'])
    pdf.cell(50, 5, feature_info['nomcom'].encode('iso-8859-1')+str(' (')+str(feature_info['nufeco']).encode('iso-8859-1')+str(')'), 0, 0, 'L')

    # Creation date and operator
    y= pdf.get_y()
    pdf.set_y(y+10)
    pdf.set_font(*pdfconfig.textstyles['bold'])
    pdf.cell(45, 5, translations['extractoperatorlabel'], 0, 0, 'L')
    pdf.set_font(*pdfconfig.textstyles['normal'])
    pdf.cell(70, 5, feature_info['operator'].encode('iso-8859-1'), 0, 1, 'L')

    y= pdf.get_y()
    pdf.set_y(y+5)
    pdf.set_font(*pdfconfig.textstyles['bold'])
    pdf.cell(0, 5, translations['signaturelabel'], 0, 0, 'L')

    pdf.set_y(250)
    pdf.set_font(*pdfconfig.textstyles['bold'])
    pdf.cell(0, 5, translations['disclaimerlabel'], 0, 1, 'L')
    pdf.set_font(*pdfconfig.textstyles['normal'])
    pdf.multi_cell(0, 5, translations['disclaimer'], 0, 1, 'L')

    # END TITLEPAGE

    return pdf
Example #3
0
def getAppendices(commune, pdfconfig, translations):

    appendix_pages = ExtractPDF(commune, pdfconfig, translations)

    # START APPENDIX
    appendix_pages.add_page()
    appendix_pages.set_margins(*pdfconfig.pdfmargins)
    appendix_pages.set_y(40)
    appendix_pages.set_font(*pdfconfig.textstyles['title3'])
    appendix_pages.multi_cell(0, 12, translations['appendiceslistlabel'])

    appendix_pages.set_y(60)
    appendix_pages.set_font(*pdfconfig.textstyles['bold'])
    appendix_pages.cell(15, 6, translations['pagelabel'], 0, 0, 'L')
    appendix_pages.cell(135, 6, translations['appendicestitlelabel'], 0, 1, 'L')

    return appendix_pages