Exemple #1
0
    def dumps(self):
        # Clear the old data
        self.clear()
        assessment = self.assessment

        if hasattr(self.assessment, 'course'):
            course = self.assessment.course
        else:
            course = None

        if course:
            # Create left header
            with self.create(Head('L')):
                self.append(course.name)
                self.append(LineBreak())
                self.append(SmallText(course.kind))
                self.append(self.padding)
        # Create center header
        with self.create(Head('C')):
            self.append(NoEscape(r'\ifbool{instructorKey}{'))
            self.append(SmallText(bold('FOR INSTRUCTORS ONLY')))
            self.append(LineBreak())
            self.append(SmallText(bold(f'(Max. of {assessment.maxpoints} points)')))
            self.append(NoEscape(r'}{}'))
            self.append(self.padding)
        # Create right header
        with self.create(Head('R')):
            self.append(f'{assessment.kind} {assessment.number}.{assessment.version} - {assessment.fullpoints} Points')
            self.append(LineBreak())
            self.append(SmallText(f'Assessing Period: {assessment.period}'))
            self.append(self.padding)
        if course:
            # Create left footer
            with self.create(Foot('L')):
                self.append(course.term)
        # Create center footer
        with self.create(Foot('C')):
            now = datetime.now().strftime('%Y%m%d%H%M')
            self.append(FootnoteText(now))
        # Create right footer
        with self.create(Foot('R')):
            self.append(simple_page_number())

        return super().dumps()
Exemple #2
0
def format_recipe(recipe, display_opts):
    """ Return the recipe in a paragraph in a samepage
    """
    recipe_page = SamepageEnvironment()
    name_line = LargeText(recipe.name)

    if display_opts.origin and 'schubar original' in recipe.origin.lower():
        name_line.append(superscript('*'))
        #name_line.append(superscript(NoEscape('\dag')))

    if display_opts.prices and recipe.max_cost:
        price = util.calculate_price(recipe.max_cost, display_opts.markup)
        name_line.append(DotFill())
        name_line.append(superscript('$'))
        name_line.append(price)
    name_line.append('\n')
    recipe_page.append(name_line)

    if display_opts.prep_line:
        recipe_page.append(
            FootnoteText(recipe.prep_line(extended=True, caps=False) + '\n'))

    if display_opts.info and recipe.info:
        recipe_page.append(SmallText(italic(recipe.info + '\n')))
    for item in recipe.ingredients:
        recipe_page.append(item.str() + '\n')

    if display_opts.variants:
        for variant in recipe.variants:
            recipe_page.append(HorizontalSpace('8pt'))
            recipe_page.append(SmallText(italic(variant + '\n')))

    if display_opts.examples and recipe.examples:  # and recipe.name != 'The Cocktail':
        for e in recipe.examples:
            recipe_page.append(
                FootnoteText(
                    "${cost:.2f} | {abv:.2f}% | {std_drinks:.2f} | {kinds}\n".
                    format(**e._asdict())))

    recipe_page.append(Command('par'))
    return recipe_page
Exemple #3
0
def test_basic():
    # Tests the basic commands and environments
    # Basic commands
    new_page = NewPage()
    repr(new_page)

    new_line = NewLine()
    repr(new_line)

    line_break = LineBreak()
    repr(line_break)

    h_fill = HFill()
    repr(h_fill)

    # Basic environments
    huge = HugeText("Huge")
    huge.append("Huge 2")
    repr(huge)

    large = LargeText("Large")
    large.append("Large 2")
    repr(large)

    medium = MediumText("Medium")
    medium.append("Medium 2")
    repr(medium)

    small = SmallText("Small")
    small.append("Small 2")
    repr(small)

    footnote = FootnoteText("Footnote")
    footnote.append("Footnote 2")
    repr(footnote)

    text_color = TextColor("green", "GreenText")
    text_color.append("More Green Text")
    repr(text_color)
Exemple #4
0
def test_basic():
    # Tests the basic commands and environments
    # Basic commands
    new_page = NewPage()
    repr(new_page)

    new_line = NewLine()
    repr(new_line)

    line_break = LineBreak()
    repr(line_break)

    h_fill = HFill()
    repr(h_fill)

    # Basic environments
    huge = HugeText("Huge")
    huge.append("Huge 2")
    repr(huge)

    large = LargeText("Large")
    large.append("Large 2")
    repr(large)

    medium = MediumText("Medium")
    medium.append("Medium 2")
    repr(medium)

    small = SmallText("Small")
    small.append("Small 2")
    repr(small)

    footnote = FootnoteText("Footnote")
    footnote.append("Footnote 2")
    repr(footnote)

    text_color = TextColor("green", "GreenText")
    text_color.append("More Green Text")
    repr(text_color)
    def __init__(self, message=r'Please continue on the next page.'):
        r"""
        Parameters
        ----------
        message: str
            The message to display before starting a new page.
        """

        self.message = message
        super().__init__(data=[
            #NewLine(),
            SmallText(bold(self.message)),
            NewPage(),
        ])
def add_title_page(doc: Document, camp: Camp):
    # packages used for this page
    doc.packages.append(Package('datetime'))
    doc.packages.append(Package('graphicx'))
    doc.packages.append(Package('xcolor'))

    # create content
    doc.preamble.append(
        Command(
            'title',
            NoEscape(
                r'\Huge \textbf{' + camp.get_camp_name() +
                r'} \\ \vspace{1.65cm} \Large \textbf{Handbuch Lagerküche}'
                r'\\ \vspace{8cm}')))

    doc.preamble.append(
        Command('author',
                NoEscape(r'\normalsize ' + camp.get_full_author_name())))
    doc.preamble.append(
        Command('date', NoEscape(r'\normalsize Version vom \today')))

    # no page numbers
    doc.append(Command('clearpage'))
    doc.append(Command('maketitle'))  # add title
    doc.append(Command('thispagestyle', arguments='empty'))

    doc.append(Command('vfill'))

    doc.append(Command('noindent'))
    doc.append(NoEscape('{'))
    doc.append(Command('color', arguments='gray'))
    doc.append(Subsubsection('Haftungsausschluss', numbering=False))
    doc.append(
        SmallText(
            'Dieses Dokument wurde automatisch erstellt. Obwohl uns Qualität und Richtigkeit sehr am '
            'Herzen liegt, können wir Fehler nie ganz ausschliessen. eMeal – Menüplanung haftet nicht '
            'für Schäden, die im Zusammenhang mit diesem Export entstanden sind. Bitte kontrolliere '
            'diesen Export vor dem Lager auf Vollständigkeit.'))
    doc.append(NoEscape('}'))
Exemple #7
0
    doc.append(HorizontalSpace("250pt"))

    with doc.create(Tabular(table_spec="|l r|", row_height=1.8)) as data_table:
        data_table.add_hline()
        data_table.add_row(
            [MediumText(bold(lorem(3))),
             MediumText(bold("XXXXXXXXXXXXXX"))])
        data_table.add_hline()

    doc.append(HorizontalSpace("160pt"))

    with doc.create(Tabular(table_spec="|c|", row_height=1.8)) as date_table:
        date_table.add_hline()
        date_table.add_row((FootnoteText(lorem(1)), ))
        date_table.add_hline()
        date_table.add_row((SmallText(bold(str(datetime.now())[0:10])), ))
        date_table.add_hline()

    doc.append(LineBreak())
    doc.append(LineBreak())
    doc.append(LineBreak())

    # Name - Register - Period

    with doc.create(Tabular(table_spec="|m{100cm}|")) as name_table:
        name_table.add_hline()
        name_table.add_row((MultiColumn(1,
                                        align="|c|",
                                        data=FootnoteText(lorem(8))), ))
        name_table.add_hline()
        name_table.add_row((MultiColumn(1,
Exemple #8
0
def seismicity(doc,
               year1,
               month1,
               t,
               lc,
               reg,
               pac,
               car,
               volc,
               imp,
               sub_list=[["1"], ["1"], ["0"], ["0"]]):
    """Add seismicity section to the document.

    :param doc: the document
    :type doc: :class:`pylatex.document.Document` instance
    :param fun_map: name of the functioning map
    :type doc: :string:
    """
    print sub_list
    doc.append(NewPage())
    sec_sismicicdad = open(ruta + "bulletfiles/seccion_sismicidad_mes.txt",
                           "r").read()

    #doc.append(NoEscape(r"\chapterimage{"+ruta+"bulletfiles/sgc_blanco2.jpg}"))
    doc.append(
        NoEscape(r"\chapter{SISMICIDAD \textcolor{sgc2}{DE %s} \\DE %s}" %
                 (month1.upper(), year1)))

    # agregando texto desde archivo
    doc.append(NoEscape(r"\noindent "))
    doc.append(sec_sismicicdad % (month1, t, lc, reg, pac, car, volc, imp))
    with doc.create(Enumerate()) as enum:

        enum.add_item("El sismo tiene una profundidad menor a 120 km y \
	  su magnitud (ML) es mayor o igual a 4.0 en la escala de \
	  Richter o su magnitud de momento (Mw) es mayor o igual 4.0.")

        enum.add_item("El sismo tiene una profundidad mayor o igual \
	  a 120 km y su magnitud (ML) es mayor o igual a 5.0 en la \
	  escala de Richter o su magnitud de momento (Mw) es mayor o igual 5.0.")
        enum.add_item("El sismo es reportado como sentido cerca al epicentro, \
	  sin importar su magnitud o su profundidad.")

    with doc.create(Center()):
        doc.append(NoEscape(r"\sffamily\textcolor{ocre}{Convenciones}"))
    with doc.create(Tabular('ll')) as table:
        table.add_row((bold('FECHA'), "Año Mes Día"))
        table.add_row((bold('H:M:S'),
                       SmallText('Hora:Minuto:Segundo. Hora del \
	  evento en tiempo universal (UT).')))
        table.add_row((
            bold(''),
            SmallText(
                "Para la hora local en el territorio Colombiano se restan 5 horas."
            )))
        table.add_row((bold(''), SmallText("a la hora UT.")))
        table.add_row((bold('LAT'), SmallText("Latitud en grados.")))
        table.add_row((bold('LON'), SmallText("Longitud en grados.")))
        table.add_row((bold('Z'), SmallText("Profundidad en kilometros.")))
        table.add_row((bold('M'), "Magnitud del evento."))
        table.add_row((bold('UBICACION'), SmallText("Epicentro del evento.")))

    # =======================================================================
    #  tabla de sismicidad destacada
    # =======================================================================
    if sub_list[0][0] == "1":
        # tabla con eventos destacados
        doc.append(NoEscape(r"\newpage"))
        doc.append(
            NoEscape(r"\section{Tabla de sismicidad destacada %s de %s}" %
                     (month1, year1)))
        doc.append(NoEscape(r"\vspace{0.8cm}"))

        data_list = sc_table("sc_destacados.out")

        with doc.create(
                LongTabu(
                    "X[1.3,c] X[1.2,c] X[c] X[1.1,c] X[0.4,c] X[0.4,c] X[4,l]",
                    row_height=1)) as data_table:
            data_table.add_row(
                NoEscape(r"\scriptsize\sffamily\bfseries FECHA"),
                NoEscape(r"\scriptsize\sffamily\bfseries H:M:S"),
                NoEscape(r"\scriptsize\sffamily\bfseries LAT"),
                NoEscape(r"\scriptsize\sffamily\bfseries LON"),
                NoEscape(r"\scriptsize\sffamily\bfseries Z"),
                NoEscape(r"\scriptsize\sffamily\bfseries M"),
                NoEscape(r"\scriptsize\sffamily\bfseries UBICACION"),
                color="sgc2")
            #data_table.add_empty_row()
            data_table.end_table_header()

            # para cada elemento en la lista list_to_table (lista con info de destacados)
            for i in range(len(data_list)):
                if (i % 2) == 0:
                    data_table.add_row(Command("tiny", data_list[i][0]),
                                       Command("tiny", data_list[i][1]),
                                       Command("tiny", data_list[i][2]),
                                       Command("tiny", data_list[i][3]),
                                       Command("tiny", data_list[i][4]),
                                       Command("tiny", data_list[i][5]),
                                       Command("tiny", data_list[i][6]),
                                       color="sgc2!20")
                else:
                    data_table.add_row(Command("tiny", data_list[i][0]),
                                       Command("tiny", data_list[i][1]),
                                       Command("tiny", data_list[i][2]),
                                       Command("tiny", data_list[i][3]),
                                       Command("tiny", data_list[i][4]),
                                       Command("tiny", data_list[i][5]),
                                       Command("tiny", data_list[i][6]))
            doc.append(
                NoEscape(r"\caption{Eventos destacados durante %s de %s}" %
                         (month1, year1)))

    # =======================================================================
    #  mapa de sismicidad destacada
    # =======================================================================
    if sub_list[1][0] == "1":
        file_inspector(sub_list[1][1])
        doc.append(NoEscape(r"\begin{figure}"))
        doc.append(NoEscape(r"\begin{minipage}{\textwidth}"))
        doc.append(
            NoEscape(r"\section{Mapa de sismicidad destacada %s de %s}" %
                     (month1, year1)))
        #		doc.append(NoEscape(r"\vspace{-1.5cm}"))
        doc.append(NoEscape(r"\begin{center}"))
        doc.append(
            NoEscape(r"\includegraphics[scale=0.18]{%s}\\" % sub_list[1][1]))
        doc.append(
            NoEscape(r"\caption{\small{Eventos destacados durante %s de %s}}" %
                     (month1, year1)))
        doc.append(NoEscape(r"\end{center}"))
        #		doc.append(NoEscape(r"\vspace{-1.5cm}"))
        add_text(sub_list[1][2], doc)
        doc.append(NoEscape(r"\end{minipage}"))
        doc.append(NoEscape(r"\end{figure}"))

    # =======================================================================
    #  tabla de sismicidad mensual
    # =======================================================================
    if sub_list[2][0] == "1":

        doc.append(NoEscape(r"\newpage"))
        doc.append(
            NoEscape(r"\section{Tabla de sismicidad mensual %s de %s}" %
                     (month1, year1)))
        doc.append(NoEscape(r"\vspace{0.8cm}"))
        data_list = sc_table("sc_mensual.out")
        with doc.create(
                LongTabu(
                    "X[1.3,c] X[1.2,c] X[c] X[1.1,c] X[0.4,c] X[0.4,c] X[4,l]",
                    row_height=1)) as data_table:
            data_table.add_row(
                NoEscape(r"\scriptsize\sffamily\bfseries FECHA"),
                NoEscape(r"\scriptsize\sffamily\bfseries H:M:S"),
                NoEscape(r"\scriptsize\sffamily\bfseries LAT"),
                NoEscape(r"\scriptsize\sffamily\bfseries LON"),
                NoEscape(r"\scriptsize\sffamily\bfseries Z"),
                NoEscape(r"\scriptsize\sffamily\bfseries M"),
                NoEscape(r"\scriptsize\sffamily\bfseries UBICACION"),
                color="sgc2")
            #data_table.add_empty_row()
            data_table.end_table_header()

            # para cada elemento en la lista list_to_table (lista con info de destacados)
            for i in range(len(data_list)):
                if (i % 2) == 0:
                    data_table.add_row(Command("tiny", data_list[i][0]),
                                       Command("tiny", data_list[i][1]),
                                       Command("tiny", data_list[i][2]),
                                       Command("tiny", data_list[i][3]),
                                       Command("tiny", data_list[i][4]),
                                       Command("tiny", data_list[i][5]),
                                       Command("tiny", data_list[i][6]),
                                       color="sgc2!20")
                else:
                    data_table.add_row(Command("tiny", data_list[i][0]),
                                       Command("tiny", data_list[i][1]),
                                       Command("tiny", data_list[i][2]),
                                       Command("tiny", data_list[i][3]),
                                       Command("tiny", data_list[i][4]),
                                       Command("tiny", data_list[i][5]),
                                       Command("tiny", data_list[i][6]),
                                       color="white")
            doc.append(
                NoEscape(r"\caption{Eventos durante %s de %s}" %
                         (month1, year1)))

    # =======================================================================
    #  mapa de sismicidad mensual
    # =======================================================================
    if sub_list[3][0] == "1":
        print sub_list[3][1]
        print sub_list[3][2]
        file_inspector(sub_list[3][1])
        doc.append(NoEscape(r"\begin{figure}"))
        doc.append(NoEscape(r"\begin{minipage}{\textwidth}"))
        doc.append(
            NoEscape(r"\section{Mapa de sismicidad mensual %s de %s}" %
                     (month1, year1)))
        doc.append(NoEscape(r"\begin{center}"))
        #		doc.append(NoEscape(r"\vspace{-1.5cm}"))
        doc.append(
            NoEscape(r"\includegraphics[scale=0.18]{%s}" % sub_list[3][1]))
        doc.append(
            NoEscape(r"\caption{\small{Eventos durante %s de %s}}" %
                     (month1, year1)))
        doc.append(NoEscape(r"\end{center}"))
        #		doc.append(NoEscape(r"\vspace{-1.5cm}"))
        add_text(sub_list[3][2], doc)
        doc.append(NoEscape(r"\end{minipage}"))
        doc.append(NoEscape(r"\end{figure}"))
Exemple #9
0
    with page.create(TextBlock(100, 0, 0)):
        page.append("**** Ten Thousand Dollars")

    with page.create(TextBlock(100, 0, 30)):
        page.append("COMPANY NAME")
        page.append("\nSTREET, ADDRESS")
        page.append("\nCITY, POSTAL CODE")

    with page.create(TextBlock(100, 150, 40)):
        page.append(HugeText(bold("VOID")))

    with page.create(TextBlock(80, 150, 0)):
        page.append("DATE")
        page.append(MediumText(bold("2016 06 07\n")))
        page.append(HorizontalSpace("10mm"))
        page.append(SmallText("Y/A M/M D/J"))

    with page.create(TextBlock(70, 150, 30)):
        page.append(MediumText(bold("$***** 10,000.00")))

    page.append(VerticalSpace("100mm"))

doc.generate_pdf("textblock", clean_tex=False)
"""
Asked for 1 installation when I ran the code
"""
"""
rishikesh agrawani@DESKTOP-8AATOO4 MINGW64 /d/projects/Python/PyLaTex (master)
$ cd 17_textblock_example/

rishikesh agrawani@DESKTOP-8AATOO4 MINGW64 /d/projects/Python/PyLaTex/17_textblock_example (master)
Exemple #10
0
    def portada(Diccionario, eficiencia,T_Hornilla):
        global doc
        doc = Document()
        geometry_options = {"tmargin": "4cm", "rmargin": "2cm", "lmargin": "4cm", "bmargin": "3cm"} 
        doc = Document(geometry_options=geometry_options)
        doc.packages.append(Package('babel', options=['spanish']))
        doc.packages.append(Package('background', options=['pages=all']))
        doc.packages.append(NoEscape('\\backgroundsetup{placement=center,\n angle=0, scale=1, contents={\includegraphics{Membrete.pdf}}, opacity=1}\n'))   
        
        with doc.create(Center()) as centered:
                    centered.append(TextColor('white','HH')) 
                    for i in range(10):
                        centered.append(LineBreak())   
                    centered.append(HugeText('PROPUESTA DE VALOR PARA LA CONSTRUCCIÓN DE UNA HORNILLA '))
                    centered.append(LineBreak()) 
                    centered.append(SmallText('(Generado por HornillAPP)'))
                    for i in range(8):
                        centered.append(LineBreak()) 
                    
        with doc.create(Figure(position='h!')) as imagesRow1:
            with doc.create(SubFigure(
                    position='b',
                    width=NoEscape(r'1\linewidth'))) as left_imagesRow1:
                left_imagesRow1.add_image('IconoAPP.png')
            imagesRow1.append(LineBreak())
                                    
        with doc.create(Center()) as centered:
                    centered.append(TextColor('white','HH')) 
                    for i in range(8):
                        centered.append(LineBreak())
                    #centered.append(VerticalSpace('50')) 
                    centered.append(LargeText('Presentado por: AGROSAVIA'))
                    centered.append(LineBreak())
                    centered.append(SmallText('(Corporación Colombiana de Investigación Agropecuaria)'))
        doc.append(NewPage())
        
        with doc.create(MediumText(' ')) as tlg:
                    tlg.append(TextColor('white','HH')) 
                    tlg.append(LineBreak())
                    tlg.append('Bogotá D.C., ')
                    tlg.append(Command(' ',NoEscape('\\today')))
                    tlg.append('\n \n') #Salto de línea en parráfo
                    tlg.append(LineBreak()) #Salto de línea en parráfo
                    tlg.append('\nSeñor (es):') 
                    tlg.append('\n'+str(Diccionario['Nombre de usuario']))
                    if(str(Diccionario['Departamento'])=='--'):
                        tlg.append('\n'+str(Diccionario['Pais'])+'.')    
                    else:
                        tlg.append('\n'+str(Diccionario['Ciudad'])+', '+str(Diccionario['Departamento'])+'.')
                    tlg.append('\n \n') #Salto de línea en parráfo
                    tlg.append('\nApreciado(s) productor(es):')
                    tlg.append('\n \n') #Salto de línea en parráfo
                    Parrafo= ('Con base en la información suministrada, está aplicación propone (ver Sección 1) la construcción de una hornilla '+
                              T_Hornilla+' con capacidad de '+ str(Diccionario['Capacidad estimada de la hornilla']) +' kg/h'+' (la eficiencia estimada de la hornilla es del '+ str(round(Diccionario['Eficiencia de la hornilla']))+'%) '+'; adecuada para el procesamiento de hasta '+
                              str(Diccionario['Área cosechada al mes'])+
                              ' ha'+' de caña, con una producción de panela '+ str(round(float(Diccionario['Producción de panela por molienda [t]'])))+
                              ' t por molienda y un periodo vegetativo de '+ str(Diccionario['Periodo vegetativo'])+' meses. Teniendo en cuenta que'+
                              ' se realizan '+str(Diccionario['Número de moliendas al año'])+' moliendas al año se estableció una jornada laboral de '+
                              str(Diccionario['Días de trabajo de la hornilla por semana'])+ ' días a la semana de '+str(Diccionario['Horas de trabajo de la hornilla por día'])+ ' horas laborables cada una.'+
                              '\n Además, la aplicación estima que para garantizar una operación apropiada de la hornilla '+
                              ' se requiere de un área disponible de al menos '+str(round(Diccionario['Capacidad estimada de la hornilla']*4.3))+' m²'
                              )
                    tlg.append(Parrafo)                
                    Parrafo= (', cuya productividad puede aumentar al incorporar el sistema de recuperación de calor (hasta '+str(round(Diccionario['Capacidad estimada de la hornilla']+25))+' kg/h) como se muestra en las tablas del análisis financiero y al final del informe.'
                              +' No obstante, la corporación ofrece los siguientes servicios de asistencia técnica para ajustar los valores provistos en esta propuesta de valor:'
                              )
                    tlg.append(Parrafo)
                    
                    with tlg.create(Itemize()) as itemize:
                        itemize.add_item('Estudio detallado para la construcción e instalación de la hornilla.')
                        itemize.add_item('Al menos tres visitas técnicas de dos funcionarios de AGROSAVIA para la puesta en marcha y '+
                                         'capacitación de los operarios en el manejo de la hornilla y en la producción de panela '+
                                         'saborizada, granulada o moldeada en presentación pastilla de chocolate.')
                        itemize.add_item('Entrega de un ejemplar de la guía tecnológica para el manejo integral del sistema '+
                                         'productivo de la caña panelera y una para el mantenimiento de la hornilla.')

                    Parrafo= ('Cualquier inquietud AGROSAVIA está presta a atenderla.\n'+
                              'Cordial saludo.\n'+
                              '\n \n \n'+
                              'AGROSAVIA (Corporación colombiana de investigación agropecuaria)')            
                    tlg.append(Parrafo)            

                    Parrafo= ('\n \n Nota: Está propuesta de valor se basa en condiciones del terreno ideales y estacionarias, por lo que, '+
                              'AGROSAVIA no se hace responsable de la reproducción total o parcial del material aquí suministrado sin una aprobación '+
                              'corporativa.')
                    tlg.append(Parrafo)
                    
        doc.append(NewPage())
        
        with doc.create(MediumText(' ')) as tlg:
                    tlg.append(LargeText(bold('Contenido')))
                    with tlg.create(Itemize()) as itemize:
                                            itemize.add_item('Sección 1')
                                            with itemize.create(Itemize()) as item:
                                                        item.add_item('Información del usuario.')
                                                        item.add_item('Características de la caña sembrada.')
                                                        item.add_item('Características del molino.')
                                                        item.add_item('Consideraciones generales para el manejo de la hornilla.')
                                                        item.add_item('Análisis financiero.')
                                            itemize.add_item('Sección 2')
                                            with itemize.create(Itemize()) as item:
                                                        item.add_item('Diagramas mecánicos de la hornilla.')
                                                        item.add_item('Diagramas mecánicos de la camára.')
                                                        item.add_item('Diagramas mecánicos de la chimenea.')
                                                        item.add_item('Diagramas mecánicos del ducto.')
                                                        item.add_item('Diagramas mecánicos de la hornilla con recuperador de calor.')
        doc.append(NewPage())

        #PORTADA PARA LA SECCIÓN 1 
        
        with doc.create(Center()) as centered:
                    centered.append(TextColor('white','HH')) 
                    for i in range(15):
                        centered.append(LineBreak())   
                    centered.append(HugeText('SECCIÓN 1:'))
                    centered.append(LineBreak())
                    centered.append(HugeText('INFORMACIÓN TÉCNICA Y FINANCIERA')) 
        doc.append(NewPage())