def footer(self): self.set_y(-15) self.set_font("Arial", "I", 8) self.cell(0, 10, f"Page {self.page_no()}", 0, 0, "C")
unit = { "model": "GAMI-PAC-24", "capacity_btu": 24000, "cooling_kw": 7.0, "heating_type": "Electric / Heat Pump", "efficiency_seer": 16.5, "voltage": "208-230/1/60", "weight_lbs": 185, "dimensions_in": "32x24x38", "image_path": "images/gami_pac_24.jpg", "features": ["Low noise", "R-410A", "Thermostat included"] } Create catalogue_generator.py : gami package unit catalogue pdf
def generate_catalogue(self, units, output_file="gami_catalogue.pdf"): self.add_cover() for unit in units: self.add_product_page(unit) self.output(output_file) print(f"Catalogue saved as {output_file}") def load_units_from_json(json_file): with open(json_file, "r") as f: data = json.load(f) return data["units"] def footer(self): self
def add_cover(self): self.add_page() self.set_font("Arial", "B", 24) self.cell(0, 60, "", 0, 1) self.cell(0, 20, "GAMI", 0, 1, "C") self.set_font("Arial", "B", 18) self.cell(0, 15, "Package Unit Catalogue", 0, 1, "C") self.set_font("Arial", "", 12) self.cell(0, 10, "Commercial & Residential HVAC Solutions", 0, 1, "C") self.ln(20) self.set_font("Arial", "I", 10) self.cell(0, 10, f"Valid from {self.get_current_date()}", 0, 1, "C") def footer(self): self.set_y(-15) self.set_font("Arial"
# Add product image if exists if os.path.exists(unit["image_path"]): try: # Auto-fit image to max width 80, max height 60 self.image(unit["image_path"], x=130, y=30, w=60) except: pass