fmard/pdf-api
0
1<!DOCTYPE html>2<html lang="en">3<head>4 <meta charset="UTF-8">5 <title>Transcript - {{ student_name | default('Student') }}</title>6 <style>7 * { margin: 0; padding: 0; box-sizing: border-box; }8 body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; padding: 40px; font-size: 14px; line-height: 1.6; color: #1f2937; }9 .header { text-align: center; border-bottom: 3px solid #4f46e5; padding-bottom: 15px; margin-bottom: 20px; }10 .header .inst { font-size: 18px; font-weight: 700; color: #374151; }11 .header .addr { font-size: 12px; color: #6b7280; }12 .header h1 { font-size: 20px; color: #4f46e5; margin-top: 8px; text-transform: uppercase; letter-spacing: 1px; }13 .meta { display: grid; grid-template-columns: 1fr 1fr; gap: 5px 30px; margin-bottom: 20px; font-size: 13px; }14 .meta-item span:first-child { font-weight: 600; color: #4f46e5; display: inline-block; min-width: 130px; }15 .transcript-number { text-align: right; font-size: 12px; color: #6b7280; margin-bottom: 15px; }16 .semester-section { margin-bottom: 15px; }17 .semester-title { font-size: 13px; font-weight: 700; color: #4f46e5; background: #f9fafb; padding: 5px 10px; border-left: 3px solid #4f46e5; margin-bottom: 5px; }18 table { width: 100%; border-collapse: collapse; font-size: 12px; margin-bottom: 5px; }19 th, td { border: 1px solid #d1d5db; padding: 5px 8px; }20 th { background: #4f46e5; color: white; font-weight: 600; text-align: center; }21 td { text-align: center; }22 td:nth-child(2) { text-align: left; }23 tr:nth-child(even) { background: #f9fafb; }24 .summary { display: flex; justify-content: flex-end; gap: 30px; margin-top: 20px; padding: 10px 15px; background: #f9fafb; border-radius: 6px; }25 .summary-item { text-align: center; }26 .summary-value { font-size: 18px; font-weight: 700; color: #4f46e5; }27 .summary-label { font-size: 11px; color: #6b7280; }28 .signatures { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; margin-top: 40px; text-align: center; }29 .sig-line { border-top: 1px solid #374151; margin-top: 50px; padding-top: 5px; font-weight: 600; font-size: 13px; }30 .sig-role { font-size: 12px; color: #6b7280; }31 </style>32</head>33<body>34 <div class="header">35 <div class="inst">{{ institution_name | default('University Name') }}</div>36 <div class="addr">{{ institution_address | default('University Address') }}</div>37 <h1>Academic Transcript</h1>38 </div>39 40 {% if transcript_number %}41 <div class="transcript-number">No: {{ transcript_number }}</div>42 {% endif %}43 44 <div class="meta">45 <div class="meta-item"><span>Student Name:</span> {{ student_name | default('Student Name') }}</div>46 <div class="meta-item"><span>Student ID:</span> {{ student_id | default('00000000') }}</div>47 <div class="meta-item"><span>Program:</span> {{ program | default('Computer Science') }}</div>48 <div class="meta-item"><span>Faculty:</span> {{ faculty | default('Engineering') }}</div>49 <div class="meta-item"><span>Enrollment Date:</span> {{ enrollment_date | default('2020-09-01') }}</div>50 <div class="meta-item"><span>Graduation Date:</span> {{ graduation_date | default('2024-07-15') }}</div>51 </div>52 53 {% for sem in semesters | default([{'semester': '1', 'year': '2020/2021', 'courses': [{'code': 'CS101', 'name': 'Intro to CS', 'credits': 3, 'grade': 'A', 'points': 4.0}]}]) %}54 <div class="semester-section">55 <div class="semester-title">Semester {{ sem.semester }} — {{ sem.year }}</div>56 <table>57 <thead><tr><th>Code</th><th>Course Name</th><th>Credits</th><th>Grade</th><th>Points</th></tr></thead>58 <tbody>59 {% for c in sem.courses %}60 <tr><td>{{ c.code }}</td><td>{{ c.name }}</td><td>{{ c.credits }}</td><td>{{ c.grade }}</td><td>{{ c.points }}</td></tr>61 {% endfor %}62 </tbody>63 </table>64 </div>65 {% endfor %}66 67 <div class="summary">68 <div class="summary-item"><div class="summary-value">{{ total_credits | default('144') }}</div><div class="summary-label">Total Credits</div></div>69 <div class="summary-item"><div class="summary-value">{{ gpa | default('3.75') }}</div><div class="summary-label">GPA</div></div>70 </div>71 72 <div class="signatures">73 <div><div class="sig-role">Dean</div><div class="sig-line">{{ dean_name | default('Dean Name') }}</div></div>74 <div><div class="sig-role">Registrar</div><div class="sig-line">{{ registrar_name | default('Registrar Name') }}</div></div>75 </div>76 77 {% if date_issued %}78 <p style="text-align: center; margin-top: 20px; font-size: 12px; color: #6b7280;">Issued on: {{ date_issued }}</p>79 {% endif %}80</body>81</html>82 