Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Cherrypy et PDF

4 réponses
Avatar
Philippe Makowski
Bonjour je génère des pdf avec reportlab
j'aimerai faire une interface web avec Cherrypy pour que l'utilisateur lance la génération du pdf et ensuite l'ouvre dans son navigateur
mais en utilisant ça :

return serve_file(filepath, "application/x-download", "attachment")

acrobat rale en me disant que le fichier est mal encodé

y aurait il une solution ou bien passer par un stream ?

j'ai essayé ça :

def generatePdfStream(self, fichierpdf):
pdfFile = open(fichierpdf, 'rb')
pdfStream = pdfFile.read()
pdfFile.close()
# Deleting the pdf file, our data is already stored
# in the 'pdfStream' variable
os.remove(fichierpdf)
return pdfStream

def getpdf(self,fichierpdf):
cherrypy.response.headers['content-type'] = "application/pdf"
return self.generatePdfStream(fichierpdf)
getpdf.exposed = True

mais dans ce cas, le navigateur web reste bloqué, rien n'est affiché

--
Philippe Makowski
Support et conseil pour Firebird : http://www.espelida.com
Firebird serveur SQL open-source en français http://firebird-fr.eu.org
Ma clé PGP : http://makowski.eu.org/pgpkey.html

4 réponses

Avatar
Olivier Ravard
Philippe Makowski wrote:
Bonjour je génère des pdf avec reportlab
j'aimerai faire une interface web avec Cherrypy pour que l'utilisateur lance la génération du pdf et ensuite l'ouvre dans son navigateur
mais en utilisant ça :

return serve_file(filepath, "application/x-download", "attachment")

Bonjour,


Moi, je fais juste :

return serve_file(filepath)

et ça marche. Je pense que le problème viens d'ailleurs.
Le fichier peut-il être ouvert après sa génération avec reportlab ?

Avatar
Philippe Makowski
Philippe Makowski wrote:
Bonjour je génère des pdf avec reportlab
j'aimerai faire une interface web avec Cherrypy pour que l'utilisateur
lance la génération du pdf et ensuite l'ouvre dans son navigateur
mais en utilisant ça :

return serve_file(filepath, "application/x-download", "attachment")

Bonjour,


Moi, je fais juste :

return serve_file(filepath)

et ça marche. Je pense que le problème viens d'ailleurs.
si je fait ça, rien ne s'affiche dans la fenetre


Le fichier peut-il être ouvert après sa génération avec reportlab ?


oui sans aucun probleme, le fichier pdf est bon

--
Philippe Makowski
Support et conseil pour Firebird : http://www.espelida.com
Firebird serveur SQL open-source en français http://firebird-fr.eu.org
Ma clé PGP : http://makowski.eu.org/pgpkey.html


Avatar
Franssoa
Bonjour je génère des pdf avec reportlab
j'ai essayé ça :

def generatePdfStream(self, fichierpdf):
(...)


Personnellement, j'utilise la même méthode et ça marche. J'ai juste le
"content-lenght" en plus

stream = open(fichier,'rb').read()
cherrypy.response.headers['Content-Type'] = "application/pdf"
cherrypy.response.headers['Content-Length'] = len(stream)
cherrypy.response.headers['Expires'] = 0
os.remove(fichier)
return stream


Franssoa

Avatar
Philippe Makowski
Bonjour je génère des pdf avec reportlab
j'ai essayé ça :

def generatePdfStream(self, fichierpdf):
(...)


Personnellement, j'utilise la même méthode et ça marche. J'ai juste le
"content-lenght" en plus

stream = open(fichier,'rb').read()
cherrypy.response.headers['Content-Type'] = "application/pdf"
cherrypy.response.headers['Content-Length'] = len(stream)
cherrypy.response.headers['Expires'] = 0
os.remove(fichier)
return stream


Franssoa


c'est bon merci
j'avais oublié un return devant l'appel de generatePdfStream
pardon

--
Philippe Makowski
Support et conseil pour Firebird : http://www.espelida.com
Firebird serveur SQL open-source en français http://firebird-fr.eu.org
Ma clé PGP : http://makowski.eu.org/pgpkey.html