this is typically something you can do with "data driven pages". http://resources.arcgis.com/en/help/main/10.1/index.html#//00s90000003n000000 The static text and images is not a problem, you can modify one lay out and this will be transmitted to all other layouts. For the dynamic text, it can be driven based on one of the attribute fields using this syntax <dyn type="page" property="attribute" field="<Field Name>" domainlookup="true"/> The most complicated part is what you show on the map. The data driven pages will zoom on each parcel (you can either set a fixed scale or an extend related to the parcel bounding box). You will need a script for showing only one parcel and the line around. import arcpy import arcpy.mapping as mmap mxd = mmap.MapDocument("your.mxd") DF = mmap.ListDataFrames(mxd)[0] sourcely = mmap.Layer("D:\\CPDT_ETW_SIG_DATA_1\\production_carte\\transpa_communes.lyr") i = 0 fc = yourparcels.shp rows = arcpy.SearchCursor(fc) for row in rows: sourcely.definitionQuery = '("FID" = ' + str(i) + ')' #select only one parcel sourcely.save() sourcely = mmap.Layer("mylayer.lyr") ly = mmap.ListLayers(mxd)[1] mmap.UpdateLayer(DF, ly, sourcely, False) i = i + 1 mxd.dataDrivenPages.exportToPDF(path + row.getValue("name") + ".pdf", 'RANGE' , str(i), '400') for the lines around the parcels, this gets even more complicated: you should prepare a set of lines for all your parcels (loop to create a buffer around each parcel then clip those), then create a layer that points on the appropriate lines in the above script example.