Пример #1
0
def listado(titulo, lista, tamanos, hoja):
    ubicacion_archivo = dialogo_guardar()

    if ubicacion_archivo is not None:
        # Si no tiene la terminación .pdf se le agrega
        if ubicacion_archivo[-4:].lower() != ".pdf":
            ubicacion_archivo += ".pdf"

        story = []
        cabecera = getSampleStyleSheet()['Heading1']
        cabecera.pageBreakBefore = 0
        cabecera.keepWithNext = 0

        parrafo = Paragraph("Registros de " + titulo, cabecera)
        story.append(parrafo)
        story.append(Spacer(0, 20))

        tabla = Table(lista, tamanos)
        tabla = tabla_style(tabla)

        if tabla.minWidth() <= (hoja[0] - 5 * cm):  # hoja (A4)
            story.append(tabla)
        else:
            story.append(tabla)
            print("Tabla de Tamanho mayor a permitido")

        '''
            for x in tamanos:
                pos = x
                newTable = [y[0:x] for y in tabla]

                tb = Table(newTable)
                tb.setStyle(tabla.getStyle())

                if tb.minWidth() <= (hoja[0] - 5*cm):
                    story.append(tb)
                    break
        '''

        doc = SimpleDocTemplate(
            ubicacion_archivo,
            #os.path.join(os.path.expanduser("~"), "Desktop", "listado.pdf"),
            pagesize=hoja,  # Tamaño de Página (landscape(A4) hoja horizontal)
            allowSplitting=1,
            title="Registros de " + titulo,
            author="Sistema Distribuidora"
        )

        try:  # Generar archiv
            doc.build(story)
            popen(ubicacion_archivo)
        except PermissionError as e:
            error_generico("Error de Permiso", "Puede ser que el nombre " +
                "elegido para el archivo a generar\nsea igual a uno que " +
                "en este momento se esté utilizando\n\n" + str(e))