On 24 Oct 2001 at 15:14, Juergen R. Plasser / HEXAGON wrote:
how can I pass a pdf generated by an external method (using Reportlab) back to Zope?
Easy, our external method just gets the output from reportlab in a string like object, then writes the data to RESPONSE. def externalmethod(self,REQUEST,RESPONSE, ... other stuff): <snip> report = BufferedBillingReport(orgid=orgid,startDate=start,endDate=end,showActualAmount=showActualAmount,invoiceNumber=invoiceNumber,trackURL=trackURL,mode=mode,carrier=carrier,vendorinvoice=vendorinvoice) data = report.getFileData() siz = len(data) RESPONSE.setHeader("Content-Type","application/pdf") RESPONSE.setHeader("Content-Length",siz) RESPONSE.write(data) (some stolen code) class buffer: def __init__(self): self._buffer = [] self._size = 0 def write(self,line): self._buffer.append(str(line)) def read(self): return string.join(self._buffer,'') def tell(self): return len(self._buffer) class BufferedBillingReport: """billing report that writes to a buffer and returns the buffer object""" def __init__(self,**kw): """Initialize it""" self.buffer = buffer() self.report = apply(BillingReport,(GetDB(),self.buffer,),kw) self.report.generateReport() def getFileData(self): """Return the contents of the buffer""" return self.buffer.read() class BillingReport(PDFLayouter): """Generate a PDF billing report for specified Org""" <snip> Brad Clements, bkc@murkworks.com (315)268-1000 http://www.murkworks.com (315)268-9812 Fax netmeeting: ils://ils.murkworks.com AOL-IM: BKClements