[Zope] Reportlab issue

Jonathan dev101 at magma.ca
Sun Aug 27 21:35:28 EDT 2006


----- Original Message ----- 
From: "David H" <bluepaul at earthlink.net>
To: "Jonathan" <dev101 at magma.ca>
Cc: "zope user list" <zope at zope.org>
Sent: Sunday, August 27, 2006 9:25 PM
Subject: Re: [Zope] Reportlab issue


> Jonathan wrote:
>
>>
>> ----- Original Message ----- From: "David H" <bluepaul at earthlink.net>
>> To: "zope user list" <zope at zope.org>
>> Sent: Sunday, August 27, 2006 8:54 PM
>> Subject: [Zope] Reportlab issue
>>
>>
>>> Hi Zope List,
>>>
>>> I have an Zope application that uses ReportLab to generate acrobat 
>>> viewable reports. (I already posted this to reportlab list - so far no 
>>> solutions).
>>>
>>> Heres the problem:
>>>
>>> I display an acrobat report (using Firefox or IE 6) and say scroll down 
>>> to page 10.  I then use the <browser> back button to re-enter my Zope 
>>> application.
>>>
>>> Now, even if I click various unrelated pages in the application 
>>> (clearing the request,etc) and then return to the Report (which is 
>>> always freshly generated) it will try to re-display at page 10 - instead 
>>> of top of page.
>>> This occurs even if the data being reported has changed, and this occurs 
>>> even if a different report is generated!
>>>
>>> Note: that I use
>>>
>>> import tempfile and
>>> tmpFile2 = tempfile.mktemp()
>>>
>>> to keep pdfPath's unique ...
>>>
>>> I've tried combinations of "Content-Disposition" params like changing 
>>> filename=, etc.  Nothing is changing this behavior.
>>>
>>> I've tried (a reportlab mailing list suggestion) varying to <forms 
>>> action= like
>>>
>>>   <form name="printform" method="post" 
>>> action="extensions/pyBudgetReports"
>>>         tal:attributes="action python: 
>>> 'extensions/pyBudgetReports/?random=' + context.python.pyTime()">
>>>
>>> No help either.
>>
>>
>>
>> I have never used ReportLab, but is there a possibility that when you go 
>> back to the adobe document it is being served from a cache?  You could 
>> try using html meta tags or response.setHeader (better) to make sure the 
>> document is not being served from the cache.
>>
>> Just a shot in the dark!
>>
>>
>> Jonathan
>>
> Hi Jonathan,
>
> Yes, I did try that, e.g. (report lab + external file stuff)
>   # -----------------------------------------------------------
>   def writeReport(self, RESPONSE):
>   # -----------------------------------------------------------
>      """
>        generates report output
>      """
>         self.save()
>         theFile=open( self.pdfpath,'rb')
>         result = theFile.read()
>         theFile.close()
>         os.remove(self.pdfpath)
>         # the next 3 lines were snarked from google "zope no cache"  I 
> think its a casey duncan recipe ...
>         RESPONSE.setHeader('Pragma', 'no-cache')
>         RESPONSE.setHeader('Cache-Control','no-cache')
>         RESPONSE.setHeader('Expires', 'Sat, 1 Jan 2000 00:00:00 GMT')
>         # the normal fair
>         RESPONSE.setHeader('Content-Type','application/pdf')
> 
> RESPONSE.setHeader('Content-Disposition','inline;filename="reportNz.pdf"')
>         RESPONSE.setHeader('Content-Length',len(result))
>         RESPONSE.write(result) # result is
>
> And it didn't help.

Another shot in the dark... could it be an adobe acrobat issue? By which i 
mean that adobe sees that you are looking at the same document 
(reportNz.pdf) and then tries to reopen the document at the last point you 
were looking.  Try randomizing the file name (add 2 or 3 random digits to 
the filename and see what happens).

Good luck!

Jonathan 



More information about the Zope mailing list