Quantcast
Channel: Question and Answer » arcpy
Viewing all articles
Browse latest Browse all 767

Using ReportLab with Arcpy

$
0
0

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.


Viewing all articles
Browse latest Browse all 767