Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
Update backend/utils/pdf_generator.py
Browse files
backend/utils/pdf_generator.py
CHANGED
|
@@ -1110,21 +1110,56 @@ def generate_scan_pdf(scan, vulnerabilities):
|
|
| 1110 |
from datetime import datetime
|
| 1111 |
|
| 1112 |
# --- Header ---
|
|
|
|
| 1113 |
if has_local_logo:
|
| 1114 |
try:
|
| 1115 |
-
|
| 1116 |
-
|
| 1117 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1118 |
|
| 1119 |
-
|
| 1120 |
-
canvas_obj.
|
|
|
|
|
|
|
| 1121 |
|
|
|
|
| 1122 |
hdr_logo_stream = get_org_logo_stream()
|
| 1123 |
if hdr_logo_stream:
|
| 1124 |
try:
|
| 1125 |
-
|
| 1126 |
-
|
| 1127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1128 |
|
| 1129 |
# --- Footer ---
|
| 1130 |
canvas_obj.setFont('Helvetica', 9)
|
|
|
|
| 1110 |
from datetime import datetime
|
| 1111 |
|
| 1112 |
# --- Header ---
|
| 1113 |
+
# 1. Left Logo (LarShield Brand)
|
| 1114 |
if has_local_logo:
|
| 1115 |
try:
|
| 1116 |
+
img_reader_l = ImageReader(logo_path)
|
| 1117 |
+
lw, lh = img_reader_l.getSize()
|
| 1118 |
+
l_aspect = lw / float(lh) if lh > 0 else 1.0
|
| 1119 |
+
l_target_h = 32
|
| 1120 |
+
l_target_w = min(110, l_target_h * l_aspect)
|
| 1121 |
+
l_target_h = l_target_w / l_aspect
|
| 1122 |
+
canvas_obj.drawImage(
|
| 1123 |
+
img_reader_l,
|
| 1124 |
+
40,
|
| 1125 |
+
letter[1] - 16 - l_target_h,
|
| 1126 |
+
width=l_target_w,
|
| 1127 |
+
height=l_target_h,
|
| 1128 |
+
mask='auto'
|
| 1129 |
+
)
|
| 1130 |
+
except Exception as e:
|
| 1131 |
+
print(f"[PDF Header] Left logo error: {e}")
|
| 1132 |
|
| 1133 |
+
# 2. Center Header Text
|
| 1134 |
+
canvas_obj.setFont('Helvetica-Bold', 11)
|
| 1135 |
+
canvas_obj.setFillColor(colors.HexColor("#0F172A"))
|
| 1136 |
+
canvas_obj.drawCentredString(letter[0] / 2.0, letter[1] - 34, "Web Application VAPT Report")
|
| 1137 |
|
| 1138 |
+
# 3. Right Logo (Client Organization)
|
| 1139 |
hdr_logo_stream = get_org_logo_stream()
|
| 1140 |
if hdr_logo_stream:
|
| 1141 |
try:
|
| 1142 |
+
img_reader_r = ImageReader(hdr_logo_stream)
|
| 1143 |
+
rw, rh = img_reader_r.getSize()
|
| 1144 |
+
r_aspect = rw / float(rh) if rh > 0 else 1.0
|
| 1145 |
+
r_target_h = 32
|
| 1146 |
+
r_target_w = min(120, r_target_h * r_aspect)
|
| 1147 |
+
r_target_h = r_target_w / r_aspect
|
| 1148 |
+
canvas_obj.drawImage(
|
| 1149 |
+
img_reader_r,
|
| 1150 |
+
letter[0] - 40 - r_target_w,
|
| 1151 |
+
letter[1] - 16 - r_target_h,
|
| 1152 |
+
width=r_target_w,
|
| 1153 |
+
height=r_target_h,
|
| 1154 |
+
mask='auto'
|
| 1155 |
+
)
|
| 1156 |
+
except Exception as e:
|
| 1157 |
+
print(f"[PDF Header] Right logo error: {e}")
|
| 1158 |
+
|
| 1159 |
+
# 4. Clean Header Horizontal Line
|
| 1160 |
+
canvas_obj.setStrokeColor(colors.HexColor("#CBD5E1"))
|
| 1161 |
+
canvas_obj.setLineWidth(0.75)
|
| 1162 |
+
canvas_obj.line(40, letter[1] - 52, letter[0] - 40, letter[1] - 52)
|
| 1163 |
|
| 1164 |
# --- Footer ---
|
| 1165 |
canvas_obj.setFont('Helvetica', 9)
|