Exporter par lots MXD vers des fichiers PDF à l'aide d'ArcGIS Desktop?


9

Nico Burgerhart a créé un fantastique script intitulé «Exporter par lots MXD en PDF» en 2008. http://arcscripts.esri.com/details.asp?dbid=14872 Avez-vous des idées sur la façon de l'implémenter dans ArcGIS 10? Quelque chose qui utilise peut-être Python? Les pages dynamiques n'ont rien de comparable que je pourrais trouver.

Voici les étapes de lecture du fichier texte qui ne fonctionne pas avec la nouvelle barre de menus d'ArcGIS 10:

Tool: Batch export MXD to PDF
Purpose: Saves all MXDs in the selected directory to PDFs in the selected output folder
Author: Nico Burgerhart (nicoburgerhart@hotmail.com)
Date: 31 Jan. 2007
INSTALLATION NOTES
------------------
1. Open ArcMap
2. Select Tools > Macro's > Visual Basic Editor
3. Select File > Import file
4. Import BatchExportMXDToPDF.bas
5. Select File > Close and Return to ArcMap
6. Select Tools > Macro's > Macro's
7. Select the BatchExportMXDToPDF mactro
8. Click Run 

Réponses:


7

Exporter un document ArcMap au format PDF est désormais inclus dans le module arcpy.mapping

Moelle d'échantillon de code d'Esri KB Comment: exporter des documents cartographiques au format PDF à l'aide de Python :

for mxd in mxd_list:

    current_mxd = arcpy.mapping.MapDocument(os.path.join(ws, mxd))
    pdf_name = mxd[:-4] + ".pdf"
    arcpy.mapping.ExportToPDF(current_mxd, pdf_name)

Pour un exemple de boîte à outils plus étendu, voir Exporter MXD en PDF avec l'aimable autorisation de @bteranUFA


Merci Mapperz, beaucoup de bons ressemblent à ... continuez à obtenir une erreur de nom de fichier Mxd invalide pour une raison quelconque lors de l'utilisation de "Exporter le document ArcMap au format PDF", des idées? capture d'écran: i.imgur.com/fOaGp.jpg
sirgeo

Avez-vous des espaces ou des caractères spéciaux dans votre .mxd?
Mapperz

oui .... des espaces, des traits de soulignement et un trait d'union. Voici quelques exemples: PLR11001200_1101A-BO.mxd 1101A_ LT 314.mxd 1101A_BB 300B.mxd 1101A_BO.mxd pensez-vous que j'ai besoin de supprimer les espaces et les tirets? je vais lui donner une photo demain matin quand je vais travailler pour faire des heures supplémentaires.
sirgeo

1
Merci Mapperz .... Cela fonctionne en effet très bien après avoir supprimé tous les espaces, les traits de soulignement et les tirets.
sirgeo

1
Un lien supplémentaire (le lien de @ Mapperz ne fonctionne plus): support.esri.com/technical-article/000012420
gisnside

1

On dirait que c'est un module VBA. Si vous installez VBA avec ArcGIS 10, vous devriez pouvoir l'exécuter de la même façon. (VBA est toujours pris en charge, mais ne sera pas dans la prochaine version.) Une meilleure approche serait de réécrire cela en tant que module complémentaire.


Merci Jakub, existe-t-il un lien avec des instructions étape par étape sur la façon d'installer VBA avec ArcGIS 10? une suggestion sur la façon de réécrire en tant que module complémentaire?
sirgeo

1
Vous aurez besoin d'un fichier de licence d'ESRI et le programme d'installation de VBA est l'un des éléments du DVD d'installation principal. En ce qui concerne l'add-in (désolé pas Add On) il y a un peu de courbe d'apprentissage avec VB .NET mais ça vaut bien l'effort. Voici un lien pour la procédure pas à pas: help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/…
Jakub Sisak GeoGraphics

1

Ajoutez le script à une boîte à outils, puis configurez deux paramètres en cliquant avec le bouton droit sur l'outil de script et en tapant l'écran nommé comme ci-dessous l'image et en choisissant le type de données du dossier comme dans l'image ci-dessous: entrez la description de l'image ici

#Export a folder of maps to PDFs at their Map Document set sizes
#Written using ArcGIS 10 and Python 2.6.5
#by: Guest

import arcpy, os

#Read input parameter from user.
path = arcpy.GetParameterAsText(0)

#Write MXD names in folder to txt log file.
writeLog=open(path+"\FileListLog.txt","w")
for fileName in os.listdir(path):
    fullPath = os.path.join(path, fileName)
    if os.path.isfile(fullPath):
        basename, extension = os.path.splitext(fullPath)
        if extension == ".mxd":
            writeLog.write(fullPath+"\n")
            mxd = arcpy.mapping.MapDocument(fullPath)
            print fileName + "\n"
del mxd
print "Done"
writeLog.close()


exportPath =arcpy.GetParameterAsText(1)
MXDread=open(path+"\FileListLog.txt","r")
for line in MXDread:
    #Strip newline from line.
    line=line.rstrip('\n')
    if os.path.isfile(line):
        basename, extension = os.path.splitext(line)
        newName=basename.split('\\')[-1]
        if extension.lower() == ".mxd":
            print "Basename:" +newName
            mxd = arcpy.mapping.MapDocument(line)
            newPDF=exportPath+"\\"+newName+".pdf"
            print newPDF
            arcpy.mapping.ExportToPDF(mxd,newPDF)
            print line + "Export Done"
MXDread.close()
item=path+"\FileListLog.txt"
os.remove(item)
del mxd

0

Regardez dans cet ensemble d'outils GP sur le centre de ressources ESRI, il peut y avoir quelque chose là-dedans pour exporter au format PDF en batch.


comme des esprits - même lien que moi.
Mapperz

Merci Chad, je reçois une erreur de nom de fichier Mxd non valide pour une raison quelconque lors de l'utilisation de «Exporter le document ArcMap au format PDF», des idées? capture d'écran: i.imgur.com/fOaGp.jpg
sirgeo

@Mapperz - D'OH! Mon erreur!
Chad Cooper

continue d'obtenir une erreur de nom de fichier Mxd non valide lors de l'utilisation de «Exporter le document ArcMap au format PDF», des idées? capture d'écran: i.imgur.com/fOaGp.jpg
sirgeo

0

S'appuyant sur les contributions de @Guest et @bteranUFA, j'ai mis en place un script python et une boîte à outils. Il exporte tous les MXD d'un dossier d'entrée vers un emplacement de sortie.

À partir d' ici, téléchargez ArcPlus.tbxet Scripts\ExportFolder2PDF.pyenregistrez dans un endroit utile, puis lisez les notes d'utilisation si nécessaire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.