Używam Django + WeasyPrint do generowania HTML do PDF.
W szablonie HTML mam około 2 plików SVG. Działając na serwerze deweloperskim (lokalnym), renderował obrazy SVG podczas konwersji HTML do PDF. Podczas gdy w TEST Server (który działa przy użyciu NGINX i Docker Container), nie udaje się renderować plików SVG. W WeasePrint wspomniałem mój TESTOWY adres URL (http // test.sampleproject.com: 8000) w base_url. Nie wiem, dlaczego działa na moim serwerze deweloperskim, a nie na serwerze TEST
Mój kod.
html_string = render_to_string('sample.html', {'data': data})
result = HTML(string=html_string, base_url='http//test.sampleproject.com:8000').write_pdf(presentational_hints=True)
response = HttpResponse(result, content_type='application/pdf')
response['Content-Disposition'] = 'inline; filename={}'.format('sample.pdf')
return response
W moim pliku szablonu załadowałem około 10 obrazów. Np .: plik szablonu „sample.html”:
{% load staticfiles %}
<img src="{% static 'svg/Logo1.svg' %}" alt="" />
<img src="{% static 'svg/Logo2.svg' %}" alt="" />
Proszę, pomóż mi renderować pliki SVG w wyjściowym pliku PDF.
1 odpowiedź
W przeszłości wykonałem trochę pracy z Django + Weasyprint i jedyny raz, kiedy miałem problem z renderowaniem obrazów, wynikał z faktu, że Weasyprint uzyskuje dostęp do obrazu w inny sposób.
Okazało się, że muszę dodać statyczny punkt końcowy, aby uzyskać dostęp do plików, ponieważ żąda on statycznych obrazów zewnętrznie do Django. Oto jak możesz umożliwić dostęp do swoich statycznych zasobów z zewnątrz;
https://docs.djangoproject.com/en/3.0/howto/static-files/#s-serving-static-files-during-development
Jak wspomina FlipperPA, upewnij się, że na serwerze są zainstalowane wszystkie biblioteki na poziomie systemu operacyjnego;
https://weasyprint.readthedocs.io/en/latest/install.html
Mam nadzieję że to pomoże :)
Podobne pytania
Nowe pytania
django
Django to framework aplikacji internetowych typu open source po stronie serwera, napisany w języku Python. Został zaprojektowany w celu zmniejszenia wysiłku potrzebnego do tworzenia złożonych witryn i aplikacji internetowych opartych na danych, ze szczególnym naciskiem na mniej kodu, brak nadmiarowości i bardziej jawny niż niejawny.