Für meine Django-Site suche ich nach einer einfachen Lösung, um dynamische HTML-Seiten in PDF zu konvertieren.
Die Seiten enthalten HTML und Diagramme aus der Google-Visualisierungs-API (die auf Javascript basiert, diese Grafiken jedoch ein Muss ist).
Antworten:
Probieren Sie die Lösung von Reportlab aus .
Laden Sie es herunter und installieren Sie es wie gewohnt mit python setup.py install
Sie müssen auch die folgenden Module installieren: xhtml2pdf, html5lib, pypdf mit easy_install.
Hier ist ein Anwendungsbeispiel:
Definieren Sie zuerst diese Funktion:
Dann können Sie es so verwenden:
Die Vorlage:
Ich hoffe es hilft.
quelle
cStringIO.StringIO
in als anstelle vonio.StringIO
definieren .result
result = io.BytesIO()
result = StringIO
https://github.com/nigma/django-easy-pdf
Vorlage:
Aussicht:
Wenn Sie django-easy-pdf für Python 3 verwenden möchten, überprüfen Sie die hier vorgeschlagene Lösung .
quelle
Ich habe das gerade für CBV ausgepeitscht. Wird nicht in der Produktion verwendet, generiert aber ein PDF für mich. Benötigt wahrscheinlich Arbeit für die Fehlerberichterstattung, macht aber den Trick bis jetzt.
Verwendet wie:
quelle
html.encode("ISO-8859-1")
durchhtml.decode("utf-8")
content_type = "application/pdf"
Versuchen Sie wkhtmltopdf mit einem der folgenden Wrapper
django-wkhtmltopdf oder python-pdfkit
Dies hat bei mir hervorragend funktioniert, unterstützt Javascript und CSS oder alles, was ein Webkit-Browser unterstützt.
Weitere Informationen finden Sie in diesem Blogbeitrag
quelle
Nachdem ich versucht hatte, dies zu viele Stunden lang zum Laufen zu bringen, fand ich schließlich Folgendes: https://github.com/vierno/django-xhtml2pdf
Es ist eine Abzweigung von https://github.com/chrisglass/django-xhtml2pdf , die ein Mixin für eine generische klassenbasierte Ansicht bietet. Ich habe es so benutzt:
Verwenden Sie beim Ausfüllen der Vorlagenfelder den in Ihrer Ansicht definierten Modellnamen in Kleinbuchstaben. Da es sich um ein GCBV handelt, können Sie es in Ihrer urls.py einfach als ".as_view" bezeichnen:
quelle
Mit dem iReport-Editor können Sie das Layout definieren und den Bericht auf dem Jasper Reports-Server veröffentlichen. Nach der Veröffentlichung können Sie die restliche API aufrufen, um die Ergebnisse zu erhalten.
Hier ist der Test der Funktionalität:
Und hier ist ein Beispiel für die Aufrufimplementierung:
quelle
Ich erhalte den Code zum Generieren des PDF aus einer HTML-Vorlage:
quelle
Wenn Sie Kontextdaten zusammen mit CSS und JS in Ihrer HTML-Vorlage haben. Dann haben Sie eine gute Möglichkeit, pdfjs zu verwenden .
In Ihrem Code können Sie so verwenden.
In Ihrem HTML können Sie extranale oder interne CSS und JS verknüpfen, um die beste PDF-Qualität zu erzielen.
quelle