Je travaille sur un projet Django où nous générons des fichiers PDF à partir d'un modèle HTML. J'utilise django-pdfkit
pour rendre le PDF.Wkhtmltopdf (pdfkit) - QXcbConnection: Impossible de se connecter pour afficher
Sur mon Ubuntu 16.04
tout fonctionne correctement, mais quand je Déployez le projet sur Digital Ocean serveur Ubuntu 16.04, il génère l'erreur:
IOError at /render/doklad/ wkhtmltopdf exited with non-zero code -6. error:
QXcbConnection: Could not connect to display
J'ai essayé d'installer
sudo apt-get install libxrender1 fontconfig xvfb
Set variables WKHTMLTOPDF_BIN
à chemin correct.
Changé gunicorn
utilisateur à la racine.
pip install wkhtmltopdf
Rien n'a aidé, savez-vous ce que je peux faire pour résoudre ce problème?
EDIT:
J'ai découvert que si je fais cette commande comme une racine, il fonctionne correctement:
wkhtmltopdf http://www.google.com google.pdf
Mais le problème est que si je lance la commande en utilisant django
utilisateur . Il retourne la même chose:
QXcbConnection: Could not connect to display
Aborted (core dumped)
J'ai donc essayé de changer gunicorn.service
si gunicorn est en cours d'exécution sous root
au lieu de django
, mais il n'a pas aidé.
http://mypage/render/doklad/?id=1
renvoie la même erreur.
L'erreur semble être soulevée dans ce dossier:
https://github.com/JazzCore/python-pdfkit/blob/master/pdfkit/pdfkit.py
Et ceci est un retraçage:
Aug 25 04:42:46 homeit-generator-faktur-beta gunicorn[29032]: - - [25/Aug/2017:04:42:46 +0000] "GET/HTTP/1.0" 302 - "-" "Mozilla/5.0"
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: Internal Server Error: /render/doklad/
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: Traceback (most recent call last):
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: File "/home/django/homeit/homeitvenv/local/lib/python2.7/site-packages/django/cor
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: response = get_response(request)
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: File "/home/django/homeit/homeitvenv/local/lib/python2.7/site-packages/django/cor
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: response = self.process_exception_by_middleware(e, request)
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: File "/home/django/homeit/homeitvenv/local/lib/python2.7/site-packages/django/cor
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: response = wrapped_callback(request, *callback_args, **callback_kwargs)
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: File "/home/django/homeit/homeitvenv/local/lib/python2.7/site-packages/django/vie
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: return self.dispatch(request, *args, **kwargs)
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: File "/home/django/homeit/homeitvenv/local/lib/python2.7/site-packages/django/vie
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: return handler(request, *args, **kwargs)
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: File "/home/django/homeit/dashboard/views.py", line 186, in get
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: return super(DokladToPdf, self).get(*args, **kwargs)
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: File "/home/django/homeit/homeitvenv/local/lib/python2.7/site-packages/django_pd
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: content = self.render_pdf(*args, **kwargs)
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: File "/home/django/homeit/homeitvenv/local/lib/python2.7/site-packages/django_pd
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: pdf = pdfkit.from_string(html, False, options, **kwargs)
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: File "/home/django/homeit/homeitvenv/local/lib/python2.7/site-packages/pdfkit/ap
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: return r.to_pdf(output_path)
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: File "/home/django/homeit/homeitvenv/local/lib/python2.7/site-packages/pdfkit/pd
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: raise IOError("wkhtmltopdf exited with non-zero code {0}. error:\n{1}".format(
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: IOError: wkhtmltopdf exited with non-zero code -6. error:
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: QXcbConnection: Could not connect to display
Aug 25 06:05:55 homeit-generator-faktur-beta gunicorn[29032]: - - [25/Aug/2017:06:05:55 +0000] "GET /render/doklad/?id=1 HTTP/1.0" 500 108058 "
Notez que dans l'océan numérique que vous n'avez pas accès à un écran si vous vous connectez via SSH, vous devez utiliser l'option -X, c'est-à-dire: 'ssh -X user @ ip-address' – eyllanesc