# -*- coding: utf-8 -*- GlobalPVersion='0.7.1' # ajout de : # - image(fichierimage, zoomx, zoomy) (zoom en % ) # - newparagraf(alignement) alignement = LEFT RIGHT CENTER # voir : pxrtf-test1.py import win32clipboard,types import PyRTF import ponx px=ponx.ponx() def e1252(txt): return txt.encode('cp1252','replace') def e82(txt): return txt.decode('utf-8','replace').encode('cp1252','replace') def e828(txt): return txt.decode('utf-8','replace').encode('cp1252','replace') class rtfdoc(object): def __init__(self): self.doc=PyRTF.Document() self.cline=PyRTF.LINE self.ctab=PyRTF.TAB self.ss=self.doc.StyleSheet self.section=PyRTF.Section() self.doc.Sections.append(self.section) self.p = PyRTF.Paragraph() def appendOLD(self, *args): for item in args: self.p.append( item) def append(self, *args): for item in args: if type(item) in (types.StringType,): self.p.append(e82(item)) elif type(item) in (types.UnicodeType,): self.p.append(e1252(item)) else: self.p.append(item) def append8(self, *args): for item in args: if type(item) in (types.StringType,types.UnicodeType): self.p.append(e82(item)) else: self.p.append(item) def append1252(self, *args): for item in args: if type(item) in (types.StringType,types.UnicodeType): self.p.append(e1252(item)) else: self.p.append(item) def stextappend(self, txt, **args): self.append( PyRTF.TEXT(txt, **args)) def stextappend1252(self, txt, **args): self.append1252( PyRTF.TEXT(txt, **args)) def stextappendp(self, txt='', font="Arial", colour='Black', size=0, bold=False, italic=False, underline=False): args={} if font!=0: args['font']=eval('self.ss.Fonts.'+font) if colour!=0: args['colour']=eval('self.ss.Colours.'+colour) if size!=0: args['size']=size if bold!=0: args['bold']=bold if italic!=0: args['italic']=italic if underline!=0: args['underline']=underline if type(txt) in (types.UnicodeType,): self.append8( PyRTF.TEXT(e1252(txt), **args)) else: self.append8( PyRTF.TEXT(e82(txt), **args)) def stextappendp1252(self, txt='', font="Arial", colour='Black', size=0, bold=False, italic=False, underline=False): args={} if font!=0: args['font']=eval('self.ss.Fonts.'+font) if colour!=0: args['colour']=eval('self.ss.Colours.'+colour) if size!=0: args['size']=size if bold!=0: args['bold']=bold if italic!=0: args['italic']=italic if underline!=0: args['underline']=underline self.append1252( PyRTF.TEXT(e1252(txt), **args)) def image(self,fichier="C:\\vodka.jpg",zoomx=100,zoomy=100): imag = PyRTF.Image(fichier, scale_x=zoomx, scale_y=zoomy) self.p.append(imag) def line(self): self.append(self.cline) def tab(self): self.append(self.ctab) def newparagraf(self,alignement="LEFT"): self.section.append(self.p) ss=self.doc.StyleSheet if alignement.upper()=="LEFT" or alignement.upper()=="GAUCHE": para_props=PyRTF.ParagraphPS(alignment = PyRTF.TabPS.LEFT) elif alignement.upper()=="RIGHT" or alignement.upper()=="DROITE": para_props=PyRTF.ParagraphPS(alignment = PyRTF.TabPS.RIGHT) elif alignement.upper()=="CENTER" or alignement.upper()=="CENTRE": para_props=PyRTF.ParagraphPS(alignment = PyRTF.TabPS.CENTER) self.p = PyRTF.Paragraph( ss.ParagraphStyles.Normal, para_props) def finalize(self): self.section.append(self.p) def fichier(self , fichier='C:\\RTF1.rtf'): PyRTF.Renderer().Write( self.doc, file( fichier, 'w')) def helpcouleurs(self): return("""Black Blue Turquoise Green Pink Red Yellow White BlueDark Teal GreenDark Violet Red Dark YellowDark GreyDark Grey""") def helppolices(self): return("""Arial ArialBlack ArialNarrow BitstreamVeraSansMono BitstreamVeraSans BitstreamVeraSerif BookAntiqua BookmanOldStyle Castellar CenturyGothic ComicSansMS CourierNew FranklinGothicMedium Garamond Georgia Haettenschweiler Impact LucidaConsole LucidaSansUnicode MicrosoftSansSerif MonotypeCorsiva PalatinoLinotype Papyrus Sylfaen Symbol Tahoma TimesNewRoman TrebuchetMS Verdana""") def clip(self): def getclipRTFconst(): win32clipboard.OpenClipboard() try: enum = 0 while 1: enum = win32clipboard.EnumClipboardFormats(enum) if enum==0: break if enum>17: if win32clipboard.GetClipboardFormatName(enum) == 'CF_RTF': return enum finally: win32clipboard.CloseClipboard() win32clipboard.OpenClipboard() format = getclipRTFconst() print "format",str(format) try: win32clipboard.SetClipboardData(format, self.doc) except: print "Pb avec ClipBoard" def start(self , fichier='C:\\RTF1.rtf'): import os os.startfile(fichier) if __name__=='__main__': rtf=rtfdoc() rtf.append(u"Un peu de texte, pour commencer.") rtf.append(u"Az€rty.éè") rtf.line() rtf.append("zzzzzzzzzzzzzz") rtf.line() rtf.append("Deuxième ligne ; ", u"fin de la 2è ligne.") rtf.line() txt=u"AZERTY-1234567890 € " rtf.stextappendp(txt, "Arial", "Red", 32, True, True, True) rtf.line() rtf.stextappendp(txt, 0, "Blue", 0, 0, 0, 0) rtf.line() rtf.finalize() rtf.fichier("C:\\RTF1.rtf") import os,sys os.system("C:\\RTF1.rtf")