Desenhe imagens com tela e use SimpleDocTemplate

Estou escrevendo pdfs com reportlab dentro de uma visão django, eles são muito simples, o cabeçalho, o conteúdo e o rodap

Estou usando o SimpleDocTemplate que se encaixa muito bem, para desenhar tabelas no conteúdo, o rodapé e o cabeçalho são drwan usando:

build([data], onFirstPage=drawPageFrame, onLaterPages=drawPageFrame).

Minha pergunta é: como posso desenhar uma imagem como usar o Canvas.drawImage (...)? Preciso de uma imagem "flutuante" ... posicionada sobre o texto onde quero e, com o SimpleDocTemplate, não tenho um objeto Canvas para fazer iss

Pesquisa Encontrei:

O material de layout do ornitorrinco usa fluidos. Os empacotadores normalmente configuram o atributo canv em cada fluxo quando ele está sendo empacotado, dividido ou desenhado, ou seja, ao redor dos métodos de empacotamento, divisão e desenho. Dentro desses métodos, você tem acesso à tela usando o atributo canv de sel

Como isso pode ser usado?

Ummmm, mais coisas para testar:

flowables.Macro
flowables.CallerMacro
# -*- coding: utf-8 -*-
from reportlab.lib.pagesizes import A4, landscape, portrait
from reportlab.lib.styles import getSampleStyleSheet
from reportlab.platypus import Table, Flowable, SimpleDocTemplate, Paragraph, Spacer, Image
from reportlab.lib import randomtext
from reportlab import platypus

import os,random

styles = getSampleStyleSheet()
path = os.path.realpath(os.path.dirname(__file__))

def drawPageFrame(canvas, doc):
    canvas.saveState()
    canvas.drawImage(path+"/ujiPDF.jpg",50,50,57,57)
    canvas.restoreState()

doc = SimpleDocTemplate("salida.pdf",pagesize=A4)

elementos = []

com = 'canvas.drawImage("'+path+'/ujiPDF.jpg",100,100,57,57)'
print com
elementos.append(platypus.flowables.Macro('canvas.saveState()'))
print platypus.flowables.Macro(com)
elementos.append(platypus.flowables.Macro(com))
elementos.append(platypus.flowables.Macro('canvas.restoreState()'))

para = Paragraph(randomtext.randomText(randomtext.PYTHON,20), styles["Normal"])
elementos.append(para)

doc.build(elementos,onFirstPage=drawPageFrame, onLaterPages=drawPageFrame)

sta é a abordagem Macro ... saída limpa, mas sem a segunda image

questionAnswers(3)

yourAnswerToTheQuestion