9

Nico Burgerhart made a fantastic script called "Batch export MXD to PDF" back in 2008. http://arcscripts.esri.com/details.asp?dbid=14872 Any ideas how to implement it in ArcGIS 10? Something using Python perhaps? Data Driven Pages does not have anything comparable that i could find.

Here's the steps in read me text file which doesn't jive with ArcGIS 10's new menu bar:

Tool: Batch export MXD to PDF
Purpose: Saves all MXDs in the selected directory to PDFs in the selected output folder
Author: Nico Burgerhart ([email protected])
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 

5 Answers 5

7

Export Map Document to PDF is now included in the arcpy.mapping module

Pith of code sample from Esri KB How To: Export map documents to PDF using 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)

For a more extended Toolbox example see Export MXD to PDF courtesy of @bteranUFA

8
  • Thanks Mapperz, lots of good ones there look like.... keep getting Invalid Mxd filename error for some reason when using 'Export Map Document to PDF', any ideas? screen shot: i.imgur.com/fOaGp.jpg
    – sirgeo
    Commented Mar 11, 2011 at 22:28
  • Do you have spaces or special characters in your .mxd?
    – Mapperz
    Commented Mar 13, 2011 at 2:19
  • yes.... spaces, underscores, and a hyphen. Here's a few examples: PLR11001200_1101A-BO.mxd 1101A_ LT 314.mxd 1101A_BB 300B.mxd 1101A_BO.mxd Do you think i need to take out the spaces and hyphens? i'll give it shot tomorrow morning when i go into work to do some overtime.
    – sirgeo
    Commented Mar 13, 2011 at 4:58
  • 1
    Thanks Mapperz.... It indeed works fine after removing all the spaces, underscores, and hyphens.
    – sirgeo
    Commented Mar 13, 2011 at 20:55
  • 1
    An extra link (@Mapperz's link is not working anymore) : support.esri.com/technical-article/000012420
    – gisnside
    Commented Sep 13, 2016 at 7:56
1

Looks like this is a VBA module. If you install VBA with ArcGIS 10 you should be able to run it just the same. (VBA is still supported, but will not be in the next release.) Better approach would be to re-write this as an add-on.

2
  • Thanks Jakub, is there a link with step by step instructions on how to install VBA with ArcGIS 10? any suggestion on how to re-write as an add-on?
    – sirgeo
    Commented Mar 11, 2011 at 22:46
  • 1
    You will need a license file from ESRI and VBA installer is one of the items on the main installation DVD. As for the Add-In (sorry not Add On) there is a bit of learning curve with VB .NET but it's well worth the effort. Here is a link for the walkthrough: help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/… Commented Mar 11, 2011 at 23:07
1

Add the script to a toolbox, then setup two paramters by right clicking on the script tool and typing in the display named like below image and picking data type of folder like in below image: enter image description here

#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

Look in this set of GP tools on the ESRI Resource Center, there may be something in there for exporting to PDF in batch.

4
  • like minds - same link as me.
    – Mapperz
    Commented Mar 11, 2011 at 22:18
  • Thanks Chad, i keep getting Invalid Mxd filename error for some reason when using 'Export Map Document to PDF', any ideas? screen shot: i.imgur.com/fOaGp.jpg
    – sirgeo
    Commented Mar 11, 2011 at 22:45
  • @Mapperz - D'OH! My mistake! Commented Mar 12, 2011 at 14:33
  • keep getting Invalid Mxd filename error when using 'Export Map Document to PDF', any ideas? screen shot: i.imgur.com/fOaGp.jpg
    – sirgeo
    Commented Mar 12, 2011 at 16:24
0

Building on the contributions of @Guest and @bteranUFA I've put together a python script and toolbox. It exports all MXD from an input folder to an output location.

From here download ArcPlus.tbx and Scripts\ExportFolder2PDF.py and save somewhere useful, then read the usage notes if needed.

Not the answer you're looking for? Browse other questions tagged or ask your own question.