Generieren von PDF aus HTML mit Hilfe von Django und Reportlab
Komme ich zurück mit einer neuen Frage, die ich nicht in der Lage bin zu beantworten, nachdem er kratzte mein Kopf den ganzen Tag.
Möchte ich das generieren eines PDF aus einer Webseite durch einen Klick auf "Download PDF" - button. Ich habe versucht, mehrere Module mit Reportlab und XHTML2PDF aber ich bin nicht in der Lage, die zur Erstellung eines pdf noch herunterladen... Hier ist was ich getan habe, mit Reportlab, folgende HTML zu PDF in der Django-Website
-- views.py --
import cStringIO as StringIO
import ho.pisa as pisa
from django.template.loader import get_template
from django.template import Context
from django.http import HttpResponse
from cgi import escape
def index_data(request):
#Code to generate data
return render(request, "analytics/stat.html", locals())
return render_to_pdf(
'analytics/stat.html',
{
'pagesize':'A4',
'mylist': results,
}
)
def render_to_pdf(template_src, context_dict):
template = get_template(template_src)
context = Context(context_dict)
html = template.render(context)
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("ISO-8859-1")), result)
if not pdf.err:
return HttpResponse(result.getvalue(), content_type='application/pdf')
return HttpResponse('We had some errors<pre>%s</pre>' % escape(html))
-- urls.py --
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^$', "analytics.views.main_page", name="main_page"),
url(r'^portail/$', "analytics.views.index_data", name="index"),
url(r'^generate_pdf/$', "analytics.views.GroupPDFGenerate.as_view()", name="generate_pdf")
]
-- Vorlage analytics/stat.html --
{% extends "analytics/layout.html" %}
{% block title %}
Audience
{% endblock title %}
{% block head %}
# Script to generate google charts
{% endblock head %}
{% block body %}
<div class="page-header">
<h1 align="center"> Audience </h1>
</div>
<div class="row">
<div class="col-md-1">
<h3 align="center"><a href="/logout/">Logout</a></h3>
<h3 align="center"><a href="statistiques.pdf">Download pdf</a></h3>
</div>
</div>
{% endblock %}
Außerdem gibt es ein besseres Modul zu verarbeiten ?
InformationsquelleAutor Dr Mouse | 2015-07-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde empfehlen, mit wkhtmltopdf.
Die kurze Antwort? Unter Ubuntu installieren Sie eine binäre:
Auf CentOS /RedHat:
Dann pip install Python-package:
Dann den code:
Für die lange Antwort und die details, ich habe einen blog-post:
http://www.peregrinesalon.com/blog/2015/06/python-3-django-generating-a-pdf-from-markdown-or-html/
Das sollte kümmern sich um die PDF-Erstellung; Sie müssen entscheiden, wie Sie damit umgehen wollen der download. Viel Glück!
Das würde davon abhängen, was Sie tun, aber ja, höchstwahrscheinlich in einer Ansicht.
Ein problem habe ich noch mit wkhtmltopdf ist, dass es erfordert eine externe binäre was problematisch bereitstellen, um Dienste wie Heroku.
InformationsquelleAutor FlipperPA
Wenn Sie sagen, dass Sie Probleme haben, sogar die Erstellung Ihrer PDF -, schlage ich vor, Sie beginnen mit der Suche über das Beispiel, das ich erwähnt in diese Antwort mit Reportlab, xhtml2pdf mit django-easy-pdf-Datei. Holen Sie sich das PDF für die Darstellung im browser zunächst und dann immer ein link zum Download.
InformationsquelleAutor metakermit
InformationsquelleAutor user3070411