Search code examples
pythonreportlab

How to save these files as a single document/File


Is it possible to have these many files saved into one document, page by page

import csv
import pandas as pd
from reportlab.pdfgen import canvas

dfa = pd.DataFrame({'STREAM':['EAGLE','HAWK','HAWK','HAWK','EAGLE','HAWK','EAGLE'],'MAT':['A','D','F','D','C','C','E'],'KIS':['B','D','E','D','A','C','D'],'GEO':['B','C','E','E','F','A','B']})

dfa.to_csv('results.csv',index=False)

students_data = csv.reader(open("results.csv", 'r'))

for row in students_data:
    STREAM = row[0]
    MAT = row[1]
    GEO = row[2]
    KIS = row[3]

    c = canvas.Canvas(MAT +".pdf")
    c.drawString(60, 700, "STREAM:  " + STREAM)
    c.drawString(60, 600, "MAT:  " + MAT)
    c.drawString(60, 500, "KIS:  " + KIS)
    c.drawString(60, 400, "GEO:  " + GEO)
    c.save()

What this code does is save each file separately which is a bit heavy to deal with. Anyone with an idea to help


Solution

  • You can handle it like this:

    import csv
    import pandas as pd
    from reportlab.pdfgen import canvas
    
    dfa = pd.DataFrame({'STREAM':['EAGLE','HAWK','HAWK','HAWK','EAGLE','HAWK','EAGLE'],'MAT':['A','D','F','D','C','C','E'],'KIS':['B','D','E','D','A','C','D'],'GEO':['B','C','E','E','F','A','B']})
    
    dfa.to_csv('results.csv',index=False)
    
    students_data = csv.reader(open("results.csv", 'r'))
    
    c = canvas.Canvas("combined.pdf")
    for row in students_data:
        STREAM = row[0]
        MAT = row[1]
        GEO = row[2]
        KIS = row[3]
    
        c.drawString(60, 700, "STREAM:  " + STREAM)
        c.drawString(60, 600, "MAT:  " + MAT)
        c.drawString(60, 500, "KIS:  " + KIS)
        c.drawString(60, 400, "GEO:  " + GEO)
        c.showPage()
    
    c.save()