I could not get images to appear despite trying every solution I could find on google. But this fudge worked for me as the command line version of pisa displays images ok:
from tempfile import mkstemp
# write html to a temporary file
# can used NamedTemporaryFile if using python 2.6+
fid, fname = mkstemp(dir='/tmp')
f = open(fname, 'w+b')
f.write(html)
f.close()
# now create pdf from the html
cmd = 'xhtml2pdf "%s"' % fname
os.system(cmd)
os.unlink(fname)
# get the content of the pdf
filename = fname+'.pdf'
pdf = open(filename, 'r')
content = pdf.read()
pdf.close()
os.unlink(pdf.name)
# return content
response = HttpResponse(content, mimetype='application/pdf')
response['Content-Disposition'] = 'attachment; filename=draft.pdf'
This worked where the images had either a url or the full path name, eg.
<img src="/home/django/project/site_media/css/output/images/logo.jpg" />
<img src="http://www.mysite.com/css/output/images/logo.jpg" />