W przypadku mojej witryny opartej na django szukam prostego rozwiązania do konwersji dynamicznych stron HTML do formatu PDF.
Strony zawierają kod HTML i wykresy z interfejsu API wizualizacji Google (który jest oparty na języku JavaScript, ale uwzględnienie tych wykresów jest koniecznością).
Odpowiedzi:
Wypróbuj rozwiązanie z Reportlab .
Pobierz go i zainstaluj jak zwykle za pomocą pythona setup.py install
Będziesz także musiał zainstalować następujące moduły: xhtml2pdf, html5lib, pypdf z easy_install.
Oto przykład użycia:
Najpierw zdefiniuj tę funkcję:
Następnie możesz go użyć w ten sposób:
Szablon:
Mam nadzieję, że to pomoże.
źródło
cStringIO.StringIO
doio.StringIO
, musimy zdefiniowaćresult
asresult = io.BytesIO()
zamiastresult = StringIO
.https://github.com/nigma/django-easy-pdf
Szablon:
Widok:
Jeśli chcesz używać django-easy-pdf w Pythonie 3, sprawdź sugerowane tutaj rozwiązanie .
źródło
Właśnie podniosłem to dla CBV. Nie używany w produkcji, ale generuje dla mnie plik PDF. Prawdopodobnie wymaga pracy po stronie raportowania błędów, ale jak dotąd działa.
Używane jak:
źródło
html.encode("ISO-8859-1")
przezhtml.decode("utf-8")
content_type = "application/pdf"
Wypróbuj wkhtmltopdf z jedną z następujących opakowań
django-wkhtmltopdf lub python-pdfkit
To działało świetnie dla mnie, obsługuje javascript i css lub cokolwiek w tym zakresie, które obsługuje przeglądarka webkit.
Aby uzyskać bardziej szczegółowy samouczek, zobacz ten wpis na blogu
źródło
Po zbyt wielu godzinach próbowania, aby to działało, w końcu znalazłem to: https://github.com/vierno/django-xhtml2pdf
Jest to rozwidlenie https://github.com/chrisglass/django-xhtml2pdf, które zapewnia połączenie dla ogólnego widoku opartego na klasach. Użyłem tego w ten sposób:
Podczas wypełniania pól szablonu użyj nazwy modelu zdefiniowanej w widoku, używając wszystkich małych liter. Ponieważ jest to GCBV, możesz po prostu nazwać go „.as_view” w swoim urls.py:
źródło
Możesz użyć edytora iReport do zdefiniowania układu i opublikowania raportu na serwerze raportów Jasper. Po opublikowaniu możesz wywołać pozostałe API, aby uzyskać wyniki.
Oto test funkcjonalności:
A oto przykład implementacji wywołania:
źródło
Otrzymuję kod do wygenerowania pliku PDF z szablonu html:
źródło
Jeśli masz dane kontekstowe wraz z css i js w swoim szablonie HTML. Niż masz dobrą opcję korzystania z pdfjs .
W swoim kodzie możesz użyć w ten sposób.
W swoim kodzie HTML możesz połączyć zewnętrzne lub wewnętrzne css i js, wygeneruje to najlepszą jakość PDF.
źródło