es klappt auch ganz gut:
die textdatei hat immer mindestens drei zeilen:
Code: Alles auswählen
Datum und Uhrzeit: 02/12/2006 11:01 AM
Sie haben eine Nachricht empfangen von ABSENDERNAME
DiesIstDerGesendeteText
Code: Alles auswählen
#!/usr/bin/env python
from PyRTF import *
import codecs
import os
## wandlung von 16 bit auf 8 bit #
f_input = codecs.open("test_data.txt", mode='r', encoding="utf-16")
f_output = codecs.open("ziel.txt", mode='w', encoding="iso-8859-1")
for line in f_input:
f_output.write(line)
f_input.close()
f_output.close()
## wandlung in rtf ###############
def MakeExample4(datei) :
doc = Document()
ss = doc.StyleSheet
section = Section()
doc.Sections.append( section )
######## datum = datei[0][19:29]
for s in dir(ss):
print s
erstezeile = datei.readline().rstrip()
datum = erstezeile[19:29]
datei.seek(0)
p = Paragraph(ss.ParagraphStyles.Normal)
pps = ParagraphPS()
pps.SetSpaceBetweenLines(0)
p.Properties = pps
for line in datei.readlines():
if line.startswith("Datum und Uhrzeit: "): # 19 zeichen lang
# datum/zeit
datum_neu = line[19:29]
if datum_neu <> datum:
## p = Paragraph(ss.ParagraphStyles.Normal)
## pps = ParagraphPS()
## pps.SetSpaceBetweenLines(0)
## p.Properties = pps
p.append(TEXT(datum + " tagwechsel " + 12*"*",
colour = ss.Colours.Yellow,
size = 16,
bold = True))
## section.append(p)
datum = datum_neu
zeit = line[30:-1]
elif line.startswith("Sie haben eine Nachricht gesendet an "): # 38 zeichen lang
# empfaenger
sender = "zackIV"
farbe = ss.Colours.Blue
## p = Paragraph(ss.ParagraphStyles.Normal)
## pps = ParagraphPS()
## pps.SetSpaceBetweenLines(0)
## p.Properties = pps
p.append(TEXT(sender+' ('+zeit+'):',
colour = farbe,
size = 22,
bold = True))
## section.append(p)
elif line.startswith("Sie haben eine Nachricht empfangen von "): # 40 zeichen lang
# absender
sender = line[40:-1]
farbe = ss.Colours.Red
## p = Paragraph(ss.ParagraphStyles.Normal)
## pps = ParagraphPS()
## pps.SetSpaceBetweenLines(0)
## p.Properties = pps
p.append(TEXT(sender+' ('+zeit+'):',
colour = farbe,
size = 22,
bold = True))
## section.append(p)
else: # normaler text
farbe = ss.Colours.Black
## p = Paragraph(ss.ParagraphStyles.Normal)
## pps = ParagraphPS()
## pps.SetSpaceBetweenLines()
## p.Properties = pps
p.append(TEXT(line[:],
colour = farbe,
size = 22,
bold = False))
## section.append(p)
datei.close()
os.remove(r"ziel.txt")
section.append(p)
return doc
if __name__ == '__main__' :
DR = Renderer()
datei = file("ziel.txt", "r")
doc4 = MakeExample4(datei)
DR.Write( doc4, file("icq_test.rtf", "w") )
print "Finished"
das ganze ist eigentlich für ICQ, wobei man die nachrichten/den verlauf als txt speichern kann und dann sie selbst - eigenhändig in rtf-s verwandelt...
wie man gut erkennen kann, habe ich manche sachen herauskommentiert:
wenn ich jedes mal einen Paragraph()-en erzeuge, ist ein merkwürdiger zeilenabstand (aber wenn man in den text klickt, ist "normaler zeilenabstand" angegeben, also liegt es irgendwo anders..)
wenn ich es jedoch so mache, wie hier im codebeispiel, so steht alles hintereinander, obwohl ich bei der dateiiteration schon datei.readlines() verwendet habe, wobei die "\n"-newlinezeichen dranhängen müssten..
diese funktionieren aber nicht wirklich...
kann mir jemand sagen, wie ich dort einen "normalaussehenden" zeilenumbruch hinbekomme?
danke im voraus
liebe grüße
hannes