<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Print PDFs with Python? in Python Questions</title>
    <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130304#M10121</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I ended up using win32api and win32print and setting my default printer preferences.&amp;nbsp; There is a way to expose all the printer defaults, but I haven't figured out how to set them yet.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
import osfrom os import path
from os import listdir
from os.path import isfile, join
import win32api
import win32print


mypath = r"\\&amp;lt;your path goes here&amp;gt;"

#list all the files in a folder
files = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]


for file in files:
&amp;nbsp;&amp;nbsp;&amp;nbsp; file = mypath + "\\" + file
&amp;nbsp;&amp;nbsp;&amp;nbsp; if "11x17" in file and "County" in file: 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; win32api.ShellExecute (
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "print",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # If this is None, the default printer will
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # be used anyway.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '/d:"%s"' % win32print.GetDefaultPrinter (),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ".",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
del files
del mypath
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;this will show all the properties for all your connected printers:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;


#Lists properties and capabilities for all the printers installed on a computer.
import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_PrinterConfiguration")
for objItem in colItems:
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Bits Per Pel: ", objItem.BitsPerPel
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Caption: ", objItem.Caption
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Collate: ", objItem.Collate
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Color: ", objItem.Color
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Copies: ", objItem.Copies
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Description: ", objItem.Description
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Device Name: ", objItem.DeviceName
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Display Flags: ", objItem.DisplayFlags
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Display Frequency: ", objItem.DisplayFrequency
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Dither Type: ", objItem.DitherType
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Driver Version: ", objItem.DriverVersion
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Duplex: ", objItem.Duplex
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Form Name: ", objItem.FormName
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Horizontal Resolution: ", objItem.HorizontalResolution
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "ICM Intent: ", objItem.ICMIntent
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "ICM Method: ", objItem.ICMMethod
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Log Pixels: ", objItem.LogPixels
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Media Type: ", objItem.MediaType
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Name: ", objItem.Name
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Orientation: ", objItem.Orientation
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Paper Length: ", objItem.PaperLength
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Paper Size: ", objItem.PaperSize
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Paper Width: ", objItem.PaperWidth
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Pels Height: ", objItem.PelsHeight
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Pels Width: ", objItem.PelsWidth
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Print Quality: ", objItem.PrintQuality
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Scale: ", objItem.Scale
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Setting ID: ", objItem.SettingID
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Specification Version: ", objItem.SpecificationVersion
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "TT Option: ", objItem.TTOption
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Vertical Resolution: ", objItem.VerticalResolution
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "X Resolution: ", objItem.XResolution
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Y Resolution: ", objItem.YResolution
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "---------------------------------------------------"
&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Source: &lt;/SPAN&gt;&lt;A href="http://win32com.goermezer.de/content/view/145/189/" rel="nofollow noopener noreferrer" target="_blank"&gt;http://win32com.goermezer.de/content/view/145/189/&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Sat, 11 Dec 2021 07:20:02 GMT</pubDate>
    <dc:creator>DavidBrett</dc:creator>
    <dc:date>2021-12-11T07:20:02Z</dc:date>
    <item>
      <title>Print PDFs with Python?</title>
      <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130298#M10115</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;People often come into my office requesting maps of their property.&amp;nbsp; I have a script that will open up a command prompt window then allow the non-GIS users in my office to enter a Parcel ID number in the command window. Once user input has been accepted, the script will automatically select that parcel, zoom to it, then export it to PDF.&amp;nbsp; I would like to add a print function to automatically print the PDF of the map.&amp;nbsp; I know that I can use the PrintMap function to print straight from ArcMap, however, this does not come out very clear.&amp;nbsp; I am wondering if anyone knows of a way to use python to print a PDF?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Sep 2012 20:02:38 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130298#M10115</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2012-09-17T20:02:38Z</dc:date>
    </item>
    <item>
      <title>Re: Print PDFs with Python?</title>
      <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130299#M10116</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;You can use the Adobe Reader command line print option. If you leave the printer name blank, reader will print to the default printer.&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;AcroRd32 /N /T PdfFile [PrinterName [ PrinterDriver [ PrinterPort ] ] ]&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Python example:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="plain" name="code"&gt;import subprocess&amp;nbsp; printer='MyPrinter' pdffile=r'C:\Some Dir\some pdf.pdf' acroread=r'C:\Program Files (x86)\Adobe\Reader 9.0\Reader\AcroRd32.exe'&amp;nbsp; #'"%s"'is to wrap double quotes around paths # as subprocess will use list2cmdline internally if we pass it a list #which escapes double quotes and Adobe Reader doesn't like that cmd='"%s" /N /T "%s" "%s"'%(acroread,pdffile,printer)&amp;nbsp; proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE) stdout,stderr=proc.communicate() exit_code=proc.wait()&lt;/PRE&gt;&lt;DIV style="display:none;"&gt; &lt;/DIV&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 17 Sep 2012 22:51:20 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130299#M10116</guid>
      <dc:creator>Luke_Pinner</dc:creator>
      <dc:date>2012-09-17T22:51:20Z</dc:date>
    </item>
    <item>
      <title>Re: Print PDFs with Python?</title>
      <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130300#M10117</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;You are the smartest man alive!!! Thank you soo much, worked like a charm!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is the code in case anyone is interested in doing something similar:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
# This script allows a user to input a parcel ID number
# This will automatically save the map to PDF so it can be printed
# Written by Caleb Mackey&amp;nbsp; 9/17/2012
# Print PDF section courtesy of Luke Pinner 9/18/2012

import arcpy, os, sys, traceback
import subprocess
arcpy.env.overwriteOutput = True

def userinput():
&amp;nbsp;&amp;nbsp;&amp;nbsp; mxd = arcpy.mapping.MapDocument("G:\\Map_Documents\\Walkin_requests\\Customer_map.mxd")
&amp;nbsp;&amp;nbsp;&amp;nbsp; df = arcpy.mapping.ListDataFrames(mxd, "Main")[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; parcels = arcpy.mapping.ListLayers(mxd, "Parcels GIS Acres", df)[0]
&amp;nbsp;&amp;nbsp;&amp;nbsp; pdfpath = 'C:\\Documents and Settings\\gis\\Desktop\\PRINT_MAPS\\'
&amp;nbsp;&amp;nbsp;&amp;nbsp; txtfile = pdfpath + 'Parcelmap_ERROR.txt'
&amp;nbsp;&amp;nbsp;&amp;nbsp; acroread = r'C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe'
&amp;nbsp;&amp;nbsp;&amp;nbsp; try:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Enter Parcel Number WITHOUT dashes and hit ENTER"
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parcelid = raw_input()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parcel_num = str(parcelid)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'selecting parcel...'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; query = "SOL_PID ='%s'" % parcel_num
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.SelectLayerByAttribute_management(parcels, "NEW_SELECTION", query)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; result = arcpy.GetCount_management(parcels)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if str(result) == '0':
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Invalid SQL statement, check parcel ID'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Please verify the Parcel ID and try again'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return userinput();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif str(result) &amp;gt; 0:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; df.zoomToSelectedFeatures()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; df.extent = parcels.getSelectedExtent(True)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; df.scale *= 1.65
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.RefreshActiveView()

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Exporting to pdf...'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pdf = pdfpath + str(parcel_num) + '.pdf'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pdfname = str(parcel_num) + '.pdf'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if arcpy.Exists(pdf):
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.Delete_management(pdf)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.mapping.ExportToPDF(mxd,pdfpath + str(parcel_num) + '.pdf')

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; del mxd
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'PDF Exported, to view open ' + str(pdfname) + ' in the "PRINT MAPS" folder.'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Sending document to default printer'

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #### Print PDF Code thanks to Luke Pinner #####
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # '"%s"'is to wrap double quotes around paths
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # as subprocess will use list2cmdline internally if we pass it a list
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # which escapes double quotes and Adobe Reader doesn't like that
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd='"%s" /N /T "%s"' %(acroread,pdf)

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stdout,stderr=proc.communicate()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit_code=proc.wait()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Successful'
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; except:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print arcpy.GetMessages(2)
try:
&amp;nbsp;&amp;nbsp;&amp;nbsp; userinput()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
except:
&amp;nbsp;&amp;nbsp;&amp;nbsp; # Get the traceback object
&amp;nbsp;&amp;nbsp;&amp;nbsp; tb = sys.exc_info()[2]
&amp;nbsp;&amp;nbsp;&amp;nbsp; tbinfo = traceback.format_tb(tb)[0]

&amp;nbsp;&amp;nbsp;&amp;nbsp; # Concatenate information together concerning the error into a message string
&amp;nbsp;&amp;nbsp;&amp;nbsp; pymsg = "PYTHON ERRORS:\nTraceback info:\n" + tbinfo + "\nError Info:\n" + str(sys.exc_info()[1])
&amp;nbsp;&amp;nbsp;&amp;nbsp; msgs = "ArcPy ERRORS:\n" + arcpy.GetMessages(2) + "\n"

&amp;nbsp;&amp;nbsp;&amp;nbsp; # Return python error messages for use in script tool or Python Window
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddError(pymsg)
&amp;nbsp;&amp;nbsp;&amp;nbsp; arcpy.AddError(msgs)

&amp;nbsp;&amp;nbsp;&amp;nbsp; # Print Python error messages for use in Python / Python Window
&amp;nbsp;&amp;nbsp;&amp;nbsp; print pymsg + "\n"
&amp;nbsp;&amp;nbsp;&amp;nbsp; print msgs

&amp;nbsp;&amp;nbsp;&amp;nbsp; # Print Log file
&amp;nbsp;&amp;nbsp;&amp;nbsp; txtFile = open(txtfile, "w")
&amp;nbsp;&amp;nbsp;&amp;nbsp; txtFile.write(pymsg)
&amp;nbsp;&amp;nbsp;&amp;nbsp; txtFile.write(msgs)
&amp;nbsp;&amp;nbsp;&amp;nbsp; txtFile.write(query)

&amp;nbsp;&amp;nbsp;&amp;nbsp; txtFile.close()
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 07:19:59 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130300#M10117</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2021-12-11T07:19:59Z</dc:date>
    </item>
    <item>
      <title>Re: Print PDFs with Python?</title>
      <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130301#M10118</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Thanks for sharing this!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Is there a way to specify printer options using this method? &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Specifically, set color or black and white, paper size, scaling, print quality, etc.?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 11 Feb 2014 20:17:40 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130301#M10118</guid>
      <dc:creator>DavidBrett</dc:creator>
      <dc:date>2014-02-11T20:17:40Z</dc:date>
    </item>
    <item>
      <title>Re: Print PDFs with Python?</title>
      <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130302#M10119</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;Thanks for sharing this!!&lt;BR /&gt;&lt;BR /&gt;Is there a way to specify printer options using this method? &lt;BR /&gt;Specifically, set color or black and white, paper size, scaling, print quality, etc.?&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The method that Luke provided is just passing some command parameters through the python subprocess module.&amp;nbsp; I am not aware of any ways to pass print settings through the command prompt.&amp;nbsp; There may be a way.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;I would recommend looking at the python CUPS module, aka [url=&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://pypi.python.org/pypi/pycups]pycups[/url" rel="nofollow" target="_blank"&gt;https://pypi.python.org/pypi/pycups]pycups[/url&lt;/A&gt;&lt;SPAN&gt;].&amp;nbsp; This module seems to give you control to connecting to printers as well as setting up printing properties.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Feb 2014 15:15:54 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130302#M10119</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2014-02-12T15:15:54Z</dc:date>
    </item>
    <item>
      <title>Re: Print PDFs with Python?</title>
      <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130303#M10120</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive-quote"&gt;I would recommend looking at the python CUPS module, aka &lt;A href="https://pypi.python.org/pypi/pycups" target="_blank"&gt;pycups&lt;/A&gt;.&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;CUPS is Linux/UNIX only.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I don't know if there's a(n easy) way to control the print output on Windows.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Feb 2014 17:33:06 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130303#M10120</guid>
      <dc:creator>Luke_Pinner</dc:creator>
      <dc:date>2014-02-12T17:33:06Z</dc:date>
    </item>
    <item>
      <title>Re: Print PDFs with Python?</title>
      <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130304#M10121</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I ended up using win32api and win32print and setting my default printer preferences.&amp;nbsp; There is a way to expose all the printer defaults, but I haven't figured out how to set them yet.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;
import osfrom os import path
from os import listdir
from os.path import isfile, join
import win32api
import win32print


mypath = r"\\&amp;lt;your path goes here&amp;gt;"

#list all the files in a folder
files = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]


for file in files:
&amp;nbsp;&amp;nbsp;&amp;nbsp; file = mypath + "\\" + file
&amp;nbsp;&amp;nbsp;&amp;nbsp; if "11x17" in file and "County" in file: 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; win32api.ShellExecute (
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "print",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; file,
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # If this is None, the default printer will
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # be used anyway.
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; '/d:"%s"' % win32print.GetDefaultPrinter (),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ".",
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
del files
del mypath
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;this will show all the properties for all your connected printers:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt;


#Lists properties and capabilities for all the printers installed on a computer.
import win32com.client
strComputer = "."
objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
objSWbemServices = objWMIService.ConnectServer(strComputer,"root\cimv2")
colItems = objSWbemServices.ExecQuery("Select * from Win32_PrinterConfiguration")
for objItem in colItems:
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Bits Per Pel: ", objItem.BitsPerPel
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Caption: ", objItem.Caption
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Collate: ", objItem.Collate
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Color: ", objItem.Color
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Copies: ", objItem.Copies
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Description: ", objItem.Description
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Device Name: ", objItem.DeviceName
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Display Flags: ", objItem.DisplayFlags
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Display Frequency: ", objItem.DisplayFrequency
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Dither Type: ", objItem.DitherType
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Driver Version: ", objItem.DriverVersion
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Duplex: ", objItem.Duplex
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Form Name: ", objItem.FormName
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Horizontal Resolution: ", objItem.HorizontalResolution
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "ICM Intent: ", objItem.ICMIntent
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "ICM Method: ", objItem.ICMMethod
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Log Pixels: ", objItem.LogPixels
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Media Type: ", objItem.MediaType
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Name: ", objItem.Name
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Orientation: ", objItem.Orientation
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Paper Length: ", objItem.PaperLength
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Paper Size: ", objItem.PaperSize
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Paper Width: ", objItem.PaperWidth
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Pels Height: ", objItem.PelsHeight
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Pels Width: ", objItem.PelsWidth
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Print Quality: ", objItem.PrintQuality
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Scale: ", objItem.Scale
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Setting ID: ", objItem.SettingID
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Specification Version: ", objItem.SpecificationVersion
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "TT Option: ", objItem.TTOption
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Vertical Resolution: ", objItem.VerticalResolution
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "X Resolution: ", objItem.XResolution
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "Y Resolution: ", objItem.YResolution
&amp;nbsp;&amp;nbsp;&amp;nbsp; print "---------------------------------------------------"
&lt;/PRE&gt;&lt;BR /&gt;&lt;SPAN&gt;Source: &lt;/SPAN&gt;&lt;A href="http://win32com.goermezer.de/content/view/145/189/" rel="nofollow noopener noreferrer" target="_blank"&gt;http://win32com.goermezer.de/content/view/145/189/&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/A&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 11 Dec 2021 07:20:02 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130304#M10121</guid>
      <dc:creator>DavidBrett</dc:creator>
      <dc:date>2021-12-11T07:20:02Z</dc:date>
    </item>
    <item>
      <title>Re: Print PDFs with Python?</title>
      <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130305#M10122</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Luke,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your example certainly helped me in getting started. The hard part for me was hard coding the path for adobe as it is not that flexible and would require each machine to be at the same level of Adobe Reader. This led me to look for a more dynamic way of handling this so I thought I would share my findings if anyone should come across your post. I still had problems with ArcMap locking when the pdf was open and had to manually kill the adobe process in task manager to free up ArcMap so I issued a simple command to kill the process after 5 seconds allowing adobe reader to open the document, and send the pdf to the print spool. In our case we were automating a report using an *.rlf file and exporting it to a pdf, we needed a way to print both a map and the report which is what the below was doing. Thank you for your contribution and sharing your code!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="python" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14093167177163924 jive_text_macro" jivemacro_uid="_14093167177163924" modifiedtitle="true"&gt;
&lt;P&gt;import _winreg as winreg&lt;/P&gt;
&lt;P&gt;import time, arcpy, os, subprocess&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# This is where you would specify the path to your pdf&lt;/P&gt;
&lt;P&gt;pdf = 'Place the path to your pdf here.pdf'&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# Dynamically get path to AcroRD32.exe&lt;/P&gt;
&lt;P&gt;AcroRD32Path = winreg.QueryValue(winreg.HKEY_CLASSES_ROOT,'Software\\Adobe\\Acrobat\Exe')&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;acroread = AcroRD32Path&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;#print('variable acroread is : {0}'.format(acroread))&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# The last set of double quotes leaves the printer blank, basically defaulting to the default printer for the system.&lt;/P&gt;
&lt;P&gt;cmd= '{0} /N /T "{1}" ""'.format(acroread,pdf)&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# See what the command line will look like before execution&lt;/P&gt;
&lt;P&gt;print(cmd)&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# Open command line in a different process other than ArcMap&lt;/P&gt;
&lt;P&gt;proc = subprocess.Popen(cmd)&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# 2 lines below would not close adobe reader and locked ArcMap.&lt;/P&gt;
&lt;P&gt;#stdout,stderr=proc.communicate()&lt;/P&gt;
&lt;P&gt;#exit_code=proc.wait()&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# Needed to put a sleep in here so the command line had time to open the pdf and spool the job to the printer.&lt;/P&gt;
&lt;P&gt;time.sleep(5)&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;# Kill AcroRD32.exe from Task Manager&lt;/P&gt;
&lt;P&gt;os.system("TASKKILL /F /IM AcroRD32.exe")&lt;/P&gt;

&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Aug 2014 12:55:23 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130305#M10122</guid>
      <dc:creator>KenCarrier</dc:creator>
      <dc:date>2014-08-29T12:55:23Z</dc:date>
    </item>
    <item>
      <title>Re: Print PDFs with Python?</title>
      <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130306#M10123</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;That is pretty cool, Ken!&amp;nbsp; In the past I have just used glob, which should also find AcroRd32.exe no matter what the version:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;DIV style="display: none;"&gt; &lt;/DIV&gt;&lt;BLOCKQUOTE&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;
&lt;P&gt;acroread = glob.glob(r"C:\Program Files (x86)\Adobe\Reader*\Reader\AcroRd32.exe")[0]&lt;/P&gt;
&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I like yours better though.&amp;nbsp; I was also having issues with adobe reader remaining open after PDF was printed so thanks for sharing termination part!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Aug 2014 13:13:29 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130306#M10123</guid>
      <dc:creator>Anonymous User</dc:creator>
      <dc:date>2014-08-29T13:13:29Z</dc:date>
    </item>
    <item>
      <title>Re: Print PDFs with Python?</title>
      <link>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130307#M10124</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I got it . Thank you very much for your help. Translation courtesy of Google . &lt;/P&gt;&lt;P&gt;From Spain&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 27 Feb 2015 09:42:17 GMT</pubDate>
      <guid>https://community.esri.com/t5/python-questions/print-pdfs-with-python/m-p/130307#M10124</guid>
      <dc:creator>CesarMediavilla</dc:creator>
      <dc:date>2015-02-27T09:42:17Z</dc:date>
    </item>
  </channel>
</rss>

