예제 #1
0
    def __init__(self, path, maj=False, data=None):
        """initialisation d'un générateur odt pour les tuteurs.
        
        En haut de chaque page A5 en sortie, il créée un tableau

        +----------------+-----------+--------+
        |  Responsable   | Élève     | Classe |
        +================+===========+========+
        |  nom resp      | nom eleve | cl     |
        +----------------+-----------+--------+

        :param str path: chemin vers le fichier des csv tuteurs
        :param boolean maj:  mode màj ou complet
        :param dict data: si maj=True, il doit contenir le dictionnaire des pp
            et tuteurs

        """
        self.nom = basename(path)[:-4] #nom du fichier sans extension
        base = dirname(path)
        #fallacieux en cas de màj.
        # .. todo:: vérifier utilité et effacer
        self.classe = ((self.nom).split('Tuteur_'))[-1] #vraiment lié au nom de fichier
        self.document = OpenDocumentText()
        self.defineStyles()
        # def du header complet
        head_style = getattr(self, "Header", None)
        p = P(stylename=head_style)
        mp = MasterPage(name="Standard", pagelayoutname="Mpm1")
        h = Header()
        h.addElement(p)
        mp.addElement(h)
        self.document.masterstyles.addElement(mp)
        
        #import des textes de la page odt tuteur
        try:
            from yaml import CLoader as Loader
        except ImportError:
            from yaml import Loader
        home = expanduser("~/.refnumtool.d")
        with open(join(home,"text_extract_tuteur.yaml")) as file:
            self.msg = load(file, Loader=Loader)

        if not(maj):
            file = open(path, "r", encoding="utf8")
            dialect=csv.Sniffer().sniff(file.readline())
            file.seek(0) # se remettre en début de fichier
            reader = csv.DictReader(file, dialect=dialect)
        
            for d in reader:
                self.make_parent_id(d)
            file.close()
            self.save(join(base, "ENT_id_Tuteur_"+self.classe+".odt")) 
        else: # cas d'une màj
            #for pp in data.values(): # superflu, génération par classe pour les tuteurs
            if "Tuteur" in data:  # test superflu en principe
                for d in data["Tuteur"]:
                    self.make_parent_id(d)
            self.save(join(base, "ENT_id_Tuteur_"+data["elycee"]+"_"+time.strftime("%d%m%Y")+".odt")) 
예제 #2
0
 def addHeaderFooter(self,header=None,footer=None):
     if header or footer:
         mp = MasterPage(name="Standard", pagelayoutname=self.plheaderstyle)
         self.textdoc.masterstyles.addElement(mp)
         if header:
             h = Header()
             hp = P(text=header)#,stylename=self.headerstyle)
             h.addElement(hp)
             mp.addElement(h)
         if footer:
             f = Footer()
             fp = P(text=footer,stylename=self.footercenterstyle)
             f.addElement(fp)
             mp.addElement(f)
예제 #3
0
 def addImageHeaderFooter(self,header=None,footer=None):
     if header or footer:
         mp = MasterPage(name="Standard", pagelayoutname=self.pliheaderstyle)
         self.textdoc.masterstyles.addElement(mp)
         if header:
             h = Header()
             p = P()
             href = self.textdoc.addPicture(header)
             f = Frame(name="membrete", anchortype="paragraph", width="17cm", height="1.5cm", zindex="0")
             p.addElement(f)
             img = Image(href=href, type="simple", show="embed", actuate="onLoad")
             f.addElement(img)
             h.addElement(p)
             
             mp.addElement(h)
         if footer:
             fo = Footer()
             pn = PageNumber()
             fp = P(text=footer,stylename=self.footercenterstyle)#FIXME: Pagen number shoulb be better
             fp.addElement(pn)
             fo.addElement(fp)
             mp.addElement(fo)
예제 #4
0
# This is free software.  You may redistribute it under the terms
# of the Apache license and the GNU General Public License Version
# 2 or at your option any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
#
# Contributor(s):
#

from odf.opendocument import OpenDocumentText
from odf.style import PageLayout, MasterPage, Header, Footer
from odf.text import P

textdoc = OpenDocumentText()
pl = PageLayout(name="pagelayout")
textdoc.automaticstyles.addElement(pl)
mp = MasterPage(name="Standard", pagelayoutname=pl)
textdoc.masterstyles.addElement(mp)
h = Header()
hp = P(text="header try")
h.addElement(hp)
mp.addElement(h)
textdoc.save("headers.odt")
예제 #5
0
파일: plantilla.py 프로젝트: exodehm/SDMed2
class Plantilla():
    def __init__(self, *datos):
        self.textDoc = OpenDocumentText()
        self.h = Header()
        self.f = Footer()
        self.s = self.textDoc.styles
        self.pl = PageLayout(name="pagelayout")
        #datos para la cabecera
        Autor = datos[0]
        Obra = datos[1]
        #margenes para la pagina (PageLayout)
        layoutPagina = datos[2]
        print("layoutPagina")
        print(layoutPagina)
        MRight = str(layoutPagina[0]) + "cm"
        print("MRight " + MRight)
        MLeft = str(layoutPagina[1]) + "cm"
        MTop = str(layoutPagina[2]) + "cm"
        MBottom = str(layoutPagina[3]) + "cm"
        PaginaInicial = layoutPagina[4]
        #anadimos los datos a la pagina
        self.pl.addElement(
            PageLayoutProperties(margintop=MTop,
                                 marginbottom=MBottom,
                                 marginleft=MRight,
                                 marginright=MLeft))
        self.textDoc.automaticstyles.addElement(self.pl)
        self.mp = MasterPage(name="Standard", pagelayoutname=self.pl)
        self.textDoc.masterstyles.addElement(self.mp)
        #Cabecera estilos
        #Normal
        EstiloCabeceraNormal = "CabeceraNormal"
        estilo = Style(name=EstiloCabeceraNormal,
                       family="text",
                       parentstylename="Standard")
        estilo.addElement(
            TextProperties(fontweight="light",
                           fontfamily="helvetica",
                           fontsize="9pt"))
        self.s.addElement(estilo)
        #Negritas
        EstiloCabeceraNegritas = "CabeceraNegritas"
        estilo = Style(name=EstiloCabeceraNegritas,
                       family="text",
                       parentstylename=EstiloCabeceraNormal)
        estilo.addElement(TextProperties(fontweight="bold"))
        self.s.addElement(estilo)
        #Normal centrado
        EstiloCabeceraNormalCentrado = "CabeceraNormalCentrado"
        estilo = Style(name=EstiloCabeceraNormalCentrado,
                       family="paragraph",
                       parentstylename=EstiloCabeceraNormal)
        estilo.addElement(
            ParagraphProperties(textalign="center",
                                numberlines="true",
                                linenumber="0"))
        self.s.addElement(estilo)
        #linea horizontal fina
        linea_horizontal_fina = Style(name="Lineahorizontalfina",
                                      displayname="Horizontal Line Thin",
                                      family="paragraph")
        linea_horizontal_fina.addElement(ParagraphProperties(margintop="0cm", marginbottom="0cm", marginright="0cm", marginleft="0cm", \
        contextualspacing="false", borderlinewidthbottom="0cm 0.030cm 0.02cm", padding="0cm", borderleft="none", borderright="none", \
        bordertop="none", borderbottom="0.06pt double #3a3b3d", numberlines="false", linenumber="0", joinborder="false"))
        self.s.addElement(linea_horizontal_fina)
        #numeracion
        numeracion = "Numeracion"
        estilo = Style(name=numeracion, family="paragraph")
        #estilo.addElement(PageNumber(selectpage="current"))
        #Cabecera contenidos
        hp = P()
        texto_cabecera = Span(stylename=EstiloCabeceraNegritas,
                              text="Proyecto:\t")
        hp.addElement(texto_cabecera)
        texto_cabecera = Span(stylename=EstiloCabeceraNormal, text=Obra)
        hp.addElement(texto_cabecera)
        self.h.addElement(hp)
        hp = P()
        texto_cabecera = Span(stylename=EstiloCabeceraNegritas,
                              text="Autor:\t")
        hp.addElement(texto_cabecera)
        texto_cabecera = Span(stylename=EstiloCabeceraNormal, text=Autor)
        hp.addElement(texto_cabecera)
        self.h.addElement(hp)
        hp = P(stylename=linea_horizontal_fina)
        self.h.addElement(hp)
        self.mp.addElement(self.h)
        #Pie de pagina
        fp = P(stylename=EstiloCabeceraNormalCentrado)
        pagina = Span(stylename=EstiloCabeceraNormal, text="Página: ")
        fp.addElement(pagina)
        numero = PageNumber(selectpage="auto", text=4)
        fp.addElement(numero)
        self.f.addElement(fp)
        self.mp.addElement(self.f)

    def Documento(self):
        return self.textDoc

    def Estilo(self, nombre):
        return self.estilos[nombre]

    def UpdateEstilos(self, nombre, estilo):
        self.s.addElement(estilo)
        self.estilos.update({nombre: estilo})
예제 #6
0
파일: prueba.py 프로젝트: exodehm/SDMed2
h1style = Style(name="Heading 1", family="paragraph")
h1style.addElement(TextProperties(attributes={'fontsize':"24pt",'fontweight':"bold" }))
s.addElement(h1style)
# An automatic style
boldstyle = Style(name="Bold", family="text")
boldprop = TextProperties(fontweight="bold")
boldstyle.addElement(boldprop)
textdoc.automaticstyles.addElement(boldstyle)

algo = Style(name = "kk")
numeracion = ParagraphProperties(pagenumber = "2")
algo.addElement(numeracion)
textdoc.automaticstyles.addElement(algo)
# Text
h=H(outlinelevel=1, stylename=h1style, text="My first text")
textdoc.text.addElement(h)
p = P(text="Hello world. ")
boldpart = Span(stylename=boldstyle, text="This part is bold. ")
p.addElement(boldpart)
p.addText("This is after bold.")
textdoc.text.addElement(p)
fp = P(stylename=" foot")
pagina = Span(stylename="foot2", text="Página: ")
fp.addElement(pagina)
numero = PageNumber(selectpage="auto")
fp.addElement(numero)
f.addElement(fp)
mp.addElement(f)

textdoc.save("myfirstdocument.odt")