In [1]:
import os
from xhtml2pdf import pisa

In [49]:
PDF_FILE = os.path.expanduser('~/Downloads/test.pdf')
HTML_FILE = os.path.expanduser('~/Downloads/test.html')

In [50]:
def pdfFromHtml(html, pdfFile):
  with open(pdfFile, 'w+b') as ph:
    pisaStatus = pisa.CreatePDF(html, dest=ph)  
  return pisaStatus.err

In [60]:
HTML = '''
<html> 
  <head>
    <meta charset="utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <title>TF dataSource-jobName</title>
    <meta name="application-name" content="Text-Fabric Search Box"/>
    <style>
h1 {
  margin-top: 0.5em;
  margin-bottom: 0.2em;
  font-weight: bold;
  font-family: sans-serif;
  color: khaki;
  background-color: #664400;
  border-color: blue;
  border-style: auto;
  border-width: 0.5em;
  border-radius: 0.5em;
}
p {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}
    </style>
  </head>
  <body>
    <h1>Test-geöriënteerd</h1>
    <p>Hello, world</p>
  </body>
</html> 
'''

with open(HTML_FILE, 'w') as fh:
  fh.write(HTML)

In [61]:
pisa.showLogging()
pdfFromHtml(HTML, PDF_FILE)


---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-61-c5d9732c7152> in <module>
      1 pisa.showLogging()
----> 2 pdfFromHtml(HTML, PDF_FILE)

<ipython-input-50-e03fc47da29d> in pdfFromHtml(html, pdfFile)
      1 def pdfFromHtml(html, pdfFile):
      2   with open(pdfFile, 'w+b') as ph:
----> 3     pisaStatus = pisa.CreatePDF(html, dest=ph)
      4   return pisaStatus.err

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/xhtml2pdf/document.py in pisaDocument(src, dest, path, link_callback, debug, default_css, xhtml, encoding, xml_output, raise_exception, capacity, context_meta, **kw)
    134         doc.multiBuild(context.story)
    135     else:
--> 136         doc.build(context.story)
    137 
    138     # Add watermarks

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/reportlab/platypus/doctemplate.py in build(self, flowables, filename, canvasmaker)
   1034                 try:
   1035                     first = flowables[0]
-> 1036                     self.handle_flowable(flowables)
   1037                     handled += 1
   1038                 except:

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/reportlab/platypus/doctemplate.py in handle_flowable(self, flowables)
    890             canv = self.canv
    891             #try to fit it then draw it
--> 892             if frame.add(f, canv, trySplit=self.allowSplitting):
    893                 if not isinstance(f,FrameActionFlowable):
    894                     self._curPageFlowableCount += 1

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/reportlab/platypus/frames.py in _add(self, flowable, canv, trySplit)
    215                         fbg.pop()
    216 
--> 217                 flowable.drawOn(canv, self._x + self._leftExtraIndent, y, _sW=aW-w)
    218                 flowable.canv=canv
    219                 if self._debug: logger.debug('drew %s' % flowable.identity())

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/reportlab/platypus/flowables.py in drawOn(self, canvas, x, y, _sW)
    111         canvas.saveState()
    112         canvas.translate(x, y)
--> 113         self._drawOn(canvas)
    114         if hasattr(self, '_showBoundary') and self._showBoundary:
    115             #diagnostic tool support

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/reportlab/platypus/flowables.py in _drawOn(self, canv)
     92         '''ensure canv is set on and then draw'''
     93         self.canv = canv
---> 94         self.draw()#this is the bit you overload
     95         del self.canv
     96 

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/xhtml2pdf/xhtml2pdf_reportlab.py in draw(self)
    679                         style.borderLeftWidth,
    680                         style.borderLeftColor,
--> 681                         x, y, x, y + h)
    682         _drawBorderLine(style.borderRightStyle,
    683                         style.borderRightWidth,

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/xhtml2pdf/xhtml2pdf_reportlab.py in _drawBorderLine(bstyle, width, color, x1, y1, x2, y2)
    672                     # print "Border", bstyle, width, color
    673                 if color is not None:
--> 674                     canvas.setStrokeColor(color)
    675                     canvas.setLineWidth(width)
    676                     canvas.line(x1, y1, x2, y2)

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/reportlab/pdfgen/textobject.py in setStrokeColor(self, aColor, alpha)
    133             self.setStrokeColor(toColor(aColor))
    134         else:
--> 135             raise ValueError('Unknown color %r' % aColor)
    136         if alpha is not None:
    137             self.setStrokeAlpha(alpha)

ValueError: Unknown color False

In [ ]: