[Zope] Generating and Downloading PDF.

J Cameron Cooper zope-l at jcameroncooper.com
Wed Apr 27 18:18:24 EDT 2005


Fernando Lujan wrote:
> J Cameron Cooper wrote:
> 
>> Fernando Lujan wrote:
>>
>>> J Cameron Cooper wrote:
>>>
>>>> The method that contains your code must have at least the first 
>>>> parameter 'self'::
>>>>
>>>>   def pdfwrite(self):
>>>>     R = self.REQUEST.RESPONSE
>>>>     R.setHeader('content-type', 'application/rtf')
>>>>     R.setHeader('content-length', str(len(data)))
>>>>     R.write(data)
>>>>
>>>> It's a way of getting access to context.
>>>
>>>
>>>
>>> OK, thanks. But how can I pass the self parameter using the dtml-call 
>>> tag? <dtml-call "pdfwrite(self)"> is correct? Because I'm using this 
>>> and works fine.
>>
>>
>>
>> It's Python magic. When you call a function/method on an object, the 
>> object is provided as the first parameter of the method. This is 
>> implicit, I believe, in DTML calls, either expression or name. It's 
>> explicit in TALES and Python::
>>
>>    context/pdfwrite
>>    context.pdfwrite()
> 
> 
> 
> So, I put the code here. Please, what I'm missing? :)

It's easier to guess when you say what the problem is.

I do see some funny indentation down at the bottom.

		--jcc

> def gerarTCE(self, id_tce, cnpj_escola='', matricula=''):
> 
>    from reportlab.lib.colors import Color
>    from reportlab.lib.pagesizes import letter
>    from reportlab.platypus import Paragraph, SimpleDocTemplate, XBox
>        from reportlab.lib.styles import ParagraphStyle
>        from reportlab.pdfgen import canvas
>        import os
>        import urllib
>        from reportlab.lib.units import inch, cm
>        import time
>    import string
> 
>    _linha = cm / 2.25
>    _fname = "tce"+id_tce+".pdf"
>    _c = canvas.Canvas(_fname, pagesize=letter)
>    _width, _height = letter
>    _aW = _width - 2 * cm
>    _aH = 750
> 
>    _c.bookmarkPage("TCE")
>    _c.bookmarkPage("pagina1")
>    _c.addOutlineEntry("TCE", "TCE")
>    _c.addOutlineEntry("Pagina 1", "pagina1", 1)
>    _c.showOutline()
>    _c.setAuthor("NUBE - Núcleo Brasileiro de Estágios")
>    _c.scale(1, 0.9)
> 
> 
>    _c.setFont("Times-Bold", 16)
>    _c.drawCentredString(_width / 2, 735, "TERMO ADITIVO")
>    _c.setFont("Times-Roman", 9)
>    _c.drawCentredString( _width / 2, 735, "(determinações legais 
> estabelecidas no art. 5º e o §1º do art. 6º do Decreto 87.497/82 que 
> regulamentou a Lei 6.494/77)")
>      _c.drawCentredString( _width / 2, 725, "(Atualizada pela Medida 
> Provisória N.º  1952-22 de 30/03/2000)")
>          _c.showPage()
>    _c.save()
>      R = self.REQUEST.RESPONSE
>    R.setHeader('content-type', 'application/pdf')
>     R.Header('content-length', str(len(_fname)))
>    R.write(_fname)



-- 
http://plonebook.packtpub.com/


More information about the Zope mailing list