Mit Takashi Otaka, "Lernen durch Bewegen! Einführung in die Python Django-Entwicklung" Ich bin ein Anfänger, der angefangen hat, Python und Django zu lernen.
Ich habe ungefähr 4 Monate lang Programmieren mit Ruby / Rails studiert. Als ich meinen Job als Ingenieur wechselte, entschied ich mich für Python und begann mit diesem Buch in einer Hand zu lernen.
Da ich ein Amateur ohne Klasse bin, wäre ich Ihnen sehr dankbar, wenn Sie Ergänzungen und Vorschläge kommentieren könnten.
Ich möchte eine HTML-Seite in PDF konvertieren und anzeigen. Ich möchte auch ein Diagramm mit 'matplotlib' erstellen und es als Bild in PDF einfügen.
HTML↓
from django.shortcuts import render
def html_view(request):
.
.
.
#Packen Sie Variablen in den Kontext und übergeben Sie sie an HTML
context = {
"hoge": hoge,
"fuga": fuga,
}
return render(request, 'hogefuga.html', context)
PDF-Konvertierung ↓
from django.http import HttpResponse
from django.shortcuts import render
from weasyprint import HTML, CSS
from django.template.loader import get_template
def pdf_view(request):
.
.
.
#Geben Sie Vorlagen- und Übergabevariablen an
html_template = get_template('hogefuga.html')
html_str = html_template.render({
"hoge": hoge,
"fuga": fuga,
}, request)
#PDF-Konvertierung
pdf_file = HTML(string=html_str, encoding='utf-8').write_pdf(
stylesheets=[
#WeasyPrint wird nur angewendet, wenn Sie hier eine CSS-Datei angeben.
CSS('./static/css/hogefuga.css'),
],
)
response = HttpResponse(pdf_file, content_type='application/pdf')
response['Content-Disposition'] = 'filename="hogefuga.pdf"'
return response
Die Weisheit unserer Vorfahren ist erstaunlich. Ich habe es bisher geschafft zu kämpfen ...
Lassen Sie uns nun auch ein Diagramm erstellen.
from django.http import HttpRespons
from django.shortcuts import render
from weasyprint import HTML, CSS
from django.template.loader import get_template
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.use('Agg')
def pdf_graph_view(request):
x = [1, 2, 3, 4, 5]
y = [1, 2, 3, 4, 5]
fig = plt.figure(figsize=(4.0, 3.0))
ax = fig.add_subplot(111)
ax.plot(x, y)
plt.savefig('static/img/graph.png', format='png', dpi=200)
.
.
.
Entspricht dem unten stehenden PDF-Code
Übrigens, wenn die folgende Beschreibung nicht angegeben wird, tritt ein Fehler auf. Nur durch diese Beschreibung wurde mir die Zeit genommen ... Klicken Sie hier, um die Weisheit des geliehenen Vorfahren zu erfahren
mpl.use('Agg')
Schreiben Sie nun den Speicherort der Bilddatei in HTML und Sie sind fertig.
hogefuga.html
<img src="{% static 'img/graph.png' %}">
Der Großhändler verkauft es jedoch nicht. Aus irgendeinem Grund wird das Bild nicht als PDF angezeigt. Warum.
pdf_file = HTML(string=html_str, base_url=request.build_absolute_uri(), encoding='utf-8')
ändern. Dann wird das Diagramm angezeigt, aber die Zeichen sind verstümmelt. Es scheint, dass der PC endgültig zerstört wird. Auf Wiedersehen Jobs.
Wenn die Charaktere vorerst verstümmelt sind, Es bleibt nichts anderes übrig, als die Priorität von Schriftarten mit Gewalt zu erhöhen. (Gehirntote Einzelzelle)
hogefuga.css
font-family: 'msmincho'!important;
!! Als ich wichtig hinzufügte, wurden die verstümmelten Charaktere sicher gelöst. ~~ Es ist jedoch keine grundlegende Lösung. Decken Sie die hässlichen Dinge. ~~
Die Vorfahren sind unglaublich. Der Ingenieur ist unglaublich. Sehnsucht nach. Es scheint, dass es einige Zeit dauern wird, um aus den Anfängern herauszukommen. Jeden Tag studieren, nicht wahr? Warum sind die Zeichen verstümmelt (CSS funktioniert nicht)? Ich muss es lösen.
・ Matplotlib Reverse Pull Memo (Frame Edition) ・ Tipps zum Zeichnen mit matplotlib auf der Serverseite ・ Einfache PDF-Ausgabe mit Django2.0 + WeasyPrint ・ PDF-Ausgabe mit Weasyprint ohne Bilder (Django)
Recommended Posts