Utilisation de Takashi Otaka, "Apprendre en bougeant! Introduction au développement Python Django" Je suis un débutant qui a commencé à apprendre python et Django.
J'étudie la programmation depuis environ 4 mois en utilisant ruby / rails, Quand j'ai changé de travail en tant qu'ingénieur, j'ai décidé d'utiliser python, alors j'ai commencé à étudier avec ce livre d'une main.
Puisque je suis un amateur de première classe, je vous serais très reconnaissant si vous pouviez commenter les suppléments et les suggestions.
Je souhaite convertir une page HTML en PDF et l'afficher. Je souhaite également créer un graphique avec «matplotlib» et le mettre au format PDF en tant qu'image.
HTML↓
from django.shortcuts import render
def html_view(request):
.
.
.
#Empaquetez les variables en contexte et passez au HTML
context = {
"hoge": hoge,
"fuga": fuga,
}
return render(request, 'hogefuga.html', context)
Conversion PDF ↓
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):
.
.
.
#Spécifier le modèle et transmettre les variables
html_template = get_template('hogefuga.html')
html_str = html_template.render({
"hoge": hoge,
"fuga": fuga,
}, request)
#Conversion PDF
pdf_file = HTML(string=html_str, encoding='utf-8').write_pdf(
stylesheets=[
#WeasyPrint ne sera appliqué que si vous spécifiez un fichier CSS ici.
CSS('./static/css/hogefuga.css'),
],
)
response = HttpResponse(pdf_file, content_type='application/pdf')
response['Content-Disposition'] = 'filename="hogefuga.pdf"'
return response
La sagesse de nos ancêtres est incroyable. J'ai réussi à lutter jusqu'à présent ...
Maintenant, créons également un graphique.
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)
.
.
.
Identique au code PDF ci-dessous
En passant, si la description suivante n'est pas fournie, une erreur se produira. J'ai été privé de temps par cette simple description ... Cliquez ici pour la sagesse de l'ancêtre emprunté
mpl.use('Agg')
Maintenant, écrivez l'emplacement du fichier image en HTML et vous avez terminé.
hogefuga.html
<img src="{% static 'img/graph.png' %}">
Cependant, le grossiste ne le vend pas en gros. Pour une raison quelconque, l'image ne s'affiche pas au format PDF. Pourquoi.
pdf_file = HTML(string=html_str, base_url=request.build_absolute_uri(), encoding='utf-8')
changer en. Ensuite, le graphique s'affiche, mais les caractères sont déformés. Il semble que le PC sera enfin détruit. au revoir Jobs.
Si les caractères sont déformés pour le moment, Il n'y a pas d'autre choix que d'augmenter la priorité des polices par la force. (Cellule unique morte au cerveau)
hogefuga.css
font-family: 'msmincho'!important;
!! Quand j'ai ajouté important, les caractères déformés ont été résolus en toute sécurité. ~~ Cependant, ce n'est pas une solution fondamentale. Couvrez les choses laides. ~~
Les ancêtres sont incroyables. L'ingénieur est incroyable. Envie de. Il semble qu'il faudra du temps pour sortir des débutants. Etudier tous les jours, n'est-ce pas? Pourquoi les caractères sont-ils déformés (CSS ne fonctionne pas)? Je dois le résoudre.
・ Mémo de tirage inversé Matplotlib (édition cadre) ・ Conseils pour dessiner avec matplotlib côté serveur ・ Sortie PDF facile avec Django2.0 + WeasyPrint ・ La sortie PDF utilisant Weasyprint n'affiche pas les images (Django)
Recommended Posts