The general idea is as follows:
aprx -> layout -> map -> layer -> extent
layout -> setExtent
layout -> exportToPDF
The script is as follows:
def export2PDF(root_dir):
aprx_dir = os.path.join(root_dir, "Working\\GIS\\Project\\LI-XXXXX XXX\\Master.aprx")
site_sf = get_siteboundary_zone(root_dir)
aprx = arcpy.mp.ArcGISProject(aprx_dir)
# layouts of aprx
for lyt in aprx.listLayouts():
mf = lyt.listElements("mapframe_element")[-1]
mp = mf.map
# change the spatial reference
if mp.spatialReference.name != site_sf:
mp.spatialReference = arcpy.SpatialReference(site_sf)
for lyr in mp.listLayers():
if lyr.supports("NAME") and lyr.name.find("sitebuffer") > -1:
break
# zoom to layer of sitebuffer
mf.camera.setExtent(mf.getLayerExtent(lyr, False, True))
# export map to pdf
lyt.exportToPDF(os.path.join(root_dir, "Delivery\\PDFs", lyt.name + ".pdf"), resolution=300)
print(" --", lyt.name)
aprx.save()