I am having some issues creating a geoprocessing service within arcmap using reportlabs pdf toolkit. The script runs fine outside of arcmap, however when i try and run it in arcmap to publish as a service I get this error:
Traceback (most recent call last):
File "Y:ServerReportingtesttest_report.py", line 19, in <module>
createPDF(pdf_path, user_input)
File "Y:ServerReportingtesttest_report.py", line 16, in createPDF
c.save()
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfgencanvas.py", line 1215, in save
self._doc.SaveToFile(self._filename, self)
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfbasepdfdoc.py", line 219, in SaveToFile
data = self.GetPDFData(canvas)
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfbasepdfdoc.py", line 244, in GetPDFData
return self.format()
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfbasepdfdoc.py", line 424, in format
IOf = IO.format(self)
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfbasepdfdoc.py", line 869, in format
fcontent = format(self.content, document, toplevel=1) # yes this is at top level
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfbasepdfdoc.py", line 80, in format
f = element.format(document)
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfbasepdfdoc.py", line 1558, in format
return PD.format(document)
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfbasepdfdoc.py", line 676, in format
L = [(format(PDFName(k),document)+b" "+format(dict[k],document)) for k in keys]
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfbasepdfdoc.py", line 80, in format
f = element.format(document)
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfbasepdfdoc.py", line 607, in format
s.decode('pdfdoc')
File "C:Python27ArcGIS10.3libsite-packagesreportlabpdfbaserl_codecs.py", line 1047, in _rl_codecs
if name.startswith(e): return RL_Codecs.__rl_codecs(e)
AttributeError: 'NoneType' object has no attribute '_RL_Codecs__rl_codecs'
My very simple test code:
from reportlab.pdfgen import canvas
import arcpy
base_path = r"\hc-gisGIS_DataServerReportingtest"
pdf_path = base_path + r"outputReport.pdf"
arcpy.AddMessage(pdf_path)
user_input = 'Welcome to Reportlab!'#arcpy.GetParameterAsText(0)
arcpy.AddMessage("Generating Report...")
def createPDF(path, input):
c = canvas.Canvas(path)
c.drawString(100,750,input)
c.save()
if __name__ == "__main__":
createPDF(pdf_path, user_input)
arcpy.SetParameterAsText(0, pdf_path)
arcpy.AddMessage('Complete')
My goal here is to return a PDF as a result of the user input.