strlist Fehler beim nutzen von weasyprint

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
beli3ver
User
Beiträge: 27
Registriert: Mittwoch 2. März 2016, 05:33
Kontaktdaten:

Hallo,

seit kurzen wollte ich an meinem Programm weiter arbeiten um aus yaml und HTML Dateien eine PDF Rechnung zu erstellen, leider laufe ich aktuell immer in einen Fehler den ich mit nicht erklären kann, geschweige den wüsste wie ich den beheben soll.
Ich habe folgenden Code (Ausschnitt)

Code: Alles auswählen

    with codecs.open(index_html, encoding="utf-8") as index_file:
        html_text = index_file.read()
    
        compiler = Compiler()
        template = compiler.compile(html_text)

        html_text = template(document_data)

        pdf = HTML(string=html_text)
        pdf.write_pdf('test.pdf')
Dafür importiere ich die folgenden LIBS

Code: Alles auswählen

    import sys
    import codecs
    import yaml
    import locale
    import argparse
    
    from pybars import Compiler
    from weasyprint import HTML
Wenn ich dass Programm jetzt ausführe, erhalte ich folgenden Fehler:
Traceback (most recent call last):
File "./buildpdf.py", line 71, in <module>
pdf = HTML(string=html_text)
File "/usr/local/lib/python2.7/dist-packages/weasyprint/__init__.py", line 95, in __init__
namespaceHTMLElements=False)
File "/usr/lib/python2.7/dist-packages/html5lib/html5parser.py", line 35, in parse
return p.parse(doc, **kwargs)
File "/usr/lib/python2.7/dist-packages/html5lib/html5parser.py", line 235, in parse
self._parse(stream, False, None, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/html5lib/html5parser.py", line 85, in _parse
self.tokenizer = _tokenizer.HTMLTokenizer(stream, parser=self, **kwargs)
File "/usr/lib/python2.7/dist-packages/html5lib/_tokenizer.py", line 36, in __init__
self.stream = HTMLInputStream(stream, **kwargs)
File "/usr/lib/python2.7/dist-packages/html5lib/_inputstream.py", line 151, in HTMLInputStream
return HTMLBinaryInputStream(source, **kwargs)
File "/usr/lib/python2.7/dist-packages/html5lib/_inputstream.py", line 410, in __init__
self.rawStream = self.openStream(source)
File "/usr/lib/python2.7/dist-packages/html5lib/_inputstream.py", line 448, in openStream
stream = BytesIO(source)
TypeError: 'strlist' does not have the buffer interface
Wenn ich den weasyprint Teil ausklammere, verschwinden die Fehler, aber es wird natürlich auch kein PDF generiert. Leider bin ich völlig ratlos.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@beli3ver: Du hast eine Liste mit Strings, statt eines Strings

Code: Alles auswählen

pdf = HTML(string=''.join(html_text))
Antworten