Seite 2 von 2
Re: Generating a report: Python to ODT (OOO) or doc
Verfasst: Freitag 21. Mai 2010, 16:46
von rads
Freitag Nachmittag, mein Gehirn schaltet sich ab, oder so..
Aber um nochmal festzuhalten
Ich erstelle mit ODFPY aus einem vorhanden oo-file ein neues und schreibe dort Informationen rein.
Diese Informationen sind teilweise HTML und müssen (mit der vorhanden Formatierung, Einrückungen etc)
umgewandelt werden, um diese mit ODFPY in das File mit Formatierungen abzuspeichern.
Es ist möglich die Umwandlung diese Umwandlung mit lxml bzw. ElementTree zu machen?
D.h. ich kann nach meiner idealistischen Auffwassung vorne html reinstecken und bekomme hinten xml raus?
Externe Formatierungsangaben sind hierfür nicht notwendig?
Ansonsten sollte ich fast über einen anderen WEg generell nachdenken, um aus python einen odf report zu generieren?
schönes Wochenende
Re: Generating a report: Python to ODT (OOO) or doc
Verfasst: Mittwoch 26. Mai 2010, 12:55
von rads
Hallo zusammen,
entschuldigt das ich euch schon wieder in Beschlag nehme.
Themenstellung: (x)html -> odt
Ich Versuche jetzt mittels lxml, was hier ja empfohlen wird, einen html-String mittels eines xslt in ein odt zu transformieren.
Allerdings wird quasi nicht ein einziger Tag erkannt.
Als XSLT verwende ich
http://gitorious.org/xhtml2odt/xhtml2odt/
Aufruf in Python ist dann relativ unspektakulär
Code: Alles auswählen
xslt_doc = etree.parse("xhtml2odt.xsl")
transform = etree.XSLT(xslt_doc)
xhtml = etree.fromstring(xhtml) # must be valid xml
odt = transform(xhtml,debug="1")
return str(odt).replace('<?xml version="1.0" encoding="utf-8"?>','')
Allerdings bekomme ich dank debug-funktion angezeigt, das kein Tag erkannt wurde.
Input
Code: Alles auswählen
"<html><head><title></title></head><body><p><strong>headline</strong></p><p> \
text text text</p><ul><li>punkt 1</li> <li>punkt 2</li> <li> punkt 3</li></ul></body></html>"
Output:
Code: Alles auswählen
<!--Unknown tag : htmlheadline text text textpunkt 1 punkt 2 punkt 3--> <html> <!--Unknown tag : head--> <head> <!--Unknown tag : title--> <title/> </head> <!--Unknown tag : bodyheadline text text textpunkt 1 punkt 2 punkt 3--> <body> <!--Unknown tag : pheadline--> <p> <!--Unknown tag : strongheadline--> <strong>headline</strong> </p> <!--Unknown tag : p text text text--> <p> text text text</p> <!--Unknown tag : ulpunkt 1 punkt 2 punkt 3--> <ul><!--Unknown tag : lipunkt 1--><li>punkt 1</li> <!--Unknown tag : lipunkt 2--><li>punkt 2</li> <!--Unknown tag : li punkt 3--><li> punkt 3</li></ul> </body> </html>
Kennt evtl jemand von euch das Verfahren und könnt mir einen Wink mit dem Zaunpfahl geben, was ich hier falsch mache?
Vielen Dank für eure Hilfe.
Grüße
Re: Generating a report: Python to ODT (OOO) or doc
Verfasst: Donnerstag 27. Mai 2010, 08:18
von rads
Nach dem ich wohl ein paarmal meinen Kopf gegen die Wand geschlagen habe ist mir dann doch noch
der "dumme" Fehler aufgefallen.
Es kann ausschließlich xhtml zu odt gewandelt werden und nicht html zu odt. xHTML unterscheidet sich zu html "natürlich" darin, das eine Angabe wie
xmlns=\"http://www.w3.org/1999/xhtml\" erfolgen muss.
Dann klappt das schon gleich viel besser.
Geht es nur noch darum odfpy klar zu machen , dass der übergebene xhtml String nicht als String sondern eben
als xml in content.xml eingefügt werden soll. Die Api ist zwar nicht gut, aber ich bin mir sicher das auch sowas möglich sein sollte. Ich geb euch bescheid, falls ich es gefunden habe.
Grüße