package main import ( "bytes" "html/template" "log" "os" ) const invoiceTemplate = "assets/html/invoice.html" func main() { // Define the invoice data structure type Invoice struct { Host struct { Name string Address string ZipCode string City string Phone string Email string } Name string PhoneNumber string CustomersNumber int Platform string ID string From string To string Total string AmountPaid string BalanceDue string Lines []struct { Name string Quantity int Price string Total string } Payments []struct { Date string Method string Amount string } } // Read the template file tmpl, err := template.ParseFiles(invoiceTemplate) if err != nil { log.Fatalf("Error parsing template: %v", err) } // Create sample invoice data invoice := Invoice{ Host: struct { Name string Address string ZipCode string City string Phone string Email string }{ Name: "VillaFleurie", Address: "4 rue Gerty Archimede", ZipCode: "97190", City: "Le Gosier", Phone: "+590 690 44 15 30", Email: "location.villafleurie@gmail.com", }, Name: "Michel Le Corre", //PhoneNumber: "+590 690 44 15 30", CustomersNumber: 2, Platform: "Privée", ID: "VFNI0332", From: "15 Janvier 2025", To: "15 Mars 2025", Total: "2065.00 €", AmountPaid: "1565.00 €", BalanceDue: "500.00 €", Lines: []struct { Name string Quantity int Price string Total string }{ { Name: "T2", Quantity: 59, Price: "35.00", Total: "2065.00", }, }, Payments: []struct { Date string Method string Amount string }{ { "–", "Espèces", "500.00", }, { "–", "Chèque", "1065.00", }, }, } // Create a buffer to store the rendered HTML var buf bytes.Buffer // Execute the template with the invoice data if err := tmpl.Execute(&buf, invoice); err != nil { log.Fatalf("Error executing template: %v", err) } // Write the rendered HTML to a file outputPath := "output.html" if err := os.WriteFile(outputPath, buf.Bytes(), 0644); err != nil { log.Fatalf("Error writing HTML file: %v", err) } log.Printf("HTML file created successfully: %s", outputPath) }